6924 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_v4p0__u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v2p0_v4p0__u_u:9; GFX9: ; %bb.0:10; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT: s_setpc_b64 s[30:31]12 %vec0 = call <4 x ptr> asm "; def $0", "=v"()13 %shuf = shufflevector <4 x ptr> %vec0, <4 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_v4p0__0_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_u:20; GFX900: ; %bb.0:21; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT: v_mov_b32_e32 v8, 023; GFX900-NEXT: ;;#ASMSTART24; GFX900-NEXT: ; def v[0:7]25; GFX900-NEXT: ;;#ASMEND26; GFX900-NEXT: global_store_dwordx4 v8, 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_v4p0__0_u:31; GFX90A: ; %bb.0:32; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT: v_mov_b32_e32 v8, 034; GFX90A-NEXT: ;;#ASMSTART35; GFX90A-NEXT: ; def v[0:7]36; GFX90A-NEXT: ;;#ASMEND37; GFX90A-NEXT: global_store_dwordx4 v8, 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_v4p0__0_u:42; GFX942: ; %bb.0:43; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT: v_mov_b32_e32 v8, 045; GFX942-NEXT: ;;#ASMSTART46; GFX942-NEXT: ; def v[0:7]47; GFX942-NEXT: ;;#ASMEND48; GFX942-NEXT: global_store_dwordx4 v8, 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 <4 x ptr> asm "; def $0", "=v"()52 %shuf = shufflevector <4 x ptr> %vec0, <4 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_v4p0__1_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_u:59; GFX900: ; %bb.0:60; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT: v_mov_b32_e32 v8, 062; GFX900-NEXT: ;;#ASMSTART63; GFX900-NEXT: ; def v[0:7]64; GFX900-NEXT: ;;#ASMEND65; GFX900-NEXT: global_store_dwordx4 v8, 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_v4p0__1_u:70; GFX90A: ; %bb.0:71; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT: v_mov_b32_e32 v8, 073; GFX90A-NEXT: ;;#ASMSTART74; GFX90A-NEXT: ; def v[0:7]75; GFX90A-NEXT: ;;#ASMEND76; GFX90A-NEXT: global_store_dwordx4 v8, 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_v4p0__1_u:81; GFX942: ; %bb.0:82; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)83; GFX942-NEXT: v_mov_b32_e32 v8, 084; GFX942-NEXT: ;;#ASMSTART85; GFX942-NEXT: ; def v[0:7]86; GFX942-NEXT: ;;#ASMEND87; GFX942-NEXT: global_store_dwordx4 v8, 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 <4 x ptr> asm "; def $0", "=v"()91 %shuf = shufflevector <4 x ptr> %vec0, <4 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_v4p0__2_u(ptr addrspace(1) inreg %ptr) {97; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_u:98; GFX900: ; %bb.0:99; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)100; GFX900-NEXT: v_mov_b32_e32 v8, 0101; GFX900-NEXT: ;;#ASMSTART102; GFX900-NEXT: ; def v[0:7]103; GFX900-NEXT: ;;#ASMEND104; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]105; GFX900-NEXT: s_waitcnt vmcnt(0)106; GFX900-NEXT: s_setpc_b64 s[30:31]107;108; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_u:109; GFX90A: ; %bb.0:110; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)111; GFX90A-NEXT: v_mov_b32_e32 v8, 0112; GFX90A-NEXT: ;;#ASMSTART113; GFX90A-NEXT: ; def v[0:7]114; GFX90A-NEXT: ;;#ASMEND115; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]116; GFX90A-NEXT: s_waitcnt vmcnt(0)117; GFX90A-NEXT: s_setpc_b64 s[30:31]118;119; GFX942-LABEL: v_shuffle_v2p0_v4p0__2_u:120; GFX942: ; %bb.0:121; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)122; GFX942-NEXT: v_mov_b32_e32 v8, 0123; GFX942-NEXT: ;;#ASMSTART124; GFX942-NEXT: ; def v[0:7]125; GFX942-NEXT: ;;#ASMEND126; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]127; GFX942-NEXT: s_waitcnt vmcnt(0)128; GFX942-NEXT: s_setpc_b64 s[30:31]129 %vec0 = call <4 x ptr> asm "; def $0", "=v"()130 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 poison>131 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16132 ret void133}134 135define void @v_shuffle_v2p0_v4p0__3_u(ptr addrspace(1) inreg %ptr) {136; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_u:137; GFX900: ; %bb.0:138; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)139; GFX900-NEXT: v_mov_b32_e32 v8, 0140; GFX900-NEXT: ;;#ASMSTART141; GFX900-NEXT: ; def v[0:7]142; GFX900-NEXT: ;;#ASMEND143; GFX900-NEXT: global_store_dwordx4 v8, v[6:9], s[16:17]144; GFX900-NEXT: s_waitcnt vmcnt(0)145; GFX900-NEXT: s_setpc_b64 s[30:31]146;147; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_u:148; GFX90A: ; %bb.0:149; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)150; GFX90A-NEXT: v_mov_b32_e32 v8, 0151; GFX90A-NEXT: ;;#ASMSTART152; GFX90A-NEXT: ; def v[0:7]153; GFX90A-NEXT: ;;#ASMEND154; GFX90A-NEXT: global_store_dwordx4 v8, v[6:9], s[16:17]155; GFX90A-NEXT: s_waitcnt vmcnt(0)156; GFX90A-NEXT: s_setpc_b64 s[30:31]157;158; GFX942-LABEL: v_shuffle_v2p0_v4p0__3_u:159; GFX942: ; %bb.0:160; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)161; GFX942-NEXT: v_mov_b32_e32 v8, 0162; GFX942-NEXT: ;;#ASMSTART163; GFX942-NEXT: ; def v[0:7]164; GFX942-NEXT: ;;#ASMEND165; GFX942-NEXT: global_store_dwordx4 v8, v[6:9], s[0:1]166; GFX942-NEXT: s_waitcnt vmcnt(0)167; GFX942-NEXT: s_setpc_b64 s[30:31]168 %vec0 = call <4 x ptr> asm "; def $0", "=v"()169 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 poison>170 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16171 ret void172}173 174define void @v_shuffle_v2p0_v4p0__4_u(ptr addrspace(1) inreg %ptr) {175; GFX9-LABEL: v_shuffle_v2p0_v4p0__4_u:176; GFX9: ; %bb.0:177; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)178; GFX9-NEXT: s_setpc_b64 s[30:31]179 %vec0 = call <4 x ptr> asm "; def $0", "=v"()180 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 poison>181 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16182 ret void183}184 185define void @v_shuffle_v2p0_v4p0__5_u(ptr addrspace(1) inreg %ptr) {186; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_u:187; GFX900: ; %bb.0:188; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)189; GFX900-NEXT: v_mov_b32_e32 v8, 0190; GFX900-NEXT: ;;#ASMSTART191; GFX900-NEXT: ; def v[0:7]192; GFX900-NEXT: ;;#ASMEND193; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]194; GFX900-NEXT: s_waitcnt vmcnt(0)195; GFX900-NEXT: s_setpc_b64 s[30:31]196;197; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_u:198; GFX90A: ; %bb.0:199; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)200; GFX90A-NEXT: v_mov_b32_e32 v8, 0201; GFX90A-NEXT: ;;#ASMSTART202; GFX90A-NEXT: ; def v[0:7]203; GFX90A-NEXT: ;;#ASMEND204; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]205; GFX90A-NEXT: s_waitcnt vmcnt(0)206; GFX90A-NEXT: s_setpc_b64 s[30:31]207;208; GFX942-LABEL: v_shuffle_v2p0_v4p0__5_u:209; GFX942: ; %bb.0:210; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)211; GFX942-NEXT: v_mov_b32_e32 v8, 0212; GFX942-NEXT: ;;#ASMSTART213; GFX942-NEXT: ; def v[0:7]214; GFX942-NEXT: ;;#ASMEND215; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]216; GFX942-NEXT: s_waitcnt vmcnt(0)217; GFX942-NEXT: s_setpc_b64 s[30:31]218 %vec0 = call <4 x ptr> asm "; def $0", "=v"()219 %vec1 = call <4 x ptr> asm "; def $0", "=v"()220 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>221 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16222 ret void223}224 225define void @v_shuffle_v2p0_v4p0__6_u(ptr addrspace(1) inreg %ptr) {226; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_u:227; GFX900: ; %bb.0:228; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)229; GFX900-NEXT: v_mov_b32_e32 v8, 0230; GFX900-NEXT: ;;#ASMSTART231; GFX900-NEXT: ; def v[0:7]232; GFX900-NEXT: ;;#ASMEND233; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]234; GFX900-NEXT: s_waitcnt vmcnt(0)235; GFX900-NEXT: s_setpc_b64 s[30:31]236;237; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_u:238; GFX90A: ; %bb.0:239; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)240; GFX90A-NEXT: v_mov_b32_e32 v8, 0241; GFX90A-NEXT: ;;#ASMSTART242; GFX90A-NEXT: ; def v[0:7]243; GFX90A-NEXT: ;;#ASMEND244; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]245; GFX90A-NEXT: s_waitcnt vmcnt(0)246; GFX90A-NEXT: s_setpc_b64 s[30:31]247;248; GFX942-LABEL: v_shuffle_v2p0_v4p0__6_u:249; GFX942: ; %bb.0:250; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)251; GFX942-NEXT: v_mov_b32_e32 v8, 0252; GFX942-NEXT: ;;#ASMSTART253; GFX942-NEXT: ; def v[0:7]254; GFX942-NEXT: ;;#ASMEND255; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]256; GFX942-NEXT: s_waitcnt vmcnt(0)257; GFX942-NEXT: s_setpc_b64 s[30:31]258 %vec0 = call <4 x ptr> asm "; def $0", "=v"()259 %vec1 = call <4 x ptr> asm "; def $0", "=v"()260 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 poison>261 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16262 ret void263}264 265define void @v_shuffle_v2p0_v4p0__7_u(ptr addrspace(1) inreg %ptr) {266; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_u:267; GFX900: ; %bb.0:268; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)269; GFX900-NEXT: v_mov_b32_e32 v8, 0270; GFX900-NEXT: ;;#ASMSTART271; GFX900-NEXT: ; def v[0:7]272; GFX900-NEXT: ;;#ASMEND273; GFX900-NEXT: global_store_dwordx4 v8, v[6:9], s[16:17]274; GFX900-NEXT: s_waitcnt vmcnt(0)275; GFX900-NEXT: s_setpc_b64 s[30:31]276;277; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_u:278; GFX90A: ; %bb.0:279; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)280; GFX90A-NEXT: v_mov_b32_e32 v8, 0281; GFX90A-NEXT: ;;#ASMSTART282; GFX90A-NEXT: ; def v[0:7]283; GFX90A-NEXT: ;;#ASMEND284; GFX90A-NEXT: global_store_dwordx4 v8, v[6:9], s[16:17]285; GFX90A-NEXT: s_waitcnt vmcnt(0)286; GFX90A-NEXT: s_setpc_b64 s[30:31]287;288; GFX942-LABEL: v_shuffle_v2p0_v4p0__7_u:289; GFX942: ; %bb.0:290; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)291; GFX942-NEXT: v_mov_b32_e32 v8, 0292; GFX942-NEXT: ;;#ASMSTART293; GFX942-NEXT: ; def v[0:7]294; GFX942-NEXT: ;;#ASMEND295; GFX942-NEXT: global_store_dwordx4 v8, v[6:9], s[0:1]296; GFX942-NEXT: s_waitcnt vmcnt(0)297; GFX942-NEXT: s_setpc_b64 s[30:31]298 %vec0 = call <4 x ptr> asm "; def $0", "=v"()299 %vec1 = call <4 x ptr> asm "; def $0", "=v"()300 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 poison>301 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16302 ret void303}304 305define void @v_shuffle_v2p0_v4p0__7_0(ptr addrspace(1) inreg %ptr) {306; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_0:307; GFX900: ; %bb.0:308; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)309; GFX900-NEXT: v_mov_b32_e32 v16, 0310; GFX900-NEXT: ;;#ASMSTART311; GFX900-NEXT: ; def v[8:15]312; GFX900-NEXT: ;;#ASMEND313; GFX900-NEXT: ;;#ASMSTART314; GFX900-NEXT: ; def v[0:7]315; GFX900-NEXT: ;;#ASMEND316; GFX900-NEXT: global_store_dwordx4 v16, v[6:9], s[16:17]317; GFX900-NEXT: s_waitcnt vmcnt(0)318; GFX900-NEXT: s_setpc_b64 s[30:31]319;320; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_0:321; GFX90A: ; %bb.0:322; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)323; GFX90A-NEXT: v_mov_b32_e32 v16, 0324; GFX90A-NEXT: ;;#ASMSTART325; GFX90A-NEXT: ; def v[8:15]326; GFX90A-NEXT: ;;#ASMEND327; GFX90A-NEXT: ;;#ASMSTART328; GFX90A-NEXT: ; def v[0:7]329; GFX90A-NEXT: ;;#ASMEND330; GFX90A-NEXT: global_store_dwordx4 v16, v[6:9], s[16:17]331; GFX90A-NEXT: s_waitcnt vmcnt(0)332; GFX90A-NEXT: s_setpc_b64 s[30:31]333;334; GFX942-LABEL: v_shuffle_v2p0_v4p0__7_0:335; GFX942: ; %bb.0:336; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)337; GFX942-NEXT: v_mov_b32_e32 v16, 0338; GFX942-NEXT: ;;#ASMSTART339; GFX942-NEXT: ; def v[8:15]340; GFX942-NEXT: ;;#ASMEND341; GFX942-NEXT: ;;#ASMSTART342; GFX942-NEXT: ; def v[0:7]343; GFX942-NEXT: ;;#ASMEND344; GFX942-NEXT: global_store_dwordx4 v16, v[6:9], s[0:1]345; GFX942-NEXT: s_waitcnt vmcnt(0)346; GFX942-NEXT: s_setpc_b64 s[30:31]347 %vec0 = call <4 x ptr> asm "; def $0", "=v"()348 %vec1 = call <4 x ptr> asm "; def $0", "=v"()349 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 0>350 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16351 ret void352}353 354define void @v_shuffle_v2p0_v4p0__7_1(ptr addrspace(1) inreg %ptr) {355; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_1:356; GFX900: ; %bb.0:357; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)358; GFX900-NEXT: v_mov_b32_e32 v14, 0359; GFX900-NEXT: ;;#ASMSTART360; GFX900-NEXT: ; def v[6:13]361; GFX900-NEXT: ;;#ASMEND362; GFX900-NEXT: ;;#ASMSTART363; GFX900-NEXT: ; def v[0:7]364; GFX900-NEXT: ;;#ASMEND365; GFX900-NEXT: global_store_dwordx4 v14, v[6:9], s[16:17]366; GFX900-NEXT: s_waitcnt vmcnt(0)367; GFX900-NEXT: s_setpc_b64 s[30:31]368;369; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_1:370; GFX90A: ; %bb.0:371; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)372; GFX90A-NEXT: v_mov_b32_e32 v14, 0373; GFX90A-NEXT: ;;#ASMSTART374; GFX90A-NEXT: ; def v[6:13]375; GFX90A-NEXT: ;;#ASMEND376; GFX90A-NEXT: ;;#ASMSTART377; GFX90A-NEXT: ; def v[0:7]378; GFX90A-NEXT: ;;#ASMEND379; GFX90A-NEXT: global_store_dwordx4 v14, v[6:9], s[16:17]380; GFX90A-NEXT: s_waitcnt vmcnt(0)381; GFX90A-NEXT: s_setpc_b64 s[30:31]382;383; GFX942-LABEL: v_shuffle_v2p0_v4p0__7_1:384; GFX942: ; %bb.0:385; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)386; GFX942-NEXT: v_mov_b32_e32 v14, 0387; GFX942-NEXT: ;;#ASMSTART388; GFX942-NEXT: ; def v[6:13]389; GFX942-NEXT: ;;#ASMEND390; GFX942-NEXT: s_nop 0391; GFX942-NEXT: ;;#ASMSTART392; GFX942-NEXT: ; def v[0:7]393; GFX942-NEXT: ;;#ASMEND394; GFX942-NEXT: global_store_dwordx4 v14, v[6:9], s[0:1]395; GFX942-NEXT: s_waitcnt vmcnt(0)396; GFX942-NEXT: s_setpc_b64 s[30:31]397 %vec0 = call <4 x ptr> asm "; def $0", "=v"()398 %vec1 = call <4 x ptr> asm "; def $0", "=v"()399 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 1>400 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16401 ret void402}403 404define void @v_shuffle_v2p0_v4p0__7_2(ptr addrspace(1) inreg %ptr) {405; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_2:406; GFX900: ; %bb.0:407; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)408; GFX900-NEXT: v_mov_b32_e32 v12, 0409; GFX900-NEXT: ;;#ASMSTART410; GFX900-NEXT: ; def v[4:11]411; GFX900-NEXT: ;;#ASMEND412; GFX900-NEXT: ;;#ASMSTART413; GFX900-NEXT: ; def v[0:7]414; GFX900-NEXT: ;;#ASMEND415; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17]416; GFX900-NEXT: s_waitcnt vmcnt(0)417; GFX900-NEXT: s_setpc_b64 s[30:31]418;419; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_2:420; GFX90A: ; %bb.0:421; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)422; GFX90A-NEXT: v_mov_b32_e32 v12, 0423; GFX90A-NEXT: ;;#ASMSTART424; GFX90A-NEXT: ; def v[4:11]425; GFX90A-NEXT: ;;#ASMEND426; GFX90A-NEXT: ;;#ASMSTART427; GFX90A-NEXT: ; def v[0:7]428; GFX90A-NEXT: ;;#ASMEND429; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17]430; GFX90A-NEXT: s_waitcnt vmcnt(0)431; GFX90A-NEXT: s_setpc_b64 s[30:31]432;433; GFX942-LABEL: v_shuffle_v2p0_v4p0__7_2:434; GFX942: ; %bb.0:435; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)436; GFX942-NEXT: v_mov_b32_e32 v12, 0437; GFX942-NEXT: ;;#ASMSTART438; GFX942-NEXT: ; def v[4:11]439; GFX942-NEXT: ;;#ASMEND440; GFX942-NEXT: s_nop 0441; GFX942-NEXT: ;;#ASMSTART442; GFX942-NEXT: ; def v[0:7]443; GFX942-NEXT: ;;#ASMEND444; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1]445; GFX942-NEXT: s_waitcnt vmcnt(0)446; GFX942-NEXT: s_setpc_b64 s[30:31]447 %vec0 = call <4 x ptr> asm "; def $0", "=v"()448 %vec1 = call <4 x ptr> asm "; def $0", "=v"()449 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 2>450 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16451 ret void452}453 454define void @v_shuffle_v2p0_v4p0__7_3(ptr addrspace(1) inreg %ptr) {455; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_3:456; GFX900: ; %bb.0:457; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)458; GFX900-NEXT: v_mov_b32_e32 v10, 0459; GFX900-NEXT: ;;#ASMSTART460; GFX900-NEXT: ; def v[2:9]461; GFX900-NEXT: ;;#ASMEND462; GFX900-NEXT: ;;#ASMSTART463; GFX900-NEXT: ; def v[0:7]464; GFX900-NEXT: ;;#ASMEND465; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]466; GFX900-NEXT: s_waitcnt vmcnt(0)467; GFX900-NEXT: s_setpc_b64 s[30:31]468;469; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_3:470; GFX90A: ; %bb.0:471; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)472; GFX90A-NEXT: v_mov_b32_e32 v10, 0473; GFX90A-NEXT: ;;#ASMSTART474; GFX90A-NEXT: ; def v[2:9]475; GFX90A-NEXT: ;;#ASMEND476; GFX90A-NEXT: ;;#ASMSTART477; GFX90A-NEXT: ; def v[0:7]478; GFX90A-NEXT: ;;#ASMEND479; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]480; GFX90A-NEXT: s_waitcnt vmcnt(0)481; GFX90A-NEXT: s_setpc_b64 s[30:31]482;483; GFX942-LABEL: v_shuffle_v2p0_v4p0__7_3:484; GFX942: ; %bb.0:485; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)486; GFX942-NEXT: v_mov_b32_e32 v10, 0487; GFX942-NEXT: ;;#ASMSTART488; GFX942-NEXT: ; def v[2:9]489; GFX942-NEXT: ;;#ASMEND490; GFX942-NEXT: s_nop 0491; GFX942-NEXT: ;;#ASMSTART492; GFX942-NEXT: ; def v[0:7]493; GFX942-NEXT: ;;#ASMEND494; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]495; GFX942-NEXT: s_waitcnt vmcnt(0)496; GFX942-NEXT: s_setpc_b64 s[30:31]497 %vec0 = call <4 x ptr> asm "; def $0", "=v"()498 %vec1 = call <4 x ptr> asm "; def $0", "=v"()499 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 3>500 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16501 ret void502}503 504define void @v_shuffle_v2p0_v4p0__7_4(ptr addrspace(1) inreg %ptr) {505; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_4:506; GFX900: ; %bb.0:507; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)508; GFX900-NEXT: v_mov_b32_e32 v10, 0509; GFX900-NEXT: ;;#ASMSTART510; GFX900-NEXT: ; def v[0:7]511; GFX900-NEXT: ;;#ASMEND512; GFX900-NEXT: v_mov_b32_e32 v8, v0513; GFX900-NEXT: v_mov_b32_e32 v9, v1514; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]515; GFX900-NEXT: s_waitcnt vmcnt(0)516; GFX900-NEXT: s_setpc_b64 s[30:31]517;518; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_4:519; GFX90A: ; %bb.0:520; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)521; GFX90A-NEXT: v_mov_b32_e32 v10, 0522; GFX90A-NEXT: ;;#ASMSTART523; GFX90A-NEXT: ; def v[0:7]524; GFX90A-NEXT: ;;#ASMEND525; GFX90A-NEXT: v_mov_b32_e32 v8, v0526; GFX90A-NEXT: v_mov_b32_e32 v9, v1527; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]528; GFX90A-NEXT: s_waitcnt vmcnt(0)529; GFX90A-NEXT: s_setpc_b64 s[30:31]530;531; GFX942-LABEL: v_shuffle_v2p0_v4p0__7_4:532; GFX942: ; %bb.0:533; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)534; GFX942-NEXT: v_mov_b32_e32 v10, 0535; GFX942-NEXT: ;;#ASMSTART536; GFX942-NEXT: ; def v[0:7]537; GFX942-NEXT: ;;#ASMEND538; GFX942-NEXT: s_nop 0539; GFX942-NEXT: v_mov_b32_e32 v8, v0540; GFX942-NEXT: v_mov_b32_e32 v9, v1541; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]542; GFX942-NEXT: s_waitcnt vmcnt(0)543; GFX942-NEXT: s_setpc_b64 s[30:31]544 %vec0 = call <4 x ptr> asm "; def $0", "=v"()545 %vec1 = call <4 x ptr> asm "; def $0", "=v"()546 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 4>547 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16548 ret void549}550 551define void @v_shuffle_v2p0_v4p0__7_5(ptr addrspace(1) inreg %ptr) {552; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_5:553; GFX900: ; %bb.0:554; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)555; GFX900-NEXT: v_mov_b32_e32 v10, 0556; GFX900-NEXT: ;;#ASMSTART557; GFX900-NEXT: ; def v[0:7]558; GFX900-NEXT: ;;#ASMEND559; GFX900-NEXT: v_mov_b32_e32 v8, v2560; GFX900-NEXT: v_mov_b32_e32 v9, v3561; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]562; GFX900-NEXT: s_waitcnt vmcnt(0)563; GFX900-NEXT: s_setpc_b64 s[30:31]564;565; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_5:566; GFX90A: ; %bb.0:567; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)568; GFX90A-NEXT: v_mov_b32_e32 v10, 0569; GFX90A-NEXT: ;;#ASMSTART570; GFX90A-NEXT: ; def v[0:7]571; GFX90A-NEXT: ;;#ASMEND572; GFX90A-NEXT: v_mov_b32_e32 v8, v2573; GFX90A-NEXT: v_mov_b32_e32 v9, v3574; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]575; GFX90A-NEXT: s_waitcnt vmcnt(0)576; GFX90A-NEXT: s_setpc_b64 s[30:31]577;578; GFX942-LABEL: v_shuffle_v2p0_v4p0__7_5:579; GFX942: ; %bb.0:580; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)581; GFX942-NEXT: v_mov_b32_e32 v10, 0582; GFX942-NEXT: ;;#ASMSTART583; GFX942-NEXT: ; def v[0:7]584; GFX942-NEXT: ;;#ASMEND585; GFX942-NEXT: s_nop 0586; GFX942-NEXT: v_mov_b32_e32 v8, v2587; GFX942-NEXT: v_mov_b32_e32 v9, v3588; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]589; GFX942-NEXT: s_waitcnt vmcnt(0)590; GFX942-NEXT: s_setpc_b64 s[30:31]591 %vec0 = call <4 x ptr> asm "; def $0", "=v"()592 %vec1 = call <4 x ptr> asm "; def $0", "=v"()593 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 5>594 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16595 ret void596}597 598define void @v_shuffle_v2p0_v4p0__7_6(ptr addrspace(1) inreg %ptr) {599; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_6:600; GFX900: ; %bb.0:601; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)602; GFX900-NEXT: v_mov_b32_e32 v10, 0603; GFX900-NEXT: ;;#ASMSTART604; GFX900-NEXT: ; def v[0:7]605; GFX900-NEXT: ;;#ASMEND606; GFX900-NEXT: v_mov_b32_e32 v8, v4607; GFX900-NEXT: v_mov_b32_e32 v9, v5608; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]609; GFX900-NEXT: s_waitcnt vmcnt(0)610; GFX900-NEXT: s_setpc_b64 s[30:31]611;612; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_6:613; GFX90A: ; %bb.0:614; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)615; GFX90A-NEXT: v_mov_b32_e32 v10, 0616; GFX90A-NEXT: ;;#ASMSTART617; GFX90A-NEXT: ; def v[0:7]618; GFX90A-NEXT: ;;#ASMEND619; GFX90A-NEXT: v_mov_b32_e32 v8, v4620; GFX90A-NEXT: v_mov_b32_e32 v9, v5621; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]622; GFX90A-NEXT: s_waitcnt vmcnt(0)623; GFX90A-NEXT: s_setpc_b64 s[30:31]624;625; GFX942-LABEL: v_shuffle_v2p0_v4p0__7_6:626; GFX942: ; %bb.0:627; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)628; GFX942-NEXT: v_mov_b32_e32 v10, 0629; GFX942-NEXT: ;;#ASMSTART630; GFX942-NEXT: ; def v[0:7]631; GFX942-NEXT: ;;#ASMEND632; GFX942-NEXT: s_nop 0633; GFX942-NEXT: v_mov_b32_e32 v8, v4634; GFX942-NEXT: v_mov_b32_e32 v9, v5635; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]636; GFX942-NEXT: s_waitcnt vmcnt(0)637; GFX942-NEXT: s_setpc_b64 s[30:31]638 %vec0 = call <4 x ptr> asm "; def $0", "=v"()639 %vec1 = call <4 x ptr> asm "; def $0", "=v"()640 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 6>641 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16642 ret void643}644 645define void @v_shuffle_v2p0_v4p0__7_7(ptr addrspace(1) inreg %ptr) {646; GFX900-LABEL: v_shuffle_v2p0_v4p0__7_7:647; GFX900: ; %bb.0:648; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)649; GFX900-NEXT: v_mov_b32_e32 v10, 0650; GFX900-NEXT: ;;#ASMSTART651; GFX900-NEXT: ; def v[0:7]652; GFX900-NEXT: ;;#ASMEND653; GFX900-NEXT: v_mov_b32_e32 v8, v6654; GFX900-NEXT: v_mov_b32_e32 v9, v7655; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]656; GFX900-NEXT: s_waitcnt vmcnt(0)657; GFX900-NEXT: s_setpc_b64 s[30:31]658;659; GFX90A-LABEL: v_shuffle_v2p0_v4p0__7_7:660; GFX90A: ; %bb.0:661; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)662; GFX90A-NEXT: v_mov_b32_e32 v10, 0663; GFX90A-NEXT: ;;#ASMSTART664; GFX90A-NEXT: ; def v[0:7]665; GFX90A-NEXT: ;;#ASMEND666; GFX90A-NEXT: v_mov_b32_e32 v8, v6667; GFX90A-NEXT: v_mov_b32_e32 v9, v7668; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]669; GFX90A-NEXT: s_waitcnt vmcnt(0)670; GFX90A-NEXT: s_setpc_b64 s[30:31]671;672; GFX942-LABEL: v_shuffle_v2p0_v4p0__7_7:673; GFX942: ; %bb.0:674; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)675; GFX942-NEXT: v_mov_b32_e32 v10, 0676; GFX942-NEXT: ;;#ASMSTART677; GFX942-NEXT: ; def v[0:7]678; GFX942-NEXT: ;;#ASMEND679; GFX942-NEXT: s_nop 0680; GFX942-NEXT: v_mov_b32_e32 v8, v6681; GFX942-NEXT: v_mov_b32_e32 v9, v7682; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]683; GFX942-NEXT: s_waitcnt vmcnt(0)684; GFX942-NEXT: s_setpc_b64 s[30:31]685 %vec0 = call <4 x ptr> asm "; def $0", "=v"()686 %vec1 = call <4 x ptr> asm "; def $0", "=v"()687 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 7>688 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16689 ret void690}691 692define void @v_shuffle_v2p0_v4p0__u_0(ptr addrspace(1) inreg %ptr) {693; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_0:694; GFX900: ; %bb.0:695; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)696; GFX900-NEXT: v_mov_b32_e32 v0, 0697; GFX900-NEXT: ;;#ASMSTART698; GFX900-NEXT: ; def v[2:9]699; GFX900-NEXT: ;;#ASMEND700; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]701; GFX900-NEXT: s_waitcnt vmcnt(0)702; GFX900-NEXT: s_setpc_b64 s[30:31]703;704; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_0:705; GFX90A: ; %bb.0:706; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)707; GFX90A-NEXT: v_mov_b32_e32 v0, 0708; GFX90A-NEXT: ;;#ASMSTART709; GFX90A-NEXT: ; def v[2:9]710; GFX90A-NEXT: ;;#ASMEND711; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]712; GFX90A-NEXT: s_waitcnt vmcnt(0)713; GFX90A-NEXT: s_setpc_b64 s[30:31]714;715; GFX942-LABEL: v_shuffle_v2p0_v4p0__u_0:716; GFX942: ; %bb.0:717; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)718; GFX942-NEXT: v_mov_b32_e32 v0, 0719; GFX942-NEXT: ;;#ASMSTART720; GFX942-NEXT: ; def v[2:9]721; GFX942-NEXT: ;;#ASMEND722; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]723; GFX942-NEXT: s_waitcnt vmcnt(0)724; GFX942-NEXT: s_setpc_b64 s[30:31]725 %vec0 = call <4 x ptr> asm "; def $0", "=v"()726 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 0>727 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16728 ret void729}730 731define void @v_shuffle_v2p0_v4p0__0_0(ptr addrspace(1) inreg %ptr) {732; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_0:733; GFX900: ; %bb.0:734; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)735; GFX900-NEXT: ;;#ASMSTART736; GFX900-NEXT: ; def v[0:7]737; GFX900-NEXT: ;;#ASMEND738; GFX900-NEXT: v_mov_b32_e32 v8, 0739; GFX900-NEXT: v_mov_b32_e32 v2, v0740; GFX900-NEXT: v_mov_b32_e32 v3, v1741; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]742; GFX900-NEXT: s_waitcnt vmcnt(0)743; GFX900-NEXT: s_setpc_b64 s[30:31]744;745; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_0:746; GFX90A: ; %bb.0:747; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)748; GFX90A-NEXT: ;;#ASMSTART749; GFX90A-NEXT: ; def v[0:7]750; GFX90A-NEXT: ;;#ASMEND751; GFX90A-NEXT: v_mov_b32_e32 v8, 0752; GFX90A-NEXT: v_mov_b32_e32 v2, v0753; GFX90A-NEXT: v_mov_b32_e32 v3, v1754; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]755; GFX90A-NEXT: s_waitcnt vmcnt(0)756; GFX90A-NEXT: s_setpc_b64 s[30:31]757;758; GFX942-LABEL: v_shuffle_v2p0_v4p0__0_0:759; GFX942: ; %bb.0:760; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)761; GFX942-NEXT: ;;#ASMSTART762; GFX942-NEXT: ; def v[0:7]763; GFX942-NEXT: ;;#ASMEND764; GFX942-NEXT: v_mov_b32_e32 v8, 0765; GFX942-NEXT: v_mov_b32_e32 v2, v0766; GFX942-NEXT: v_mov_b32_e32 v3, v1767; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]768; GFX942-NEXT: s_waitcnt vmcnt(0)769; GFX942-NEXT: s_setpc_b64 s[30:31]770 %vec0 = call <4 x ptr> asm "; def $0", "=v"()771 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> zeroinitializer772 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16773 ret void774}775 776define void @v_shuffle_v2p0_v4p0__1_0(ptr addrspace(1) inreg %ptr) {777; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_0:778; GFX900: ; %bb.0:779; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)780; GFX900-NEXT: ;;#ASMSTART781; GFX900-NEXT: ; def v[0:7]782; GFX900-NEXT: ;;#ASMEND783; GFX900-NEXT: v_mov_b32_e32 v8, 0784; GFX900-NEXT: v_mov_b32_e32 v4, v0785; GFX900-NEXT: v_mov_b32_e32 v5, v1786; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]787; GFX900-NEXT: s_waitcnt vmcnt(0)788; GFX900-NEXT: s_setpc_b64 s[30:31]789;790; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_0:791; GFX90A: ; %bb.0:792; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)793; GFX90A-NEXT: ;;#ASMSTART794; GFX90A-NEXT: ; def v[0:7]795; GFX90A-NEXT: ;;#ASMEND796; GFX90A-NEXT: v_mov_b32_e32 v8, 0797; GFX90A-NEXT: v_mov_b32_e32 v4, v0798; GFX90A-NEXT: v_mov_b32_e32 v5, v1799; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]800; GFX90A-NEXT: s_waitcnt vmcnt(0)801; GFX90A-NEXT: s_setpc_b64 s[30:31]802;803; GFX942-LABEL: v_shuffle_v2p0_v4p0__1_0:804; GFX942: ; %bb.0:805; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)806; GFX942-NEXT: ;;#ASMSTART807; GFX942-NEXT: ; def v[0:7]808; GFX942-NEXT: ;;#ASMEND809; GFX942-NEXT: v_mov_b32_e32 v8, 0810; GFX942-NEXT: v_mov_b32_e32 v4, v0811; GFX942-NEXT: v_mov_b32_e32 v5, v1812; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]813; GFX942-NEXT: s_waitcnt vmcnt(0)814; GFX942-NEXT: s_setpc_b64 s[30:31]815 %vec0 = call <4 x ptr> asm "; def $0", "=v"()816 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 0>817 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16818 ret void819}820 821define void @v_shuffle_v2p0_v4p0__2_0(ptr addrspace(1) inreg %ptr) {822; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_0:823; GFX900: ; %bb.0:824; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)825; GFX900-NEXT: ;;#ASMSTART826; GFX900-NEXT: ; def v[0:7]827; GFX900-NEXT: ;;#ASMEND828; GFX900-NEXT: v_mov_b32_e32 v8, 0829; GFX900-NEXT: v_mov_b32_e32 v6, v0830; GFX900-NEXT: v_mov_b32_e32 v7, v1831; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]832; GFX900-NEXT: s_waitcnt vmcnt(0)833; GFX900-NEXT: s_setpc_b64 s[30:31]834;835; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_0:836; GFX90A: ; %bb.0:837; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)838; GFX90A-NEXT: ;;#ASMSTART839; GFX90A-NEXT: ; def v[0:7]840; GFX90A-NEXT: ;;#ASMEND841; GFX90A-NEXT: v_mov_b32_e32 v8, 0842; GFX90A-NEXT: v_mov_b32_e32 v6, v0843; GFX90A-NEXT: v_mov_b32_e32 v7, v1844; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]845; GFX90A-NEXT: s_waitcnt vmcnt(0)846; GFX90A-NEXT: s_setpc_b64 s[30:31]847;848; GFX942-LABEL: v_shuffle_v2p0_v4p0__2_0:849; GFX942: ; %bb.0:850; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)851; GFX942-NEXT: ;;#ASMSTART852; GFX942-NEXT: ; def v[0:7]853; GFX942-NEXT: ;;#ASMEND854; GFX942-NEXT: v_mov_b32_e32 v8, 0855; GFX942-NEXT: v_mov_b32_e32 v6, v0856; GFX942-NEXT: v_mov_b32_e32 v7, v1857; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]858; GFX942-NEXT: s_waitcnt vmcnt(0)859; GFX942-NEXT: s_setpc_b64 s[30:31]860 %vec0 = call <4 x ptr> asm "; def $0", "=v"()861 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 0>862 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16863 ret void864}865 866define void @v_shuffle_v2p0_v4p0__3_0(ptr addrspace(1) inreg %ptr) {867; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_0:868; GFX900: ; %bb.0:869; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)870; GFX900-NEXT: v_mov_b32_e32 v10, 0871; GFX900-NEXT: ;;#ASMSTART872; GFX900-NEXT: ; def v[0:7]873; GFX900-NEXT: ;;#ASMEND874; GFX900-NEXT: v_mov_b32_e32 v8, v0875; GFX900-NEXT: v_mov_b32_e32 v9, v1876; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]877; GFX900-NEXT: s_waitcnt vmcnt(0)878; GFX900-NEXT: s_setpc_b64 s[30:31]879;880; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_0:881; GFX90A: ; %bb.0:882; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)883; GFX90A-NEXT: v_mov_b32_e32 v10, 0884; GFX90A-NEXT: ;;#ASMSTART885; GFX90A-NEXT: ; def v[0:7]886; GFX90A-NEXT: ;;#ASMEND887; GFX90A-NEXT: v_mov_b32_e32 v8, v0888; GFX90A-NEXT: v_mov_b32_e32 v9, v1889; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]890; GFX90A-NEXT: s_waitcnt vmcnt(0)891; GFX90A-NEXT: s_setpc_b64 s[30:31]892;893; GFX942-LABEL: v_shuffle_v2p0_v4p0__3_0:894; GFX942: ; %bb.0:895; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)896; GFX942-NEXT: v_mov_b32_e32 v10, 0897; GFX942-NEXT: ;;#ASMSTART898; GFX942-NEXT: ; def v[0:7]899; GFX942-NEXT: ;;#ASMEND900; GFX942-NEXT: s_nop 0901; GFX942-NEXT: v_mov_b32_e32 v8, v0902; GFX942-NEXT: v_mov_b32_e32 v9, v1903; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]904; GFX942-NEXT: s_waitcnt vmcnt(0)905; GFX942-NEXT: s_setpc_b64 s[30:31]906 %vec0 = call <4 x ptr> asm "; def $0", "=v"()907 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 0>908 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16909 ret void910}911 912define void @v_shuffle_v2p0_v4p0__4_0(ptr addrspace(1) inreg %ptr) {913; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_0:914; GFX900: ; %bb.0:915; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)916; GFX900-NEXT: v_mov_b32_e32 v0, 0917; GFX900-NEXT: ;;#ASMSTART918; GFX900-NEXT: ; def v[2:9]919; GFX900-NEXT: ;;#ASMEND920; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]921; GFX900-NEXT: s_waitcnt vmcnt(0)922; GFX900-NEXT: s_setpc_b64 s[30:31]923;924; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_0:925; GFX90A: ; %bb.0:926; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)927; GFX90A-NEXT: v_mov_b32_e32 v0, 0928; GFX90A-NEXT: ;;#ASMSTART929; GFX90A-NEXT: ; def v[2:9]930; GFX90A-NEXT: ;;#ASMEND931; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]932; GFX90A-NEXT: s_waitcnt vmcnt(0)933; GFX90A-NEXT: s_setpc_b64 s[30:31]934;935; GFX942-LABEL: v_shuffle_v2p0_v4p0__4_0:936; GFX942: ; %bb.0:937; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)938; GFX942-NEXT: v_mov_b32_e32 v0, 0939; GFX942-NEXT: ;;#ASMSTART940; GFX942-NEXT: ; def v[2:9]941; GFX942-NEXT: ;;#ASMEND942; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]943; GFX942-NEXT: s_waitcnt vmcnt(0)944; GFX942-NEXT: s_setpc_b64 s[30:31]945 %vec0 = call <4 x ptr> asm "; def $0", "=v"()946 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 0>947 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16948 ret void949}950 951define void @v_shuffle_v2p0_v4p0__5_0(ptr addrspace(1) inreg %ptr) {952; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_0:953; GFX900: ; %bb.0:954; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)955; GFX900-NEXT: ;;#ASMSTART956; GFX900-NEXT: ; def v[0:7]957; GFX900-NEXT: ;;#ASMEND958; GFX900-NEXT: ;;#ASMSTART959; GFX900-NEXT: ; def v[2:9]960; GFX900-NEXT: ;;#ASMEND961; GFX900-NEXT: v_mov_b32_e32 v10, 0962; GFX900-NEXT: v_mov_b32_e32 v6, v0963; GFX900-NEXT: v_mov_b32_e32 v7, v1964; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]965; GFX900-NEXT: s_waitcnt vmcnt(0)966; GFX900-NEXT: s_setpc_b64 s[30:31]967;968; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_0:969; GFX90A: ; %bb.0:970; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)971; GFX90A-NEXT: ;;#ASMSTART972; GFX90A-NEXT: ; def v[0:7]973; GFX90A-NEXT: ;;#ASMEND974; GFX90A-NEXT: ;;#ASMSTART975; GFX90A-NEXT: ; def v[2:9]976; GFX90A-NEXT: ;;#ASMEND977; GFX90A-NEXT: v_mov_b32_e32 v10, 0978; GFX90A-NEXT: v_mov_b32_e32 v6, v0979; GFX90A-NEXT: v_mov_b32_e32 v7, v1980; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]981; GFX90A-NEXT: s_waitcnt vmcnt(0)982; GFX90A-NEXT: s_setpc_b64 s[30:31]983;984; GFX942-LABEL: v_shuffle_v2p0_v4p0__5_0:985; GFX942: ; %bb.0:986; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)987; GFX942-NEXT: ;;#ASMSTART988; GFX942-NEXT: ; def v[0:7]989; GFX942-NEXT: ;;#ASMEND990; GFX942-NEXT: v_mov_b32_e32 v10, 0991; GFX942-NEXT: ;;#ASMSTART992; GFX942-NEXT: ; def v[2:9]993; GFX942-NEXT: ;;#ASMEND994; GFX942-NEXT: s_nop 0995; GFX942-NEXT: v_mov_b32_e32 v6, v0996; GFX942-NEXT: v_mov_b32_e32 v7, v1997; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]998; GFX942-NEXT: s_waitcnt vmcnt(0)999; GFX942-NEXT: s_setpc_b64 s[30:31]1000 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1001 %vec1 = call <4 x ptr> asm "; def $0", "=v"()1002 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 0>1003 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161004 ret void1005}1006 1007define void @v_shuffle_v2p0_v4p0__6_0(ptr addrspace(1) inreg %ptr) {1008; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_0:1009; GFX900: ; %bb.0:1010; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1011; GFX900-NEXT: ;;#ASMSTART1012; GFX900-NEXT: ; def v[0:7]1013; GFX900-NEXT: ;;#ASMEND1014; GFX900-NEXT: ;;#ASMSTART1015; GFX900-NEXT: ; def v[2:9]1016; GFX900-NEXT: ;;#ASMEND1017; GFX900-NEXT: v_mov_b32_e32 v10, 01018; GFX900-NEXT: v_mov_b32_e32 v8, v01019; GFX900-NEXT: v_mov_b32_e32 v9, v11020; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1021; GFX900-NEXT: s_waitcnt vmcnt(0)1022; GFX900-NEXT: s_setpc_b64 s[30:31]1023;1024; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_0:1025; GFX90A: ; %bb.0:1026; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1027; GFX90A-NEXT: ;;#ASMSTART1028; GFX90A-NEXT: ; def v[0:7]1029; GFX90A-NEXT: ;;#ASMEND1030; GFX90A-NEXT: ;;#ASMSTART1031; GFX90A-NEXT: ; def v[2:9]1032; GFX90A-NEXT: ;;#ASMEND1033; GFX90A-NEXT: v_mov_b32_e32 v10, 01034; GFX90A-NEXT: v_mov_b32_e32 v8, v01035; GFX90A-NEXT: v_mov_b32_e32 v9, v11036; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1037; GFX90A-NEXT: s_waitcnt vmcnt(0)1038; GFX90A-NEXT: s_setpc_b64 s[30:31]1039;1040; GFX942-LABEL: v_shuffle_v2p0_v4p0__6_0:1041; GFX942: ; %bb.0:1042; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1043; GFX942-NEXT: ;;#ASMSTART1044; GFX942-NEXT: ; def v[0:7]1045; GFX942-NEXT: ;;#ASMEND1046; GFX942-NEXT: v_mov_b32_e32 v10, 01047; GFX942-NEXT: ;;#ASMSTART1048; GFX942-NEXT: ; def v[2:9]1049; GFX942-NEXT: ;;#ASMEND1050; GFX942-NEXT: s_nop 01051; GFX942-NEXT: v_mov_b32_e32 v8, v01052; GFX942-NEXT: v_mov_b32_e32 v9, v11053; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]1054; GFX942-NEXT: s_waitcnt vmcnt(0)1055; GFX942-NEXT: s_setpc_b64 s[30:31]1056 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1057 %vec1 = call <4 x ptr> asm "; def $0", "=v"()1058 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 0>1059 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161060 ret void1061}1062 1063define void @v_shuffle_v2p0_v4p0__u_1(ptr addrspace(1) inreg %ptr) {1064; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_1:1065; GFX900: ; %bb.0:1066; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1067; GFX900-NEXT: v_mov_b32_e32 v8, 01068; GFX900-NEXT: ;;#ASMSTART1069; GFX900-NEXT: ; def v[0:7]1070; GFX900-NEXT: ;;#ASMEND1071; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1072; GFX900-NEXT: s_waitcnt vmcnt(0)1073; GFX900-NEXT: s_setpc_b64 s[30:31]1074;1075; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_1:1076; GFX90A: ; %bb.0:1077; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1078; GFX90A-NEXT: v_mov_b32_e32 v8, 01079; GFX90A-NEXT: ;;#ASMSTART1080; GFX90A-NEXT: ; def v[0:7]1081; GFX90A-NEXT: ;;#ASMEND1082; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1083; GFX90A-NEXT: s_waitcnt vmcnt(0)1084; GFX90A-NEXT: s_setpc_b64 s[30:31]1085;1086; GFX942-LABEL: v_shuffle_v2p0_v4p0__u_1:1087; GFX942: ; %bb.0:1088; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1089; GFX942-NEXT: v_mov_b32_e32 v8, 01090; GFX942-NEXT: ;;#ASMSTART1091; GFX942-NEXT: ; def v[0:7]1092; GFX942-NEXT: ;;#ASMEND1093; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]1094; GFX942-NEXT: s_waitcnt vmcnt(0)1095; GFX942-NEXT: s_setpc_b64 s[30:31]1096 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1097 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 1>1098 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161099 ret void1100}1101 1102define void @v_shuffle_v2p0_v4p0__0_1(ptr addrspace(1) inreg %ptr) {1103; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_1:1104; GFX900: ; %bb.0:1105; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1106; GFX900-NEXT: v_mov_b32_e32 v8, 01107; GFX900-NEXT: ;;#ASMSTART1108; GFX900-NEXT: ; def v[0:7]1109; GFX900-NEXT: ;;#ASMEND1110; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1111; GFX900-NEXT: s_waitcnt vmcnt(0)1112; GFX900-NEXT: s_setpc_b64 s[30:31]1113;1114; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_1:1115; GFX90A: ; %bb.0:1116; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1117; GFX90A-NEXT: v_mov_b32_e32 v8, 01118; GFX90A-NEXT: ;;#ASMSTART1119; GFX90A-NEXT: ; def v[0:7]1120; GFX90A-NEXT: ;;#ASMEND1121; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1122; GFX90A-NEXT: s_waitcnt vmcnt(0)1123; GFX90A-NEXT: s_setpc_b64 s[30:31]1124;1125; GFX942-LABEL: v_shuffle_v2p0_v4p0__0_1:1126; GFX942: ; %bb.0:1127; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1128; GFX942-NEXT: v_mov_b32_e32 v8, 01129; GFX942-NEXT: ;;#ASMSTART1130; GFX942-NEXT: ; def v[0:7]1131; GFX942-NEXT: ;;#ASMEND1132; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]1133; GFX942-NEXT: s_waitcnt vmcnt(0)1134; GFX942-NEXT: s_setpc_b64 s[30:31]1135 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1136 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 1>1137 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161138 ret void1139}1140 1141define void @v_shuffle_v2p0_v4p0__1_1(ptr addrspace(1) inreg %ptr) {1142; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_1:1143; GFX900: ; %bb.0:1144; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1145; GFX900-NEXT: ;;#ASMSTART1146; GFX900-NEXT: ; def v[0:7]1147; GFX900-NEXT: ;;#ASMEND1148; GFX900-NEXT: v_mov_b32_e32 v8, 01149; GFX900-NEXT: v_mov_b32_e32 v4, v21150; GFX900-NEXT: v_mov_b32_e32 v5, v31151; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1152; GFX900-NEXT: s_waitcnt vmcnt(0)1153; GFX900-NEXT: s_setpc_b64 s[30:31]1154;1155; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_1:1156; GFX90A: ; %bb.0:1157; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1158; GFX90A-NEXT: ;;#ASMSTART1159; GFX90A-NEXT: ; def v[0:7]1160; GFX90A-NEXT: ;;#ASMEND1161; GFX90A-NEXT: v_mov_b32_e32 v8, 01162; GFX90A-NEXT: v_mov_b32_e32 v4, v21163; GFX90A-NEXT: v_mov_b32_e32 v5, v31164; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1165; GFX90A-NEXT: s_waitcnt vmcnt(0)1166; GFX90A-NEXT: s_setpc_b64 s[30:31]1167;1168; GFX942-LABEL: v_shuffle_v2p0_v4p0__1_1:1169; GFX942: ; %bb.0:1170; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1171; GFX942-NEXT: ;;#ASMSTART1172; GFX942-NEXT: ; def v[0:7]1173; GFX942-NEXT: ;;#ASMEND1174; GFX942-NEXT: v_mov_b32_e32 v8, 01175; GFX942-NEXT: v_mov_b32_e32 v4, v21176; GFX942-NEXT: v_mov_b32_e32 v5, v31177; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]1178; GFX942-NEXT: s_waitcnt vmcnt(0)1179; GFX942-NEXT: s_setpc_b64 s[30:31]1180 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1181 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 1>1182 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161183 ret void1184}1185 1186define void @v_shuffle_v2p0_v4p0__2_1(ptr addrspace(1) inreg %ptr) {1187; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_1:1188; GFX900: ; %bb.0:1189; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1190; GFX900-NEXT: ;;#ASMSTART1191; GFX900-NEXT: ; def v[0:7]1192; GFX900-NEXT: ;;#ASMEND1193; GFX900-NEXT: v_mov_b32_e32 v8, 01194; GFX900-NEXT: v_mov_b32_e32 v6, v21195; GFX900-NEXT: v_mov_b32_e32 v7, v31196; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1197; GFX900-NEXT: s_waitcnt vmcnt(0)1198; GFX900-NEXT: s_setpc_b64 s[30:31]1199;1200; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_1:1201; GFX90A: ; %bb.0:1202; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1203; GFX90A-NEXT: ;;#ASMSTART1204; GFX90A-NEXT: ; def v[0:7]1205; GFX90A-NEXT: ;;#ASMEND1206; GFX90A-NEXT: v_mov_b32_e32 v8, 01207; GFX90A-NEXT: v_mov_b32_e32 v6, v21208; GFX90A-NEXT: v_mov_b32_e32 v7, v31209; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1210; GFX90A-NEXT: s_waitcnt vmcnt(0)1211; GFX90A-NEXT: s_setpc_b64 s[30:31]1212;1213; GFX942-LABEL: v_shuffle_v2p0_v4p0__2_1:1214; GFX942: ; %bb.0:1215; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1216; GFX942-NEXT: ;;#ASMSTART1217; GFX942-NEXT: ; def v[0:7]1218; GFX942-NEXT: ;;#ASMEND1219; GFX942-NEXT: v_mov_b32_e32 v8, 01220; GFX942-NEXT: v_mov_b32_e32 v6, v21221; GFX942-NEXT: v_mov_b32_e32 v7, v31222; GFX942-NEXT: global_store_dwordx4 v8, 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 <4 x ptr> asm "; def $0", "=v"()1226 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 1>1227 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161228 ret void1229}1230 1231define void @v_shuffle_v2p0_v4p0__3_1(ptr addrspace(1) inreg %ptr) {1232; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_1:1233; GFX900: ; %bb.0:1234; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1235; GFX900-NEXT: v_mov_b32_e32 v10, 01236; GFX900-NEXT: ;;#ASMSTART1237; GFX900-NEXT: ; def v[0:7]1238; GFX900-NEXT: ;;#ASMEND1239; GFX900-NEXT: v_mov_b32_e32 v8, v21240; GFX900-NEXT: v_mov_b32_e32 v9, v31241; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1242; GFX900-NEXT: s_waitcnt vmcnt(0)1243; GFX900-NEXT: s_setpc_b64 s[30:31]1244;1245; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_1:1246; GFX90A: ; %bb.0:1247; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1248; GFX90A-NEXT: v_mov_b32_e32 v10, 01249; GFX90A-NEXT: ;;#ASMSTART1250; GFX90A-NEXT: ; def v[0:7]1251; GFX90A-NEXT: ;;#ASMEND1252; GFX90A-NEXT: v_mov_b32_e32 v8, v21253; GFX90A-NEXT: v_mov_b32_e32 v9, v31254; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1255; GFX90A-NEXT: s_waitcnt vmcnt(0)1256; GFX90A-NEXT: s_setpc_b64 s[30:31]1257;1258; GFX942-LABEL: v_shuffle_v2p0_v4p0__3_1:1259; GFX942: ; %bb.0:1260; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1261; GFX942-NEXT: v_mov_b32_e32 v10, 01262; GFX942-NEXT: ;;#ASMSTART1263; GFX942-NEXT: ; def v[0:7]1264; GFX942-NEXT: ;;#ASMEND1265; GFX942-NEXT: s_nop 01266; GFX942-NEXT: v_mov_b32_e32 v8, v21267; GFX942-NEXT: v_mov_b32_e32 v9, v31268; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]1269; GFX942-NEXT: s_waitcnt vmcnt(0)1270; GFX942-NEXT: s_setpc_b64 s[30:31]1271 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1272 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 1>1273 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161274 ret void1275}1276 1277define void @v_shuffle_v2p0_v4p0__4_1(ptr addrspace(1) inreg %ptr) {1278; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_1:1279; GFX900: ; %bb.0:1280; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1281; GFX900-NEXT: v_mov_b32_e32 v8, 01282; GFX900-NEXT: ;;#ASMSTART1283; GFX900-NEXT: ; def v[0:7]1284; GFX900-NEXT: ;;#ASMEND1285; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1286; GFX900-NEXT: s_waitcnt vmcnt(0)1287; GFX900-NEXT: s_setpc_b64 s[30:31]1288;1289; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_1:1290; GFX90A: ; %bb.0:1291; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1292; GFX90A-NEXT: v_mov_b32_e32 v8, 01293; GFX90A-NEXT: ;;#ASMSTART1294; GFX90A-NEXT: ; def v[0:7]1295; GFX90A-NEXT: ;;#ASMEND1296; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1297; GFX90A-NEXT: s_waitcnt vmcnt(0)1298; GFX90A-NEXT: s_setpc_b64 s[30:31]1299;1300; GFX942-LABEL: v_shuffle_v2p0_v4p0__4_1:1301; GFX942: ; %bb.0:1302; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1303; GFX942-NEXT: v_mov_b32_e32 v8, 01304; GFX942-NEXT: ;;#ASMSTART1305; GFX942-NEXT: ; def v[0:7]1306; GFX942-NEXT: ;;#ASMEND1307; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]1308; GFX942-NEXT: s_waitcnt vmcnt(0)1309; GFX942-NEXT: s_setpc_b64 s[30:31]1310 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1311 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 1>1312 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161313 ret void1314}1315 1316define void @v_shuffle_v2p0_v4p0__5_1(ptr addrspace(1) inreg %ptr) {1317; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_1:1318; GFX900: ; %bb.0:1319; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1320; GFX900-NEXT: ;;#ASMSTART1321; GFX900-NEXT: ; def v[0:7]1322; GFX900-NEXT: ;;#ASMEND1323; GFX900-NEXT: ;;#ASMSTART1324; GFX900-NEXT: ; def v[4:11]1325; GFX900-NEXT: ;;#ASMEND1326; GFX900-NEXT: v_mov_b32_e32 v12, 01327; GFX900-NEXT: v_mov_b32_e32 v8, v21328; GFX900-NEXT: v_mov_b32_e32 v9, v31329; GFX900-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17]1330; GFX900-NEXT: s_waitcnt vmcnt(0)1331; GFX900-NEXT: s_setpc_b64 s[30:31]1332;1333; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_1:1334; GFX90A: ; %bb.0:1335; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1336; GFX90A-NEXT: ;;#ASMSTART1337; GFX90A-NEXT: ; def v[0:7]1338; GFX90A-NEXT: ;;#ASMEND1339; GFX90A-NEXT: ;;#ASMSTART1340; GFX90A-NEXT: ; def v[4:11]1341; GFX90A-NEXT: ;;#ASMEND1342; GFX90A-NEXT: v_mov_b32_e32 v12, 01343; GFX90A-NEXT: v_mov_b32_e32 v8, v21344; GFX90A-NEXT: v_mov_b32_e32 v9, v31345; GFX90A-NEXT: global_store_dwordx4 v12, v[6:9], s[16:17]1346; GFX90A-NEXT: s_waitcnt vmcnt(0)1347; GFX90A-NEXT: s_setpc_b64 s[30:31]1348;1349; GFX942-LABEL: v_shuffle_v2p0_v4p0__5_1:1350; GFX942: ; %bb.0:1351; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1352; GFX942-NEXT: ;;#ASMSTART1353; GFX942-NEXT: ; def v[0:7]1354; GFX942-NEXT: ;;#ASMEND1355; GFX942-NEXT: v_mov_b32_e32 v12, 01356; GFX942-NEXT: ;;#ASMSTART1357; GFX942-NEXT: ; def v[4:11]1358; GFX942-NEXT: ;;#ASMEND1359; GFX942-NEXT: s_nop 01360; GFX942-NEXT: v_mov_b32_e32 v8, v21361; GFX942-NEXT: v_mov_b32_e32 v9, v31362; GFX942-NEXT: global_store_dwordx4 v12, v[6:9], s[0:1]1363; GFX942-NEXT: s_waitcnt vmcnt(0)1364; GFX942-NEXT: s_setpc_b64 s[30:31]1365 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1366 %vec1 = call <4 x ptr> asm "; def $0", "=v"()1367 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 1>1368 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161369 ret void1370}1371 1372define void @v_shuffle_v2p0_v4p0__6_1(ptr addrspace(1) inreg %ptr) {1373; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_1:1374; GFX900: ; %bb.0:1375; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1376; GFX900-NEXT: ;;#ASMSTART1377; GFX900-NEXT: ; def v[0:7]1378; GFX900-NEXT: ;;#ASMEND1379; GFX900-NEXT: ;;#ASMSTART1380; GFX900-NEXT: ; def v[4:11]1381; GFX900-NEXT: ;;#ASMEND1382; GFX900-NEXT: v_mov_b32_e32 v12, 01383; GFX900-NEXT: v_mov_b32_e32 v10, v21384; GFX900-NEXT: v_mov_b32_e32 v11, v31385; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]1386; GFX900-NEXT: s_waitcnt vmcnt(0)1387; GFX900-NEXT: s_setpc_b64 s[30:31]1388;1389; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_1:1390; GFX90A: ; %bb.0:1391; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1392; GFX90A-NEXT: ;;#ASMSTART1393; GFX90A-NEXT: ; def v[0:7]1394; GFX90A-NEXT: ;;#ASMEND1395; GFX90A-NEXT: ;;#ASMSTART1396; GFX90A-NEXT: ; def v[4:11]1397; GFX90A-NEXT: ;;#ASMEND1398; GFX90A-NEXT: v_mov_b32_e32 v12, 01399; GFX90A-NEXT: v_mov_b32_e32 v10, v21400; GFX90A-NEXT: v_mov_b32_e32 v11, v31401; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]1402; GFX90A-NEXT: s_waitcnt vmcnt(0)1403; GFX90A-NEXT: s_setpc_b64 s[30:31]1404;1405; GFX942-LABEL: v_shuffle_v2p0_v4p0__6_1:1406; GFX942: ; %bb.0:1407; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1408; GFX942-NEXT: ;;#ASMSTART1409; GFX942-NEXT: ; def v[0:7]1410; GFX942-NEXT: ;;#ASMEND1411; GFX942-NEXT: v_mov_b32_e32 v12, 01412; GFX942-NEXT: ;;#ASMSTART1413; GFX942-NEXT: ; def v[4:11]1414; GFX942-NEXT: ;;#ASMEND1415; GFX942-NEXT: s_nop 01416; GFX942-NEXT: v_mov_b32_e32 v10, v21417; GFX942-NEXT: v_mov_b32_e32 v11, v31418; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1]1419; GFX942-NEXT: s_waitcnt vmcnt(0)1420; GFX942-NEXT: s_setpc_b64 s[30:31]1421 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1422 %vec1 = call <4 x ptr> asm "; def $0", "=v"()1423 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 1>1424 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161425 ret void1426}1427 1428define void @v_shuffle_v2p0_v4p0__u_2(ptr addrspace(1) inreg %ptr) {1429; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_2:1430; GFX900: ; %bb.0:1431; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1432; GFX900-NEXT: v_mov_b32_e32 v8, 01433; GFX900-NEXT: ;;#ASMSTART1434; GFX900-NEXT: ; def v[0:7]1435; GFX900-NEXT: ;;#ASMEND1436; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1437; GFX900-NEXT: s_waitcnt vmcnt(0)1438; GFX900-NEXT: s_setpc_b64 s[30:31]1439;1440; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_2:1441; GFX90A: ; %bb.0:1442; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1443; GFX90A-NEXT: v_mov_b32_e32 v8, 01444; GFX90A-NEXT: ;;#ASMSTART1445; GFX90A-NEXT: ; def v[0:7]1446; GFX90A-NEXT: ;;#ASMEND1447; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1448; GFX90A-NEXT: s_waitcnt vmcnt(0)1449; GFX90A-NEXT: s_setpc_b64 s[30:31]1450;1451; GFX942-LABEL: v_shuffle_v2p0_v4p0__u_2:1452; GFX942: ; %bb.0:1453; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1454; GFX942-NEXT: v_mov_b32_e32 v8, 01455; GFX942-NEXT: ;;#ASMSTART1456; GFX942-NEXT: ; def v[0:7]1457; GFX942-NEXT: ;;#ASMEND1458; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]1459; GFX942-NEXT: s_waitcnt vmcnt(0)1460; GFX942-NEXT: s_setpc_b64 s[30:31]1461 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1462 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 2>1463 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161464 ret void1465}1466 1467define void @v_shuffle_v2p0_v4p0__0_2(ptr addrspace(1) inreg %ptr) {1468; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_2:1469; GFX900: ; %bb.0:1470; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1471; GFX900-NEXT: ;;#ASMSTART1472; GFX900-NEXT: ; def v[0:7]1473; GFX900-NEXT: ;;#ASMEND1474; GFX900-NEXT: v_mov_b32_e32 v8, 01475; GFX900-NEXT: v_mov_b32_e32 v2, v41476; GFX900-NEXT: v_mov_b32_e32 v3, v51477; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1478; GFX900-NEXT: s_waitcnt vmcnt(0)1479; GFX900-NEXT: s_setpc_b64 s[30:31]1480;1481; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_2:1482; GFX90A: ; %bb.0:1483; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1484; GFX90A-NEXT: ;;#ASMSTART1485; GFX90A-NEXT: ; def v[0:7]1486; GFX90A-NEXT: ;;#ASMEND1487; GFX90A-NEXT: v_mov_b32_e32 v8, 01488; GFX90A-NEXT: v_mov_b32_e32 v2, v41489; GFX90A-NEXT: v_mov_b32_e32 v3, v51490; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1491; GFX90A-NEXT: s_waitcnt vmcnt(0)1492; GFX90A-NEXT: s_setpc_b64 s[30:31]1493;1494; GFX942-LABEL: v_shuffle_v2p0_v4p0__0_2:1495; GFX942: ; %bb.0:1496; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1497; GFX942-NEXT: ;;#ASMSTART1498; GFX942-NEXT: ; def v[0:7]1499; GFX942-NEXT: ;;#ASMEND1500; GFX942-NEXT: v_mov_b32_e32 v8, 01501; GFX942-NEXT: v_mov_b32_e32 v2, v41502; GFX942-NEXT: v_mov_b32_e32 v3, v51503; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]1504; GFX942-NEXT: s_waitcnt vmcnt(0)1505; GFX942-NEXT: s_setpc_b64 s[30:31]1506 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1507 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 2>1508 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161509 ret void1510}1511 1512define void @v_shuffle_v2p0_v4p0__1_2(ptr addrspace(1) inreg %ptr) {1513; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_2:1514; GFX900: ; %bb.0:1515; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1516; GFX900-NEXT: v_mov_b32_e32 v8, 01517; GFX900-NEXT: ;;#ASMSTART1518; GFX900-NEXT: ; def v[0:7]1519; GFX900-NEXT: ;;#ASMEND1520; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1521; GFX900-NEXT: s_waitcnt vmcnt(0)1522; GFX900-NEXT: s_setpc_b64 s[30:31]1523;1524; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_2:1525; GFX90A: ; %bb.0:1526; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1527; GFX90A-NEXT: v_mov_b32_e32 v8, 01528; GFX90A-NEXT: ;;#ASMSTART1529; GFX90A-NEXT: ; def v[0:7]1530; GFX90A-NEXT: ;;#ASMEND1531; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1532; GFX90A-NEXT: s_waitcnt vmcnt(0)1533; GFX90A-NEXT: s_setpc_b64 s[30:31]1534;1535; GFX942-LABEL: v_shuffle_v2p0_v4p0__1_2:1536; GFX942: ; %bb.0:1537; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1538; GFX942-NEXT: v_mov_b32_e32 v8, 01539; GFX942-NEXT: ;;#ASMSTART1540; GFX942-NEXT: ; def v[0:7]1541; GFX942-NEXT: ;;#ASMEND1542; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]1543; GFX942-NEXT: s_waitcnt vmcnt(0)1544; GFX942-NEXT: s_setpc_b64 s[30:31]1545 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1546 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 2>1547 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161548 ret void1549}1550 1551define void @v_shuffle_v2p0_v4p0__2_2(ptr addrspace(1) inreg %ptr) {1552; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_2:1553; GFX900: ; %bb.0:1554; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1555; GFX900-NEXT: ;;#ASMSTART1556; GFX900-NEXT: ; def v[0:7]1557; GFX900-NEXT: ;;#ASMEND1558; GFX900-NEXT: v_mov_b32_e32 v8, 01559; GFX900-NEXT: v_mov_b32_e32 v6, v41560; GFX900-NEXT: v_mov_b32_e32 v7, v51561; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1562; GFX900-NEXT: s_waitcnt vmcnt(0)1563; GFX900-NEXT: s_setpc_b64 s[30:31]1564;1565; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_2:1566; GFX90A: ; %bb.0:1567; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1568; GFX90A-NEXT: ;;#ASMSTART1569; GFX90A-NEXT: ; def v[0:7]1570; GFX90A-NEXT: ;;#ASMEND1571; GFX90A-NEXT: v_mov_b32_e32 v8, 01572; GFX90A-NEXT: v_mov_b32_e32 v6, v41573; GFX90A-NEXT: v_mov_b32_e32 v7, v51574; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1575; GFX90A-NEXT: s_waitcnt vmcnt(0)1576; GFX90A-NEXT: s_setpc_b64 s[30:31]1577;1578; GFX942-LABEL: v_shuffle_v2p0_v4p0__2_2:1579; GFX942: ; %bb.0:1580; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1581; GFX942-NEXT: ;;#ASMSTART1582; GFX942-NEXT: ; def v[0:7]1583; GFX942-NEXT: ;;#ASMEND1584; GFX942-NEXT: v_mov_b32_e32 v8, 01585; GFX942-NEXT: v_mov_b32_e32 v6, v41586; GFX942-NEXT: v_mov_b32_e32 v7, v51587; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1588; GFX942-NEXT: s_waitcnt vmcnt(0)1589; GFX942-NEXT: s_setpc_b64 s[30:31]1590 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1591 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 2>1592 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161593 ret void1594}1595 1596define void @v_shuffle_v2p0_v4p0__3_2(ptr addrspace(1) inreg %ptr) {1597; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_2:1598; GFX900: ; %bb.0:1599; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1600; GFX900-NEXT: v_mov_b32_e32 v10, 01601; GFX900-NEXT: ;;#ASMSTART1602; GFX900-NEXT: ; def v[0:7]1603; GFX900-NEXT: ;;#ASMEND1604; GFX900-NEXT: v_mov_b32_e32 v8, v41605; GFX900-NEXT: v_mov_b32_e32 v9, v51606; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1607; GFX900-NEXT: s_waitcnt vmcnt(0)1608; GFX900-NEXT: s_setpc_b64 s[30:31]1609;1610; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_2:1611; GFX90A: ; %bb.0:1612; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1613; GFX90A-NEXT: v_mov_b32_e32 v10, 01614; GFX90A-NEXT: ;;#ASMSTART1615; GFX90A-NEXT: ; def v[0:7]1616; GFX90A-NEXT: ;;#ASMEND1617; GFX90A-NEXT: v_mov_b32_e32 v8, v41618; GFX90A-NEXT: v_mov_b32_e32 v9, v51619; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1620; GFX90A-NEXT: s_waitcnt vmcnt(0)1621; GFX90A-NEXT: s_setpc_b64 s[30:31]1622;1623; GFX942-LABEL: v_shuffle_v2p0_v4p0__3_2:1624; GFX942: ; %bb.0:1625; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1626; GFX942-NEXT: v_mov_b32_e32 v10, 01627; GFX942-NEXT: ;;#ASMSTART1628; GFX942-NEXT: ; def v[0:7]1629; GFX942-NEXT: ;;#ASMEND1630; GFX942-NEXT: s_nop 01631; GFX942-NEXT: v_mov_b32_e32 v8, v41632; GFX942-NEXT: v_mov_b32_e32 v9, v51633; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]1634; GFX942-NEXT: s_waitcnt vmcnt(0)1635; GFX942-NEXT: s_setpc_b64 s[30:31]1636 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1637 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 2>1638 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161639 ret void1640}1641 1642define void @v_shuffle_v2p0_v4p0__4_2(ptr addrspace(1) inreg %ptr) {1643; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_2:1644; GFX900: ; %bb.0:1645; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1646; GFX900-NEXT: v_mov_b32_e32 v8, 01647; GFX900-NEXT: ;;#ASMSTART1648; GFX900-NEXT: ; def v[0:7]1649; GFX900-NEXT: ;;#ASMEND1650; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1651; GFX900-NEXT: s_waitcnt vmcnt(0)1652; GFX900-NEXT: s_setpc_b64 s[30:31]1653;1654; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_2:1655; GFX90A: ; %bb.0:1656; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1657; GFX90A-NEXT: v_mov_b32_e32 v8, 01658; GFX90A-NEXT: ;;#ASMSTART1659; GFX90A-NEXT: ; def v[0:7]1660; GFX90A-NEXT: ;;#ASMEND1661; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1662; GFX90A-NEXT: s_waitcnt vmcnt(0)1663; GFX90A-NEXT: s_setpc_b64 s[30:31]1664;1665; GFX942-LABEL: v_shuffle_v2p0_v4p0__4_2:1666; GFX942: ; %bb.0:1667; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1668; GFX942-NEXT: v_mov_b32_e32 v8, 01669; GFX942-NEXT: ;;#ASMSTART1670; GFX942-NEXT: ; def v[0:7]1671; GFX942-NEXT: ;;#ASMEND1672; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]1673; GFX942-NEXT: s_waitcnt vmcnt(0)1674; GFX942-NEXT: s_setpc_b64 s[30:31]1675 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1676 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 2>1677 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161678 ret void1679}1680 1681define void @v_shuffle_v2p0_v4p0__5_2(ptr addrspace(1) inreg %ptr) {1682; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_2:1683; GFX900: ; %bb.0:1684; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1685; GFX900-NEXT: ;;#ASMSTART1686; GFX900-NEXT: ; def v[0:7]1687; GFX900-NEXT: ;;#ASMEND1688; GFX900-NEXT: ;;#ASMSTART1689; GFX900-NEXT: ; def v[6:13]1690; GFX900-NEXT: ;;#ASMEND1691; GFX900-NEXT: v_mov_b32_e32 v14, 01692; GFX900-NEXT: v_mov_b32_e32 v10, v41693; GFX900-NEXT: v_mov_b32_e32 v11, v51694; GFX900-NEXT: global_store_dwordx4 v14, v[8:11], s[16:17]1695; GFX900-NEXT: s_waitcnt vmcnt(0)1696; GFX900-NEXT: s_setpc_b64 s[30:31]1697;1698; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_2:1699; GFX90A: ; %bb.0:1700; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1701; GFX90A-NEXT: ;;#ASMSTART1702; GFX90A-NEXT: ; def v[0:7]1703; GFX90A-NEXT: ;;#ASMEND1704; GFX90A-NEXT: ;;#ASMSTART1705; GFX90A-NEXT: ; def v[6:13]1706; GFX90A-NEXT: ;;#ASMEND1707; GFX90A-NEXT: v_mov_b32_e32 v14, 01708; GFX90A-NEXT: v_mov_b32_e32 v10, v41709; GFX90A-NEXT: v_mov_b32_e32 v11, v51710; GFX90A-NEXT: global_store_dwordx4 v14, v[8:11], s[16:17]1711; GFX90A-NEXT: s_waitcnt vmcnt(0)1712; GFX90A-NEXT: s_setpc_b64 s[30:31]1713;1714; GFX942-LABEL: v_shuffle_v2p0_v4p0__5_2:1715; GFX942: ; %bb.0:1716; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1717; GFX942-NEXT: ;;#ASMSTART1718; GFX942-NEXT: ; def v[0:7]1719; GFX942-NEXT: ;;#ASMEND1720; GFX942-NEXT: v_mov_b32_e32 v14, 01721; GFX942-NEXT: ;;#ASMSTART1722; GFX942-NEXT: ; def v[6:13]1723; GFX942-NEXT: ;;#ASMEND1724; GFX942-NEXT: s_nop 01725; GFX942-NEXT: v_mov_b32_e32 v10, v41726; GFX942-NEXT: v_mov_b32_e32 v11, v51727; GFX942-NEXT: global_store_dwordx4 v14, v[8:11], s[0:1]1728; GFX942-NEXT: s_waitcnt vmcnt(0)1729; GFX942-NEXT: s_setpc_b64 s[30:31]1730 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1731 %vec1 = call <4 x ptr> asm "; def $0", "=v"()1732 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 2>1733 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161734 ret void1735}1736 1737define void @v_shuffle_v2p0_v4p0__6_2(ptr addrspace(1) inreg %ptr) {1738; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_2:1739; GFX900: ; %bb.0:1740; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1741; GFX900-NEXT: ;;#ASMSTART1742; GFX900-NEXT: ; def v[0:7]1743; GFX900-NEXT: ;;#ASMEND1744; GFX900-NEXT: ;;#ASMSTART1745; GFX900-NEXT: ; def v[6:13]1746; GFX900-NEXT: ;;#ASMEND1747; GFX900-NEXT: v_mov_b32_e32 v14, 01748; GFX900-NEXT: v_mov_b32_e32 v12, v41749; GFX900-NEXT: v_mov_b32_e32 v13, v51750; GFX900-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]1751; GFX900-NEXT: s_waitcnt vmcnt(0)1752; GFX900-NEXT: s_setpc_b64 s[30:31]1753;1754; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_2:1755; GFX90A: ; %bb.0:1756; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1757; GFX90A-NEXT: ;;#ASMSTART1758; GFX90A-NEXT: ; def v[0:7]1759; GFX90A-NEXT: ;;#ASMEND1760; GFX90A-NEXT: ;;#ASMSTART1761; GFX90A-NEXT: ; def v[6:13]1762; GFX90A-NEXT: ;;#ASMEND1763; GFX90A-NEXT: v_mov_b32_e32 v14, 01764; GFX90A-NEXT: v_mov_b32_e32 v12, v41765; GFX90A-NEXT: v_mov_b32_e32 v13, v51766; GFX90A-NEXT: global_store_dwordx4 v14, v[10:13], s[16:17]1767; GFX90A-NEXT: s_waitcnt vmcnt(0)1768; GFX90A-NEXT: s_setpc_b64 s[30:31]1769;1770; GFX942-LABEL: v_shuffle_v2p0_v4p0__6_2:1771; GFX942: ; %bb.0:1772; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1773; GFX942-NEXT: ;;#ASMSTART1774; GFX942-NEXT: ; def v[0:7]1775; GFX942-NEXT: ;;#ASMEND1776; GFX942-NEXT: v_mov_b32_e32 v14, 01777; GFX942-NEXT: ;;#ASMSTART1778; GFX942-NEXT: ; def v[6:13]1779; GFX942-NEXT: ;;#ASMEND1780; GFX942-NEXT: s_nop 01781; GFX942-NEXT: v_mov_b32_e32 v12, v41782; GFX942-NEXT: v_mov_b32_e32 v13, v51783; GFX942-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1]1784; GFX942-NEXT: s_waitcnt vmcnt(0)1785; GFX942-NEXT: s_setpc_b64 s[30:31]1786 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1787 %vec1 = call <4 x ptr> asm "; def $0", "=v"()1788 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 2>1789 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161790 ret void1791}1792 1793define void @v_shuffle_v2p0_v4p0__u_3(ptr addrspace(1) inreg %ptr) {1794; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_3:1795; GFX900: ; %bb.0:1796; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1797; GFX900-NEXT: v_mov_b32_e32 v8, 01798; GFX900-NEXT: ;;#ASMSTART1799; GFX900-NEXT: ; def v[0:7]1800; GFX900-NEXT: ;;#ASMEND1801; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1802; GFX900-NEXT: s_waitcnt vmcnt(0)1803; GFX900-NEXT: s_setpc_b64 s[30:31]1804;1805; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_3:1806; GFX90A: ; %bb.0:1807; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1808; GFX90A-NEXT: v_mov_b32_e32 v8, 01809; GFX90A-NEXT: ;;#ASMSTART1810; GFX90A-NEXT: ; def v[0:7]1811; GFX90A-NEXT: ;;#ASMEND1812; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1813; GFX90A-NEXT: s_waitcnt vmcnt(0)1814; GFX90A-NEXT: s_setpc_b64 s[30:31]1815;1816; GFX942-LABEL: v_shuffle_v2p0_v4p0__u_3:1817; GFX942: ; %bb.0:1818; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1819; GFX942-NEXT: v_mov_b32_e32 v8, 01820; GFX942-NEXT: ;;#ASMSTART1821; GFX942-NEXT: ; def v[0:7]1822; GFX942-NEXT: ;;#ASMEND1823; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1824; GFX942-NEXT: s_waitcnt vmcnt(0)1825; GFX942-NEXT: s_setpc_b64 s[30:31]1826 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1827 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 3>1828 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161829 ret void1830}1831 1832define void @v_shuffle_v2p0_v4p0__0_3(ptr addrspace(1) inreg %ptr) {1833; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_3:1834; GFX900: ; %bb.0:1835; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1836; GFX900-NEXT: ;;#ASMSTART1837; GFX900-NEXT: ; def v[0:7]1838; GFX900-NEXT: ;;#ASMEND1839; GFX900-NEXT: v_mov_b32_e32 v8, 01840; GFX900-NEXT: v_mov_b32_e32 v2, v61841; GFX900-NEXT: v_mov_b32_e32 v3, v71842; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1843; GFX900-NEXT: s_waitcnt vmcnt(0)1844; GFX900-NEXT: s_setpc_b64 s[30:31]1845;1846; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_3:1847; GFX90A: ; %bb.0:1848; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1849; GFX90A-NEXT: ;;#ASMSTART1850; GFX90A-NEXT: ; def v[0:7]1851; GFX90A-NEXT: ;;#ASMEND1852; GFX90A-NEXT: v_mov_b32_e32 v8, 01853; GFX90A-NEXT: v_mov_b32_e32 v2, v61854; GFX90A-NEXT: v_mov_b32_e32 v3, v71855; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1856; GFX90A-NEXT: s_waitcnt vmcnt(0)1857; GFX90A-NEXT: s_setpc_b64 s[30:31]1858;1859; GFX942-LABEL: v_shuffle_v2p0_v4p0__0_3:1860; GFX942: ; %bb.0:1861; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1862; GFX942-NEXT: ;;#ASMSTART1863; GFX942-NEXT: ; def v[0:7]1864; GFX942-NEXT: ;;#ASMEND1865; GFX942-NEXT: v_mov_b32_e32 v8, 01866; GFX942-NEXT: v_mov_b32_e32 v2, v61867; GFX942-NEXT: v_mov_b32_e32 v3, v71868; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]1869; GFX942-NEXT: s_waitcnt vmcnt(0)1870; GFX942-NEXT: s_setpc_b64 s[30:31]1871 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1872 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 3>1873 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161874 ret void1875}1876 1877define void @v_shuffle_v2p0_v4p0__1_3(ptr addrspace(1) inreg %ptr) {1878; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_3:1879; GFX900: ; %bb.0:1880; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1881; GFX900-NEXT: ;;#ASMSTART1882; GFX900-NEXT: ; def v[0:7]1883; GFX900-NEXT: ;;#ASMEND1884; GFX900-NEXT: v_mov_b32_e32 v8, 01885; GFX900-NEXT: v_mov_b32_e32 v4, v61886; GFX900-NEXT: v_mov_b32_e32 v5, v71887; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1888; GFX900-NEXT: s_waitcnt vmcnt(0)1889; GFX900-NEXT: s_setpc_b64 s[30:31]1890;1891; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_3:1892; GFX90A: ; %bb.0:1893; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1894; GFX90A-NEXT: ;;#ASMSTART1895; GFX90A-NEXT: ; def v[0:7]1896; GFX90A-NEXT: ;;#ASMEND1897; GFX90A-NEXT: v_mov_b32_e32 v8, 01898; GFX90A-NEXT: v_mov_b32_e32 v4, v61899; GFX90A-NEXT: v_mov_b32_e32 v5, v71900; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1901; GFX90A-NEXT: s_waitcnt vmcnt(0)1902; GFX90A-NEXT: s_setpc_b64 s[30:31]1903;1904; GFX942-LABEL: v_shuffle_v2p0_v4p0__1_3:1905; GFX942: ; %bb.0:1906; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1907; GFX942-NEXT: ;;#ASMSTART1908; GFX942-NEXT: ; def v[0:7]1909; GFX942-NEXT: ;;#ASMEND1910; GFX942-NEXT: v_mov_b32_e32 v8, 01911; GFX942-NEXT: v_mov_b32_e32 v4, v61912; GFX942-NEXT: v_mov_b32_e32 v5, v71913; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]1914; GFX942-NEXT: s_waitcnt vmcnt(0)1915; GFX942-NEXT: s_setpc_b64 s[30:31]1916 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1917 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 3>1918 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161919 ret void1920}1921 1922define void @v_shuffle_v2p0_v4p0__2_3(ptr addrspace(1) inreg %ptr) {1923; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_3:1924; GFX900: ; %bb.0:1925; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1926; GFX900-NEXT: v_mov_b32_e32 v8, 01927; GFX900-NEXT: ;;#ASMSTART1928; GFX900-NEXT: ; def v[0:7]1929; GFX900-NEXT: ;;#ASMEND1930; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1931; GFX900-NEXT: s_waitcnt vmcnt(0)1932; GFX900-NEXT: s_setpc_b64 s[30:31]1933;1934; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_3:1935; GFX90A: ; %bb.0:1936; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1937; GFX90A-NEXT: v_mov_b32_e32 v8, 01938; GFX90A-NEXT: ;;#ASMSTART1939; GFX90A-NEXT: ; def v[0:7]1940; GFX90A-NEXT: ;;#ASMEND1941; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1942; GFX90A-NEXT: s_waitcnt vmcnt(0)1943; GFX90A-NEXT: s_setpc_b64 s[30:31]1944;1945; GFX942-LABEL: v_shuffle_v2p0_v4p0__2_3:1946; GFX942: ; %bb.0:1947; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1948; GFX942-NEXT: v_mov_b32_e32 v8, 01949; GFX942-NEXT: ;;#ASMSTART1950; GFX942-NEXT: ; def v[0:7]1951; GFX942-NEXT: ;;#ASMEND1952; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1953; GFX942-NEXT: s_waitcnt vmcnt(0)1954; GFX942-NEXT: s_setpc_b64 s[30:31]1955 %vec0 = call <4 x ptr> asm "; def $0", "=v"()1956 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 3>1957 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161958 ret void1959}1960 1961define void @v_shuffle_v2p0_v4p0__3_3(ptr addrspace(1) inreg %ptr) {1962; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_3:1963; GFX900: ; %bb.0:1964; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1965; GFX900-NEXT: v_mov_b32_e32 v10, 01966; GFX900-NEXT: ;;#ASMSTART1967; GFX900-NEXT: ; def v[0:7]1968; GFX900-NEXT: ;;#ASMEND1969; GFX900-NEXT: v_mov_b32_e32 v8, v61970; GFX900-NEXT: v_mov_b32_e32 v9, v71971; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1972; GFX900-NEXT: s_waitcnt vmcnt(0)1973; GFX900-NEXT: s_setpc_b64 s[30:31]1974;1975; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_3:1976; GFX90A: ; %bb.0:1977; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1978; GFX90A-NEXT: v_mov_b32_e32 v10, 01979; GFX90A-NEXT: ;;#ASMSTART1980; GFX90A-NEXT: ; def v[0:7]1981; GFX90A-NEXT: ;;#ASMEND1982; GFX90A-NEXT: v_mov_b32_e32 v8, v61983; GFX90A-NEXT: v_mov_b32_e32 v9, v71984; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1985; GFX90A-NEXT: s_waitcnt vmcnt(0)1986; GFX90A-NEXT: s_setpc_b64 s[30:31]1987;1988; GFX942-LABEL: v_shuffle_v2p0_v4p0__3_3:1989; GFX942: ; %bb.0:1990; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1991; GFX942-NEXT: v_mov_b32_e32 v10, 01992; GFX942-NEXT: ;;#ASMSTART1993; GFX942-NEXT: ; def v[0:7]1994; GFX942-NEXT: ;;#ASMEND1995; GFX942-NEXT: s_nop 01996; GFX942-NEXT: v_mov_b32_e32 v8, v61997; GFX942-NEXT: v_mov_b32_e32 v9, v71998; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]1999; GFX942-NEXT: s_waitcnt vmcnt(0)2000; GFX942-NEXT: s_setpc_b64 s[30:31]2001 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2002 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 3>2003 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162004 ret void2005}2006 2007define void @v_shuffle_v2p0_v4p0__4_3(ptr addrspace(1) inreg %ptr) {2008; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_3:2009; GFX900: ; %bb.0:2010; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2011; GFX900-NEXT: v_mov_b32_e32 v8, 02012; GFX900-NEXT: ;;#ASMSTART2013; GFX900-NEXT: ; def v[0:7]2014; GFX900-NEXT: ;;#ASMEND2015; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2016; GFX900-NEXT: s_waitcnt vmcnt(0)2017; GFX900-NEXT: s_setpc_b64 s[30:31]2018;2019; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_3:2020; GFX90A: ; %bb.0:2021; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2022; GFX90A-NEXT: v_mov_b32_e32 v8, 02023; GFX90A-NEXT: ;;#ASMSTART2024; GFX90A-NEXT: ; def v[0:7]2025; GFX90A-NEXT: ;;#ASMEND2026; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2027; GFX90A-NEXT: s_waitcnt vmcnt(0)2028; GFX90A-NEXT: s_setpc_b64 s[30:31]2029;2030; GFX942-LABEL: v_shuffle_v2p0_v4p0__4_3:2031; GFX942: ; %bb.0:2032; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2033; GFX942-NEXT: v_mov_b32_e32 v8, 02034; GFX942-NEXT: ;;#ASMSTART2035; GFX942-NEXT: ; def v[0:7]2036; GFX942-NEXT: ;;#ASMEND2037; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2038; GFX942-NEXT: s_waitcnt vmcnt(0)2039; GFX942-NEXT: s_setpc_b64 s[30:31]2040 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2041 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 3>2042 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162043 ret void2044}2045 2046define void @v_shuffle_v2p0_v4p0__5_3(ptr addrspace(1) inreg %ptr) {2047; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_3:2048; GFX900: ; %bb.0:2049; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2050; GFX900-NEXT: ;;#ASMSTART2051; GFX900-NEXT: ; def v[8:15]2052; GFX900-NEXT: ;;#ASMEND2053; GFX900-NEXT: v_mov_b32_e32 v16, 02054; GFX900-NEXT: ;;#ASMSTART2055; GFX900-NEXT: ; def v[0:7]2056; GFX900-NEXT: ;;#ASMEND2057; GFX900-NEXT: v_mov_b32_e32 v12, v62058; GFX900-NEXT: v_mov_b32_e32 v13, v72059; GFX900-NEXT: global_store_dwordx4 v16, v[10:13], s[16:17]2060; GFX900-NEXT: s_waitcnt vmcnt(0)2061; GFX900-NEXT: s_setpc_b64 s[30:31]2062;2063; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_3:2064; GFX90A: ; %bb.0:2065; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2066; GFX90A-NEXT: ;;#ASMSTART2067; GFX90A-NEXT: ; def v[8:15]2068; GFX90A-NEXT: ;;#ASMEND2069; GFX90A-NEXT: v_mov_b32_e32 v16, 02070; GFX90A-NEXT: ;;#ASMSTART2071; GFX90A-NEXT: ; def v[0:7]2072; GFX90A-NEXT: ;;#ASMEND2073; GFX90A-NEXT: v_mov_b32_e32 v12, v62074; GFX90A-NEXT: v_mov_b32_e32 v13, v72075; GFX90A-NEXT: global_store_dwordx4 v16, v[10:13], s[16:17]2076; GFX90A-NEXT: s_waitcnt vmcnt(0)2077; GFX90A-NEXT: s_setpc_b64 s[30:31]2078;2079; GFX942-LABEL: v_shuffle_v2p0_v4p0__5_3:2080; GFX942: ; %bb.0:2081; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2082; GFX942-NEXT: ;;#ASMSTART2083; GFX942-NEXT: ; def v[8:15]2084; GFX942-NEXT: ;;#ASMEND2085; GFX942-NEXT: v_mov_b32_e32 v16, 02086; GFX942-NEXT: ;;#ASMSTART2087; GFX942-NEXT: ; def v[0:7]2088; GFX942-NEXT: ;;#ASMEND2089; GFX942-NEXT: s_nop 02090; GFX942-NEXT: v_mov_b32_e32 v12, v62091; GFX942-NEXT: v_mov_b32_e32 v13, v72092; GFX942-NEXT: global_store_dwordx4 v16, v[10:13], s[0:1]2093; GFX942-NEXT: s_waitcnt vmcnt(0)2094; GFX942-NEXT: s_setpc_b64 s[30:31]2095 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2096 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2097 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 3>2098 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162099 ret void2100}2101 2102define void @v_shuffle_v2p0_v4p0__6_3(ptr addrspace(1) inreg %ptr) {2103; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_3:2104; GFX900: ; %bb.0:2105; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2106; GFX900-NEXT: ;;#ASMSTART2107; GFX900-NEXT: ; def v[8:15]2108; GFX900-NEXT: ;;#ASMEND2109; GFX900-NEXT: v_mov_b32_e32 v16, 02110; GFX900-NEXT: ;;#ASMSTART2111; GFX900-NEXT: ; def v[0:7]2112; GFX900-NEXT: ;;#ASMEND2113; GFX900-NEXT: v_mov_b32_e32 v14, v62114; GFX900-NEXT: v_mov_b32_e32 v15, v72115; GFX900-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]2116; GFX900-NEXT: s_waitcnt vmcnt(0)2117; GFX900-NEXT: s_setpc_b64 s[30:31]2118;2119; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_3:2120; GFX90A: ; %bb.0:2121; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2122; GFX90A-NEXT: ;;#ASMSTART2123; GFX90A-NEXT: ; def v[8:15]2124; GFX90A-NEXT: ;;#ASMEND2125; GFX90A-NEXT: v_mov_b32_e32 v16, 02126; GFX90A-NEXT: ;;#ASMSTART2127; GFX90A-NEXT: ; def v[0:7]2128; GFX90A-NEXT: ;;#ASMEND2129; GFX90A-NEXT: v_mov_b32_e32 v14, v62130; GFX90A-NEXT: v_mov_b32_e32 v15, v72131; GFX90A-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]2132; GFX90A-NEXT: s_waitcnt vmcnt(0)2133; GFX90A-NEXT: s_setpc_b64 s[30:31]2134;2135; GFX942-LABEL: v_shuffle_v2p0_v4p0__6_3:2136; GFX942: ; %bb.0:2137; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2138; GFX942-NEXT: ;;#ASMSTART2139; GFX942-NEXT: ; def v[8:15]2140; GFX942-NEXT: ;;#ASMEND2141; GFX942-NEXT: v_mov_b32_e32 v16, 02142; GFX942-NEXT: ;;#ASMSTART2143; GFX942-NEXT: ; def v[0:7]2144; GFX942-NEXT: ;;#ASMEND2145; GFX942-NEXT: s_nop 02146; GFX942-NEXT: v_mov_b32_e32 v14, v62147; GFX942-NEXT: v_mov_b32_e32 v15, v72148; GFX942-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1]2149; GFX942-NEXT: s_waitcnt vmcnt(0)2150; GFX942-NEXT: s_setpc_b64 s[30:31]2151 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2152 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2153 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 3>2154 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162155 ret void2156}2157 2158define void @v_shuffle_v2p0_v4p0__u_4(ptr addrspace(1) inreg %ptr) {2159; GFX9-LABEL: v_shuffle_v2p0_v4p0__u_4:2160; GFX9: ; %bb.0:2161; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2162; GFX9-NEXT: s_setpc_b64 s[30:31]2163 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2164 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 4>2165 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162166 ret void2167}2168 2169define void @v_shuffle_v2p0_v4p0__0_4(ptr addrspace(1) inreg %ptr) {2170; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_4:2171; GFX900: ; %bb.0:2172; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2173; GFX900-NEXT: v_mov_b32_e32 v8, 02174; GFX900-NEXT: ;;#ASMSTART2175; GFX900-NEXT: ; def v[0:7]2176; GFX900-NEXT: ;;#ASMEND2177; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]2178; GFX900-NEXT: s_waitcnt vmcnt(0)2179; GFX900-NEXT: s_setpc_b64 s[30:31]2180;2181; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_4:2182; GFX90A: ; %bb.0:2183; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2184; GFX90A-NEXT: v_mov_b32_e32 v8, 02185; GFX90A-NEXT: ;;#ASMSTART2186; GFX90A-NEXT: ; def v[0:7]2187; GFX90A-NEXT: ;;#ASMEND2188; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]2189; GFX90A-NEXT: s_waitcnt vmcnt(0)2190; GFX90A-NEXT: s_setpc_b64 s[30:31]2191;2192; GFX942-LABEL: v_shuffle_v2p0_v4p0__0_4:2193; GFX942: ; %bb.0:2194; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2195; GFX942-NEXT: v_mov_b32_e32 v8, 02196; GFX942-NEXT: ;;#ASMSTART2197; GFX942-NEXT: ; def v[0:7]2198; GFX942-NEXT: ;;#ASMEND2199; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]2200; GFX942-NEXT: s_waitcnt vmcnt(0)2201; GFX942-NEXT: s_setpc_b64 s[30:31]2202 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2203 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 4>2204 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162205 ret void2206}2207 2208define void @v_shuffle_v2p0_v4p0__1_4(ptr addrspace(1) inreg %ptr) {2209; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_4: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:7]2215; GFX900-NEXT: ;;#ASMEND2216; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2217; GFX900-NEXT: s_waitcnt vmcnt(0)2218; GFX900-NEXT: s_setpc_b64 s[30:31]2219;2220; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_4:2221; GFX90A: ; %bb.0:2222; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2223; GFX90A-NEXT: v_mov_b32_e32 v8, 02224; GFX90A-NEXT: ;;#ASMSTART2225; GFX90A-NEXT: ; def v[0:7]2226; GFX90A-NEXT: ;;#ASMEND2227; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2228; GFX90A-NEXT: s_waitcnt vmcnt(0)2229; GFX90A-NEXT: s_setpc_b64 s[30:31]2230;2231; GFX942-LABEL: v_shuffle_v2p0_v4p0__1_4:2232; GFX942: ; %bb.0:2233; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2234; GFX942-NEXT: v_mov_b32_e32 v8, 02235; GFX942-NEXT: ;;#ASMSTART2236; GFX942-NEXT: ; def v[0:7]2237; GFX942-NEXT: ;;#ASMEND2238; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2239; GFX942-NEXT: s_waitcnt vmcnt(0)2240; GFX942-NEXT: s_setpc_b64 s[30:31]2241 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2242 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 4>2243 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162244 ret void2245}2246 2247define void @v_shuffle_v2p0_v4p0__2_4(ptr addrspace(1) inreg %ptr) {2248; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_4:2249; GFX900: ; %bb.0:2250; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2251; GFX900-NEXT: v_mov_b32_e32 v8, 02252; GFX900-NEXT: ;;#ASMSTART2253; GFX900-NEXT: ; def v[0:7]2254; GFX900-NEXT: ;;#ASMEND2255; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2256; GFX900-NEXT: s_waitcnt vmcnt(0)2257; GFX900-NEXT: s_setpc_b64 s[30:31]2258;2259; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_4:2260; GFX90A: ; %bb.0:2261; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2262; GFX90A-NEXT: v_mov_b32_e32 v8, 02263; GFX90A-NEXT: ;;#ASMSTART2264; GFX90A-NEXT: ; def v[0:7]2265; GFX90A-NEXT: ;;#ASMEND2266; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2267; GFX90A-NEXT: s_waitcnt vmcnt(0)2268; GFX90A-NEXT: s_setpc_b64 s[30:31]2269;2270; GFX942-LABEL: v_shuffle_v2p0_v4p0__2_4:2271; GFX942: ; %bb.0:2272; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2273; GFX942-NEXT: v_mov_b32_e32 v8, 02274; GFX942-NEXT: ;;#ASMSTART2275; GFX942-NEXT: ; def v[0:7]2276; GFX942-NEXT: ;;#ASMEND2277; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2278; GFX942-NEXT: s_waitcnt vmcnt(0)2279; GFX942-NEXT: s_setpc_b64 s[30:31]2280 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2281 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 4>2282 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162283 ret void2284}2285 2286define void @v_shuffle_v2p0_v4p0__3_4(ptr addrspace(1) inreg %ptr) {2287; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_4:2288; GFX900: ; %bb.0:2289; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2290; GFX900-NEXT: v_mov_b32_e32 v8, 02291; GFX900-NEXT: ;;#ASMSTART2292; GFX900-NEXT: ; def v[0:7]2293; GFX900-NEXT: ;;#ASMEND2294; GFX900-NEXT: global_store_dwordx4 v8, v[6:9], s[16:17]2295; GFX900-NEXT: s_waitcnt vmcnt(0)2296; GFX900-NEXT: s_setpc_b64 s[30:31]2297;2298; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_4:2299; GFX90A: ; %bb.0:2300; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2301; GFX90A-NEXT: v_mov_b32_e32 v8, 02302; GFX90A-NEXT: ;;#ASMSTART2303; GFX90A-NEXT: ; def v[0:7]2304; GFX90A-NEXT: ;;#ASMEND2305; GFX90A-NEXT: global_store_dwordx4 v8, v[6:9], s[16:17]2306; GFX90A-NEXT: s_waitcnt vmcnt(0)2307; GFX90A-NEXT: s_setpc_b64 s[30:31]2308;2309; GFX942-LABEL: v_shuffle_v2p0_v4p0__3_4:2310; GFX942: ; %bb.0:2311; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2312; GFX942-NEXT: v_mov_b32_e32 v8, 02313; GFX942-NEXT: ;;#ASMSTART2314; GFX942-NEXT: ; def v[0:7]2315; GFX942-NEXT: ;;#ASMEND2316; GFX942-NEXT: global_store_dwordx4 v8, v[6:9], s[0:1]2317; GFX942-NEXT: s_waitcnt vmcnt(0)2318; GFX942-NEXT: s_setpc_b64 s[30:31]2319 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2320 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 4>2321 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162322 ret void2323}2324 2325define void @v_shuffle_v2p0_v4p0__4_4(ptr addrspace(1) inreg %ptr) {2326; GFX9-LABEL: v_shuffle_v2p0_v4p0__4_4:2327; GFX9: ; %bb.0:2328; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2329; GFX9-NEXT: s_setpc_b64 s[30:31]2330 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2331 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 4>2332 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162333 ret void2334}2335 2336define void @v_shuffle_v2p0_v4p0__5_4(ptr addrspace(1) inreg %ptr) {2337; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_4:2338; GFX900: ; %bb.0:2339; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2340; GFX900-NEXT: ;;#ASMSTART2341; GFX900-NEXT: ; def v[0:7]2342; GFX900-NEXT: ;;#ASMEND2343; GFX900-NEXT: v_mov_b32_e32 v8, 02344; GFX900-NEXT: v_mov_b32_e32 v4, v02345; GFX900-NEXT: v_mov_b32_e32 v5, v12346; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2347; GFX900-NEXT: s_waitcnt vmcnt(0)2348; GFX900-NEXT: s_setpc_b64 s[30:31]2349;2350; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_4:2351; GFX90A: ; %bb.0:2352; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2353; GFX90A-NEXT: ;;#ASMSTART2354; GFX90A-NEXT: ; def v[0:7]2355; GFX90A-NEXT: ;;#ASMEND2356; GFX90A-NEXT: v_mov_b32_e32 v8, 02357; GFX90A-NEXT: v_mov_b32_e32 v4, v02358; GFX90A-NEXT: v_mov_b32_e32 v5, v12359; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2360; GFX90A-NEXT: s_waitcnt vmcnt(0)2361; GFX90A-NEXT: s_setpc_b64 s[30:31]2362;2363; GFX942-LABEL: v_shuffle_v2p0_v4p0__5_4:2364; GFX942: ; %bb.0:2365; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2366; GFX942-NEXT: ;;#ASMSTART2367; GFX942-NEXT: ; def v[0:7]2368; GFX942-NEXT: ;;#ASMEND2369; GFX942-NEXT: v_mov_b32_e32 v8, 02370; GFX942-NEXT: v_mov_b32_e32 v4, v02371; GFX942-NEXT: v_mov_b32_e32 v5, v12372; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2373; GFX942-NEXT: s_waitcnt vmcnt(0)2374; GFX942-NEXT: s_setpc_b64 s[30:31]2375 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2376 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2377 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 4>2378 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162379 ret void2380}2381 2382define void @v_shuffle_v2p0_v4p0__6_4(ptr addrspace(1) inreg %ptr) {2383; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_4:2384; GFX900: ; %bb.0:2385; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2386; GFX900-NEXT: ;;#ASMSTART2387; GFX900-NEXT: ; def v[0:7]2388; GFX900-NEXT: ;;#ASMEND2389; GFX900-NEXT: v_mov_b32_e32 v8, 02390; GFX900-NEXT: v_mov_b32_e32 v6, v02391; GFX900-NEXT: v_mov_b32_e32 v7, v12392; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2393; GFX900-NEXT: s_waitcnt vmcnt(0)2394; GFX900-NEXT: s_setpc_b64 s[30:31]2395;2396; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_4:2397; GFX90A: ; %bb.0:2398; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2399; GFX90A-NEXT: ;;#ASMSTART2400; GFX90A-NEXT: ; def v[0:7]2401; GFX90A-NEXT: ;;#ASMEND2402; GFX90A-NEXT: v_mov_b32_e32 v8, 02403; GFX90A-NEXT: v_mov_b32_e32 v6, v02404; GFX90A-NEXT: v_mov_b32_e32 v7, v12405; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2406; GFX90A-NEXT: s_waitcnt vmcnt(0)2407; GFX90A-NEXT: s_setpc_b64 s[30:31]2408;2409; GFX942-LABEL: v_shuffle_v2p0_v4p0__6_4:2410; GFX942: ; %bb.0:2411; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2412; GFX942-NEXT: ;;#ASMSTART2413; GFX942-NEXT: ; def v[0:7]2414; GFX942-NEXT: ;;#ASMEND2415; GFX942-NEXT: v_mov_b32_e32 v8, 02416; GFX942-NEXT: v_mov_b32_e32 v6, v02417; GFX942-NEXT: v_mov_b32_e32 v7, v12418; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2419; GFX942-NEXT: s_waitcnt vmcnt(0)2420; GFX942-NEXT: s_setpc_b64 s[30:31]2421 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2422 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2423 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 4>2424 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162425 ret void2426}2427 2428define void @v_shuffle_v2p0_v4p0__u_5(ptr addrspace(1) inreg %ptr) {2429; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_5:2430; GFX900: ; %bb.0:2431; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2432; GFX900-NEXT: v_mov_b32_e32 v8, 02433; GFX900-NEXT: ;;#ASMSTART2434; GFX900-NEXT: ; def v[0:7]2435; GFX900-NEXT: ;;#ASMEND2436; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]2437; GFX900-NEXT: s_waitcnt vmcnt(0)2438; GFX900-NEXT: s_setpc_b64 s[30:31]2439;2440; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_5:2441; GFX90A: ; %bb.0:2442; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2443; GFX90A-NEXT: v_mov_b32_e32 v8, 02444; GFX90A-NEXT: ;;#ASMSTART2445; GFX90A-NEXT: ; def v[0:7]2446; GFX90A-NEXT: ;;#ASMEND2447; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]2448; GFX90A-NEXT: s_waitcnt vmcnt(0)2449; GFX90A-NEXT: s_setpc_b64 s[30:31]2450;2451; GFX942-LABEL: v_shuffle_v2p0_v4p0__u_5:2452; GFX942: ; %bb.0:2453; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2454; GFX942-NEXT: v_mov_b32_e32 v8, 02455; GFX942-NEXT: ;;#ASMSTART2456; GFX942-NEXT: ; def v[0:7]2457; GFX942-NEXT: ;;#ASMEND2458; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]2459; GFX942-NEXT: s_waitcnt vmcnt(0)2460; GFX942-NEXT: s_setpc_b64 s[30:31]2461 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2462 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2463 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>2464 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162465 ret void2466}2467 2468define void @v_shuffle_v2p0_v4p0__0_5(ptr addrspace(1) inreg %ptr) {2469; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_5:2470; GFX900: ; %bb.0:2471; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2472; GFX900-NEXT: ;;#ASMSTART2473; GFX900-NEXT: ; def v[0:7]2474; GFX900-NEXT: ;;#ASMEND2475; GFX900-NEXT: ;;#ASMSTART2476; GFX900-NEXT: ; def v[2:9]2477; GFX900-NEXT: ;;#ASMEND2478; GFX900-NEXT: v_mov_b32_e32 v10, 02479; GFX900-NEXT: v_mov_b32_e32 v2, v42480; GFX900-NEXT: v_mov_b32_e32 v3, v52481; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17]2482; GFX900-NEXT: s_waitcnt vmcnt(0)2483; GFX900-NEXT: s_setpc_b64 s[30:31]2484;2485; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_5:2486; GFX90A: ; %bb.0:2487; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2488; GFX90A-NEXT: ;;#ASMSTART2489; GFX90A-NEXT: ; def v[0:7]2490; GFX90A-NEXT: ;;#ASMEND2491; GFX90A-NEXT: ;;#ASMSTART2492; GFX90A-NEXT: ; def v[2:9]2493; GFX90A-NEXT: ;;#ASMEND2494; GFX90A-NEXT: v_mov_b32_e32 v10, 02495; GFX90A-NEXT: v_mov_b32_e32 v2, v42496; GFX90A-NEXT: v_mov_b32_e32 v3, v52497; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17]2498; GFX90A-NEXT: s_waitcnt vmcnt(0)2499; GFX90A-NEXT: s_setpc_b64 s[30:31]2500;2501; GFX942-LABEL: v_shuffle_v2p0_v4p0__0_5:2502; GFX942: ; %bb.0:2503; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2504; GFX942-NEXT: ;;#ASMSTART2505; GFX942-NEXT: ; def v[0:7]2506; GFX942-NEXT: ;;#ASMEND2507; GFX942-NEXT: v_mov_b32_e32 v10, 02508; GFX942-NEXT: ;;#ASMSTART2509; GFX942-NEXT: ; def v[2:9]2510; GFX942-NEXT: ;;#ASMEND2511; GFX942-NEXT: s_nop 02512; GFX942-NEXT: v_mov_b32_e32 v2, v42513; GFX942-NEXT: v_mov_b32_e32 v3, v52514; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1]2515; GFX942-NEXT: s_waitcnt vmcnt(0)2516; GFX942-NEXT: s_setpc_b64 s[30:31]2517 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2518 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2519 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 5>2520 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162521 ret void2522}2523 2524define void @v_shuffle_v2p0_v4p0__1_5(ptr addrspace(1) inreg %ptr) {2525; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_5:2526; GFX900: ; %bb.0:2527; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2528; GFX900-NEXT: ;;#ASMSTART2529; GFX900-NEXT: ; def v[0:7]2530; GFX900-NEXT: ;;#ASMEND2531; GFX900-NEXT: ;;#ASMSTART2532; GFX900-NEXT: ; def v[4:11]2533; GFX900-NEXT: ;;#ASMEND2534; GFX900-NEXT: v_mov_b32_e32 v12, 02535; GFX900-NEXT: v_mov_b32_e32 v4, v62536; GFX900-NEXT: v_mov_b32_e32 v5, v72537; GFX900-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17]2538; GFX900-NEXT: s_waitcnt vmcnt(0)2539; GFX900-NEXT: s_setpc_b64 s[30:31]2540;2541; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_5:2542; GFX90A: ; %bb.0:2543; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2544; GFX90A-NEXT: ;;#ASMSTART2545; GFX90A-NEXT: ; def v[0:7]2546; GFX90A-NEXT: ;;#ASMEND2547; GFX90A-NEXT: ;;#ASMSTART2548; GFX90A-NEXT: ; def v[4:11]2549; GFX90A-NEXT: ;;#ASMEND2550; GFX90A-NEXT: v_mov_b32_e32 v12, 02551; GFX90A-NEXT: v_mov_b32_e32 v4, v62552; GFX90A-NEXT: v_mov_b32_e32 v5, v72553; GFX90A-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17]2554; GFX90A-NEXT: s_waitcnt vmcnt(0)2555; GFX90A-NEXT: s_setpc_b64 s[30:31]2556;2557; GFX942-LABEL: v_shuffle_v2p0_v4p0__1_5:2558; GFX942: ; %bb.0:2559; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2560; GFX942-NEXT: ;;#ASMSTART2561; GFX942-NEXT: ; def v[0:7]2562; GFX942-NEXT: ;;#ASMEND2563; GFX942-NEXT: v_mov_b32_e32 v12, 02564; GFX942-NEXT: ;;#ASMSTART2565; GFX942-NEXT: ; def v[4:11]2566; GFX942-NEXT: ;;#ASMEND2567; GFX942-NEXT: s_nop 02568; GFX942-NEXT: v_mov_b32_e32 v4, v62569; GFX942-NEXT: v_mov_b32_e32 v5, v72570; GFX942-NEXT: global_store_dwordx4 v12, v[2:5], s[0:1]2571; GFX942-NEXT: s_waitcnt vmcnt(0)2572; GFX942-NEXT: s_setpc_b64 s[30:31]2573 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2574 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2575 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 5>2576 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162577 ret void2578}2579 2580define void @v_shuffle_v2p0_v4p0__2_5(ptr addrspace(1) inreg %ptr) {2581; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_5:2582; GFX900: ; %bb.0:2583; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2584; GFX900-NEXT: ;;#ASMSTART2585; GFX900-NEXT: ; def v[0:7]2586; GFX900-NEXT: ;;#ASMEND2587; GFX900-NEXT: ;;#ASMSTART2588; GFX900-NEXT: ; def v[6:13]2589; GFX900-NEXT: ;;#ASMEND2590; GFX900-NEXT: v_mov_b32_e32 v14, 02591; GFX900-NEXT: v_mov_b32_e32 v6, v82592; GFX900-NEXT: v_mov_b32_e32 v7, v92593; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]2594; GFX900-NEXT: s_waitcnt vmcnt(0)2595; GFX900-NEXT: s_setpc_b64 s[30:31]2596;2597; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_5:2598; GFX90A: ; %bb.0:2599; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2600; GFX90A-NEXT: ;;#ASMSTART2601; GFX90A-NEXT: ; def v[0:7]2602; GFX90A-NEXT: ;;#ASMEND2603; GFX90A-NEXT: ;;#ASMSTART2604; GFX90A-NEXT: ; def v[6:13]2605; GFX90A-NEXT: ;;#ASMEND2606; GFX90A-NEXT: v_mov_b32_e32 v14, 02607; GFX90A-NEXT: v_mov_b32_e32 v6, v82608; GFX90A-NEXT: v_mov_b32_e32 v7, v92609; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]2610; GFX90A-NEXT: s_waitcnt vmcnt(0)2611; GFX90A-NEXT: s_setpc_b64 s[30:31]2612;2613; GFX942-LABEL: v_shuffle_v2p0_v4p0__2_5:2614; GFX942: ; %bb.0:2615; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2616; GFX942-NEXT: ;;#ASMSTART2617; GFX942-NEXT: ; def v[0:7]2618; GFX942-NEXT: ;;#ASMEND2619; GFX942-NEXT: v_mov_b32_e32 v14, 02620; GFX942-NEXT: ;;#ASMSTART2621; GFX942-NEXT: ; def v[6:13]2622; GFX942-NEXT: ;;#ASMEND2623; GFX942-NEXT: s_nop 02624; GFX942-NEXT: v_mov_b32_e32 v6, v82625; GFX942-NEXT: v_mov_b32_e32 v7, v92626; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1]2627; GFX942-NEXT: s_waitcnt vmcnt(0)2628; GFX942-NEXT: s_setpc_b64 s[30:31]2629 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2630 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2631 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 5>2632 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162633 ret void2634}2635 2636define void @v_shuffle_v2p0_v4p0__3_5(ptr addrspace(1) inreg %ptr) {2637; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_5:2638; GFX900: ; %bb.0:2639; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2640; GFX900-NEXT: ;;#ASMSTART2641; GFX900-NEXT: ; def v[8:15]2642; GFX900-NEXT: ;;#ASMEND2643; GFX900-NEXT: v_mov_b32_e32 v16, 02644; GFX900-NEXT: v_mov_b32_e32 v8, v102645; GFX900-NEXT: v_mov_b32_e32 v9, v112646; GFX900-NEXT: ;;#ASMSTART2647; GFX900-NEXT: ; def v[0:7]2648; GFX900-NEXT: ;;#ASMEND2649; GFX900-NEXT: global_store_dwordx4 v16, v[6:9], s[16:17]2650; GFX900-NEXT: s_waitcnt vmcnt(0)2651; GFX900-NEXT: s_setpc_b64 s[30:31]2652;2653; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_5:2654; GFX90A: ; %bb.0:2655; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2656; GFX90A-NEXT: ;;#ASMSTART2657; GFX90A-NEXT: ; def v[8:15]2658; GFX90A-NEXT: ;;#ASMEND2659; GFX90A-NEXT: v_mov_b32_e32 v16, 02660; GFX90A-NEXT: v_mov_b32_e32 v8, v102661; GFX90A-NEXT: v_mov_b32_e32 v9, v112662; GFX90A-NEXT: ;;#ASMSTART2663; GFX90A-NEXT: ; def v[0:7]2664; GFX90A-NEXT: ;;#ASMEND2665; GFX90A-NEXT: global_store_dwordx4 v16, v[6:9], s[16:17]2666; GFX90A-NEXT: s_waitcnt vmcnt(0)2667; GFX90A-NEXT: s_setpc_b64 s[30:31]2668;2669; GFX942-LABEL: v_shuffle_v2p0_v4p0__3_5:2670; GFX942: ; %bb.0:2671; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2672; GFX942-NEXT: ;;#ASMSTART2673; GFX942-NEXT: ; def v[8:15]2674; GFX942-NEXT: ;;#ASMEND2675; GFX942-NEXT: v_mov_b32_e32 v16, 02676; GFX942-NEXT: v_mov_b32_e32 v8, v102677; GFX942-NEXT: v_mov_b32_e32 v9, v112678; GFX942-NEXT: ;;#ASMSTART2679; GFX942-NEXT: ; def v[0:7]2680; GFX942-NEXT: ;;#ASMEND2681; GFX942-NEXT: global_store_dwordx4 v16, v[6:9], s[0:1]2682; GFX942-NEXT: s_waitcnt vmcnt(0)2683; GFX942-NEXT: s_setpc_b64 s[30:31]2684 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2685 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2686 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 5>2687 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162688 ret void2689}2690 2691define void @v_shuffle_v2p0_v4p0__4_5(ptr addrspace(1) inreg %ptr) {2692; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_5:2693; GFX900: ; %bb.0:2694; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2695; GFX900-NEXT: v_mov_b32_e32 v8, 02696; GFX900-NEXT: ;;#ASMSTART2697; GFX900-NEXT: ; def v[0:7]2698; GFX900-NEXT: ;;#ASMEND2699; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]2700; GFX900-NEXT: s_waitcnt vmcnt(0)2701; GFX900-NEXT: s_setpc_b64 s[30:31]2702;2703; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_5:2704; GFX90A: ; %bb.0:2705; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2706; GFX90A-NEXT: v_mov_b32_e32 v8, 02707; GFX90A-NEXT: ;;#ASMSTART2708; GFX90A-NEXT: ; def v[0:7]2709; GFX90A-NEXT: ;;#ASMEND2710; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]2711; GFX90A-NEXT: s_waitcnt vmcnt(0)2712; GFX90A-NEXT: s_setpc_b64 s[30:31]2713;2714; GFX942-LABEL: v_shuffle_v2p0_v4p0__4_5:2715; GFX942: ; %bb.0:2716; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2717; GFX942-NEXT: v_mov_b32_e32 v8, 02718; GFX942-NEXT: ;;#ASMSTART2719; GFX942-NEXT: ; def v[0:7]2720; GFX942-NEXT: ;;#ASMEND2721; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]2722; GFX942-NEXT: s_waitcnt vmcnt(0)2723; GFX942-NEXT: s_setpc_b64 s[30:31]2724 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2725 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2726 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 5>2727 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162728 ret void2729}2730 2731define void @v_shuffle_v2p0_v4p0__5_5(ptr addrspace(1) inreg %ptr) {2732; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_5:2733; GFX900: ; %bb.0:2734; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2735; GFX900-NEXT: ;;#ASMSTART2736; GFX900-NEXT: ; def v[0:7]2737; GFX900-NEXT: ;;#ASMEND2738; GFX900-NEXT: v_mov_b32_e32 v8, 02739; GFX900-NEXT: v_mov_b32_e32 v4, v22740; GFX900-NEXT: v_mov_b32_e32 v5, v32741; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2742; GFX900-NEXT: s_waitcnt vmcnt(0)2743; GFX900-NEXT: s_setpc_b64 s[30:31]2744;2745; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_5:2746; GFX90A: ; %bb.0:2747; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2748; GFX90A-NEXT: ;;#ASMSTART2749; GFX90A-NEXT: ; def v[0:7]2750; GFX90A-NEXT: ;;#ASMEND2751; GFX90A-NEXT: v_mov_b32_e32 v8, 02752; GFX90A-NEXT: v_mov_b32_e32 v4, v22753; GFX90A-NEXT: v_mov_b32_e32 v5, v32754; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2755; GFX90A-NEXT: s_waitcnt vmcnt(0)2756; GFX90A-NEXT: s_setpc_b64 s[30:31]2757;2758; GFX942-LABEL: v_shuffle_v2p0_v4p0__5_5:2759; GFX942: ; %bb.0:2760; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2761; GFX942-NEXT: ;;#ASMSTART2762; GFX942-NEXT: ; def v[0:7]2763; GFX942-NEXT: ;;#ASMEND2764; GFX942-NEXT: v_mov_b32_e32 v8, 02765; GFX942-NEXT: v_mov_b32_e32 v4, v22766; GFX942-NEXT: v_mov_b32_e32 v5, v32767; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2768; GFX942-NEXT: s_waitcnt vmcnt(0)2769; GFX942-NEXT: s_setpc_b64 s[30:31]2770 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2771 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2772 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 5>2773 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162774 ret void2775}2776 2777define void @v_shuffle_v2p0_v4p0__6_5(ptr addrspace(1) inreg %ptr) {2778; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_5:2779; GFX900: ; %bb.0:2780; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2781; GFX900-NEXT: ;;#ASMSTART2782; GFX900-NEXT: ; def v[0:7]2783; GFX900-NEXT: ;;#ASMEND2784; GFX900-NEXT: v_mov_b32_e32 v8, 02785; GFX900-NEXT: v_mov_b32_e32 v6, v22786; GFX900-NEXT: v_mov_b32_e32 v7, v32787; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2788; GFX900-NEXT: s_waitcnt vmcnt(0)2789; GFX900-NEXT: s_setpc_b64 s[30:31]2790;2791; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_5:2792; GFX90A: ; %bb.0:2793; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2794; GFX90A-NEXT: ;;#ASMSTART2795; GFX90A-NEXT: ; def v[0:7]2796; GFX90A-NEXT: ;;#ASMEND2797; GFX90A-NEXT: v_mov_b32_e32 v8, 02798; GFX90A-NEXT: v_mov_b32_e32 v6, v22799; GFX90A-NEXT: v_mov_b32_e32 v7, v32800; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2801; GFX90A-NEXT: s_waitcnt vmcnt(0)2802; GFX90A-NEXT: s_setpc_b64 s[30:31]2803;2804; GFX942-LABEL: v_shuffle_v2p0_v4p0__6_5:2805; GFX942: ; %bb.0:2806; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2807; GFX942-NEXT: ;;#ASMSTART2808; GFX942-NEXT: ; def v[0:7]2809; GFX942-NEXT: ;;#ASMEND2810; GFX942-NEXT: v_mov_b32_e32 v8, 02811; GFX942-NEXT: v_mov_b32_e32 v6, v22812; GFX942-NEXT: v_mov_b32_e32 v7, v32813; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2814; GFX942-NEXT: s_waitcnt vmcnt(0)2815; GFX942-NEXT: s_setpc_b64 s[30:31]2816 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2817 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2818 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 5>2819 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162820 ret void2821}2822 2823define void @v_shuffle_v2p0_v4p0__u_6(ptr addrspace(1) inreg %ptr) {2824; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_6:2825; GFX900: ; %bb.0:2826; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2827; GFX900-NEXT: v_mov_b32_e32 v8, 02828; GFX900-NEXT: ;;#ASMSTART2829; GFX900-NEXT: ; def v[0:7]2830; GFX900-NEXT: ;;#ASMEND2831; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2832; GFX900-NEXT: s_waitcnt vmcnt(0)2833; GFX900-NEXT: s_setpc_b64 s[30:31]2834;2835; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_6:2836; GFX90A: ; %bb.0:2837; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2838; GFX90A-NEXT: v_mov_b32_e32 v8, 02839; GFX90A-NEXT: ;;#ASMSTART2840; GFX90A-NEXT: ; def v[0:7]2841; GFX90A-NEXT: ;;#ASMEND2842; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]2843; GFX90A-NEXT: s_waitcnt vmcnt(0)2844; GFX90A-NEXT: s_setpc_b64 s[30:31]2845;2846; GFX942-LABEL: v_shuffle_v2p0_v4p0__u_6:2847; GFX942: ; %bb.0:2848; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2849; GFX942-NEXT: v_mov_b32_e32 v8, 02850; GFX942-NEXT: ;;#ASMSTART2851; GFX942-NEXT: ; def v[0:7]2852; GFX942-NEXT: ;;#ASMEND2853; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]2854; GFX942-NEXT: s_waitcnt vmcnt(0)2855; GFX942-NEXT: s_setpc_b64 s[30:31]2856 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2857 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2858 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 6>2859 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162860 ret void2861}2862 2863define void @v_shuffle_v2p0_v4p0__0_6(ptr addrspace(1) inreg %ptr) {2864; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_6:2865; GFX900: ; %bb.0:2866; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2867; GFX900-NEXT: ;;#ASMSTART2868; GFX900-NEXT: ; def v[0:7]2869; GFX900-NEXT: ;;#ASMEND2870; GFX900-NEXT: ;;#ASMSTART2871; GFX900-NEXT: ; def v[2:9]2872; GFX900-NEXT: ;;#ASMEND2873; GFX900-NEXT: v_mov_b32_e32 v10, 02874; GFX900-NEXT: v_mov_b32_e32 v2, v62875; GFX900-NEXT: v_mov_b32_e32 v3, v72876; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17]2877; GFX900-NEXT: s_waitcnt vmcnt(0)2878; GFX900-NEXT: s_setpc_b64 s[30:31]2879;2880; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_6:2881; GFX90A: ; %bb.0:2882; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2883; GFX90A-NEXT: ;;#ASMSTART2884; GFX90A-NEXT: ; def v[0:7]2885; GFX90A-NEXT: ;;#ASMEND2886; GFX90A-NEXT: ;;#ASMSTART2887; GFX90A-NEXT: ; def v[2:9]2888; GFX90A-NEXT: ;;#ASMEND2889; GFX90A-NEXT: v_mov_b32_e32 v10, 02890; GFX90A-NEXT: v_mov_b32_e32 v2, v62891; GFX90A-NEXT: v_mov_b32_e32 v3, v72892; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17]2893; GFX90A-NEXT: s_waitcnt vmcnt(0)2894; GFX90A-NEXT: s_setpc_b64 s[30:31]2895;2896; GFX942-LABEL: v_shuffle_v2p0_v4p0__0_6:2897; GFX942: ; %bb.0:2898; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2899; GFX942-NEXT: ;;#ASMSTART2900; GFX942-NEXT: ; def v[0:7]2901; GFX942-NEXT: ;;#ASMEND2902; GFX942-NEXT: v_mov_b32_e32 v10, 02903; GFX942-NEXT: ;;#ASMSTART2904; GFX942-NEXT: ; def v[2:9]2905; GFX942-NEXT: ;;#ASMEND2906; GFX942-NEXT: s_nop 02907; GFX942-NEXT: v_mov_b32_e32 v2, v62908; GFX942-NEXT: v_mov_b32_e32 v3, v72909; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1]2910; GFX942-NEXT: s_waitcnt vmcnt(0)2911; GFX942-NEXT: s_setpc_b64 s[30:31]2912 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2913 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2914 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 6>2915 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162916 ret void2917}2918 2919define void @v_shuffle_v2p0_v4p0__1_6(ptr addrspace(1) inreg %ptr) {2920; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_6:2921; GFX900: ; %bb.0:2922; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2923; GFX900-NEXT: ;;#ASMSTART2924; GFX900-NEXT: ; def v[0:7]2925; GFX900-NEXT: ;;#ASMEND2926; GFX900-NEXT: ;;#ASMSTART2927; GFX900-NEXT: ; def v[4:11]2928; GFX900-NEXT: ;;#ASMEND2929; GFX900-NEXT: v_mov_b32_e32 v12, 02930; GFX900-NEXT: v_mov_b32_e32 v4, v82931; GFX900-NEXT: v_mov_b32_e32 v5, v92932; GFX900-NEXT: global_store_dwordx4 v12, v[2:5], 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_v2p0_v4p0__1_6:2937; GFX90A: ; %bb.0:2938; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2939; GFX90A-NEXT: ;;#ASMSTART2940; GFX90A-NEXT: ; def v[0:7]2941; GFX90A-NEXT: ;;#ASMEND2942; GFX90A-NEXT: ;;#ASMSTART2943; GFX90A-NEXT: ; def v[4:11]2944; GFX90A-NEXT: ;;#ASMEND2945; GFX90A-NEXT: v_mov_b32_e32 v12, 02946; GFX90A-NEXT: v_mov_b32_e32 v4, v82947; GFX90A-NEXT: v_mov_b32_e32 v5, v92948; GFX90A-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17]2949; GFX90A-NEXT: s_waitcnt vmcnt(0)2950; GFX90A-NEXT: s_setpc_b64 s[30:31]2951;2952; GFX942-LABEL: v_shuffle_v2p0_v4p0__1_6:2953; GFX942: ; %bb.0:2954; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2955; GFX942-NEXT: ;;#ASMSTART2956; GFX942-NEXT: ; def v[0:7]2957; GFX942-NEXT: ;;#ASMEND2958; GFX942-NEXT: v_mov_b32_e32 v12, 02959; GFX942-NEXT: ;;#ASMSTART2960; GFX942-NEXT: ; def v[4:11]2961; GFX942-NEXT: ;;#ASMEND2962; GFX942-NEXT: s_nop 02963; GFX942-NEXT: v_mov_b32_e32 v4, v82964; GFX942-NEXT: v_mov_b32_e32 v5, v92965; GFX942-NEXT: global_store_dwordx4 v12, v[2:5], s[0:1]2966; GFX942-NEXT: s_waitcnt vmcnt(0)2967; GFX942-NEXT: s_setpc_b64 s[30:31]2968 %vec0 = call <4 x ptr> asm "; def $0", "=v"()2969 %vec1 = call <4 x ptr> asm "; def $0", "=v"()2970 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 6>2971 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162972 ret void2973}2974 2975define void @v_shuffle_v2p0_v4p0__2_6(ptr addrspace(1) inreg %ptr) {2976; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_6:2977; GFX900: ; %bb.0:2978; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2979; GFX900-NEXT: ;;#ASMSTART2980; GFX900-NEXT: ; def v[0:7]2981; GFX900-NEXT: ;;#ASMEND2982; GFX900-NEXT: ;;#ASMSTART2983; GFX900-NEXT: ; def v[6:13]2984; GFX900-NEXT: ;;#ASMEND2985; GFX900-NEXT: v_mov_b32_e32 v14, 02986; GFX900-NEXT: v_mov_b32_e32 v6, v102987; GFX900-NEXT: v_mov_b32_e32 v7, v112988; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]2989; GFX900-NEXT: s_waitcnt vmcnt(0)2990; GFX900-NEXT: s_setpc_b64 s[30:31]2991;2992; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_6:2993; GFX90A: ; %bb.0:2994; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2995; GFX90A-NEXT: ;;#ASMSTART2996; GFX90A-NEXT: ; def v[0:7]2997; GFX90A-NEXT: ;;#ASMEND2998; GFX90A-NEXT: ;;#ASMSTART2999; GFX90A-NEXT: ; def v[6:13]3000; GFX90A-NEXT: ;;#ASMEND3001; GFX90A-NEXT: v_mov_b32_e32 v14, 03002; GFX90A-NEXT: v_mov_b32_e32 v6, v103003; GFX90A-NEXT: v_mov_b32_e32 v7, v113004; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]3005; GFX90A-NEXT: s_waitcnt vmcnt(0)3006; GFX90A-NEXT: s_setpc_b64 s[30:31]3007;3008; GFX942-LABEL: v_shuffle_v2p0_v4p0__2_6:3009; GFX942: ; %bb.0:3010; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3011; GFX942-NEXT: ;;#ASMSTART3012; GFX942-NEXT: ; def v[0:7]3013; GFX942-NEXT: ;;#ASMEND3014; GFX942-NEXT: v_mov_b32_e32 v14, 03015; GFX942-NEXT: ;;#ASMSTART3016; GFX942-NEXT: ; def v[6:13]3017; GFX942-NEXT: ;;#ASMEND3018; GFX942-NEXT: s_nop 03019; GFX942-NEXT: v_mov_b32_e32 v6, v103020; GFX942-NEXT: v_mov_b32_e32 v7, v113021; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1]3022; GFX942-NEXT: s_waitcnt vmcnt(0)3023; GFX942-NEXT: s_setpc_b64 s[30:31]3024 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3025 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3026 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 6>3027 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163028 ret void3029}3030 3031define void @v_shuffle_v2p0_v4p0__3_6(ptr addrspace(1) inreg %ptr) {3032; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_6:3033; GFX900: ; %bb.0:3034; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3035; GFX900-NEXT: ;;#ASMSTART3036; GFX900-NEXT: ; def v[8:15]3037; GFX900-NEXT: ;;#ASMEND3038; GFX900-NEXT: v_mov_b32_e32 v16, 03039; GFX900-NEXT: v_mov_b32_e32 v8, v123040; GFX900-NEXT: v_mov_b32_e32 v9, v133041; GFX900-NEXT: ;;#ASMSTART3042; GFX900-NEXT: ; def v[0:7]3043; GFX900-NEXT: ;;#ASMEND3044; GFX900-NEXT: global_store_dwordx4 v16, v[6:9], s[16:17]3045; GFX900-NEXT: s_waitcnt vmcnt(0)3046; GFX900-NEXT: s_setpc_b64 s[30:31]3047;3048; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_6:3049; GFX90A: ; %bb.0:3050; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3051; GFX90A-NEXT: ;;#ASMSTART3052; GFX90A-NEXT: ; def v[8:15]3053; GFX90A-NEXT: ;;#ASMEND3054; GFX90A-NEXT: v_mov_b32_e32 v16, 03055; GFX90A-NEXT: v_mov_b32_e32 v8, v123056; GFX90A-NEXT: v_mov_b32_e32 v9, v133057; GFX90A-NEXT: ;;#ASMSTART3058; GFX90A-NEXT: ; def v[0:7]3059; GFX90A-NEXT: ;;#ASMEND3060; GFX90A-NEXT: global_store_dwordx4 v16, v[6:9], s[16:17]3061; GFX90A-NEXT: s_waitcnt vmcnt(0)3062; GFX90A-NEXT: s_setpc_b64 s[30:31]3063;3064; GFX942-LABEL: v_shuffle_v2p0_v4p0__3_6:3065; GFX942: ; %bb.0:3066; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3067; GFX942-NEXT: ;;#ASMSTART3068; GFX942-NEXT: ; def v[8:15]3069; GFX942-NEXT: ;;#ASMEND3070; GFX942-NEXT: v_mov_b32_e32 v16, 03071; GFX942-NEXT: v_mov_b32_e32 v8, v123072; GFX942-NEXT: v_mov_b32_e32 v9, v133073; GFX942-NEXT: ;;#ASMSTART3074; GFX942-NEXT: ; def v[0:7]3075; GFX942-NEXT: ;;#ASMEND3076; GFX942-NEXT: global_store_dwordx4 v16, v[6:9], s[0:1]3077; GFX942-NEXT: s_waitcnt vmcnt(0)3078; GFX942-NEXT: s_setpc_b64 s[30:31]3079 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3080 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3081 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 6>3082 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163083 ret void3084}3085 3086define void @v_shuffle_v2p0_v4p0__4_6(ptr addrspace(1) inreg %ptr) {3087; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_6:3088; GFX900: ; %bb.0:3089; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3090; GFX900-NEXT: ;;#ASMSTART3091; GFX900-NEXT: ; def v[0:7]3092; GFX900-NEXT: ;;#ASMEND3093; GFX900-NEXT: v_mov_b32_e32 v8, 03094; GFX900-NEXT: v_mov_b32_e32 v2, v43095; GFX900-NEXT: v_mov_b32_e32 v3, v53096; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3097; GFX900-NEXT: s_waitcnt vmcnt(0)3098; GFX900-NEXT: s_setpc_b64 s[30:31]3099;3100; GFX90A-LABEL: v_shuffle_v2p0_v4p0__4_6:3101; GFX90A: ; %bb.0:3102; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3103; GFX90A-NEXT: ;;#ASMSTART3104; GFX90A-NEXT: ; def v[0:7]3105; GFX90A-NEXT: ;;#ASMEND3106; GFX90A-NEXT: v_mov_b32_e32 v8, 03107; GFX90A-NEXT: v_mov_b32_e32 v2, v43108; GFX90A-NEXT: v_mov_b32_e32 v3, v53109; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3110; GFX90A-NEXT: s_waitcnt vmcnt(0)3111; GFX90A-NEXT: s_setpc_b64 s[30:31]3112;3113; GFX942-LABEL: v_shuffle_v2p0_v4p0__4_6:3114; GFX942: ; %bb.0:3115; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3116; GFX942-NEXT: ;;#ASMSTART3117; GFX942-NEXT: ; def v[0:7]3118; GFX942-NEXT: ;;#ASMEND3119; GFX942-NEXT: v_mov_b32_e32 v8, 03120; GFX942-NEXT: v_mov_b32_e32 v2, v43121; GFX942-NEXT: v_mov_b32_e32 v3, v53122; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]3123; GFX942-NEXT: s_waitcnt vmcnt(0)3124; GFX942-NEXT: s_setpc_b64 s[30:31]3125 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3126 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3127 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 6>3128 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163129 ret void3130}3131 3132define void @v_shuffle_v2p0_v4p0__5_6(ptr addrspace(1) inreg %ptr) {3133; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_6:3134; GFX900: ; %bb.0:3135; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3136; GFX900-NEXT: v_mov_b32_e32 v8, 03137; GFX900-NEXT: ;;#ASMSTART3138; GFX900-NEXT: ; def v[0:7]3139; GFX900-NEXT: ;;#ASMEND3140; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3141; GFX900-NEXT: s_waitcnt vmcnt(0)3142; GFX900-NEXT: s_setpc_b64 s[30:31]3143;3144; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_6:3145; GFX90A: ; %bb.0:3146; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3147; GFX90A-NEXT: v_mov_b32_e32 v8, 03148; GFX90A-NEXT: ;;#ASMSTART3149; GFX90A-NEXT: ; def v[0:7]3150; GFX90A-NEXT: ;;#ASMEND3151; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3152; GFX90A-NEXT: s_waitcnt vmcnt(0)3153; GFX90A-NEXT: s_setpc_b64 s[30:31]3154;3155; GFX942-LABEL: v_shuffle_v2p0_v4p0__5_6:3156; GFX942: ; %bb.0:3157; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3158; GFX942-NEXT: v_mov_b32_e32 v8, 03159; GFX942-NEXT: ;;#ASMSTART3160; GFX942-NEXT: ; def v[0:7]3161; GFX942-NEXT: ;;#ASMEND3162; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3163; GFX942-NEXT: s_waitcnt vmcnt(0)3164; GFX942-NEXT: s_setpc_b64 s[30:31]3165 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3166 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3167 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 6>3168 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163169 ret void3170}3171 3172define void @v_shuffle_v2p0_v4p0__6_6(ptr addrspace(1) inreg %ptr) {3173; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_6:3174; GFX900: ; %bb.0:3175; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3176; GFX900-NEXT: ;;#ASMSTART3177; GFX900-NEXT: ; def v[0:7]3178; GFX900-NEXT: ;;#ASMEND3179; GFX900-NEXT: v_mov_b32_e32 v8, 03180; GFX900-NEXT: v_mov_b32_e32 v6, v43181; GFX900-NEXT: v_mov_b32_e32 v7, v53182; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3183; GFX900-NEXT: s_waitcnt vmcnt(0)3184; GFX900-NEXT: s_setpc_b64 s[30:31]3185;3186; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_6:3187; GFX90A: ; %bb.0:3188; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3189; GFX90A-NEXT: ;;#ASMSTART3190; GFX90A-NEXT: ; def v[0:7]3191; GFX90A-NEXT: ;;#ASMEND3192; GFX90A-NEXT: v_mov_b32_e32 v8, 03193; GFX90A-NEXT: v_mov_b32_e32 v6, v43194; GFX90A-NEXT: v_mov_b32_e32 v7, v53195; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3196; GFX90A-NEXT: s_waitcnt vmcnt(0)3197; GFX90A-NEXT: s_setpc_b64 s[30:31]3198;3199; GFX942-LABEL: v_shuffle_v2p0_v4p0__6_6:3200; GFX942: ; %bb.0:3201; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3202; GFX942-NEXT: ;;#ASMSTART3203; GFX942-NEXT: ; def v[0:7]3204; GFX942-NEXT: ;;#ASMEND3205; GFX942-NEXT: v_mov_b32_e32 v8, 03206; GFX942-NEXT: v_mov_b32_e32 v6, v43207; GFX942-NEXT: v_mov_b32_e32 v7, v53208; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]3209; GFX942-NEXT: s_waitcnt vmcnt(0)3210; GFX942-NEXT: s_setpc_b64 s[30:31]3211 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3212 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3213 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 6>3214 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163215 ret void3216}3217 3218define void @v_shuffle_v2p0_v4p0__u_7(ptr addrspace(1) inreg %ptr) {3219; GFX900-LABEL: v_shuffle_v2p0_v4p0__u_7:3220; GFX900: ; %bb.0:3221; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3222; GFX900-NEXT: v_mov_b32_e32 v8, 03223; GFX900-NEXT: ;;#ASMSTART3224; GFX900-NEXT: ; def v[0:7]3225; GFX900-NEXT: ;;#ASMEND3226; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3227; GFX900-NEXT: s_waitcnt vmcnt(0)3228; GFX900-NEXT: s_setpc_b64 s[30:31]3229;3230; GFX90A-LABEL: v_shuffle_v2p0_v4p0__u_7:3231; GFX90A: ; %bb.0:3232; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3233; GFX90A-NEXT: v_mov_b32_e32 v8, 03234; GFX90A-NEXT: ;;#ASMSTART3235; GFX90A-NEXT: ; def v[0:7]3236; GFX90A-NEXT: ;;#ASMEND3237; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3238; GFX90A-NEXT: s_waitcnt vmcnt(0)3239; GFX90A-NEXT: s_setpc_b64 s[30:31]3240;3241; GFX942-LABEL: v_shuffle_v2p0_v4p0__u_7:3242; GFX942: ; %bb.0:3243; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3244; GFX942-NEXT: v_mov_b32_e32 v8, 03245; GFX942-NEXT: ;;#ASMSTART3246; GFX942-NEXT: ; def v[0:7]3247; GFX942-NEXT: ;;#ASMEND3248; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]3249; GFX942-NEXT: s_waitcnt vmcnt(0)3250; GFX942-NEXT: s_setpc_b64 s[30:31]3251 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3252 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3253 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 7>3254 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163255 ret void3256}3257 3258define void @v_shuffle_v2p0_v4p0__0_7(ptr addrspace(1) inreg %ptr) {3259; GFX900-LABEL: v_shuffle_v2p0_v4p0__0_7:3260; GFX900: ; %bb.0:3261; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3262; GFX900-NEXT: ;;#ASMSTART3263; GFX900-NEXT: ; def v[0:7]3264; GFX900-NEXT: ;;#ASMEND3265; GFX900-NEXT: ;;#ASMSTART3266; GFX900-NEXT: ; def v[2:9]3267; GFX900-NEXT: ;;#ASMEND3268; GFX900-NEXT: v_mov_b32_e32 v10, 03269; GFX900-NEXT: v_mov_b32_e32 v2, v83270; GFX900-NEXT: v_mov_b32_e32 v3, v93271; GFX900-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17]3272; GFX900-NEXT: s_waitcnt vmcnt(0)3273; GFX900-NEXT: s_setpc_b64 s[30:31]3274;3275; GFX90A-LABEL: v_shuffle_v2p0_v4p0__0_7:3276; GFX90A: ; %bb.0:3277; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3278; GFX90A-NEXT: ;;#ASMSTART3279; GFX90A-NEXT: ; def v[0:7]3280; GFX90A-NEXT: ;;#ASMEND3281; GFX90A-NEXT: ;;#ASMSTART3282; GFX90A-NEXT: ; def v[2:9]3283; GFX90A-NEXT: ;;#ASMEND3284; GFX90A-NEXT: v_mov_b32_e32 v10, 03285; GFX90A-NEXT: v_mov_b32_e32 v2, v83286; GFX90A-NEXT: v_mov_b32_e32 v3, v93287; GFX90A-NEXT: global_store_dwordx4 v10, v[0:3], s[16:17]3288; GFX90A-NEXT: s_waitcnt vmcnt(0)3289; GFX90A-NEXT: s_setpc_b64 s[30:31]3290;3291; GFX942-LABEL: v_shuffle_v2p0_v4p0__0_7:3292; GFX942: ; %bb.0:3293; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3294; GFX942-NEXT: ;;#ASMSTART3295; GFX942-NEXT: ; def v[0:7]3296; GFX942-NEXT: ;;#ASMEND3297; GFX942-NEXT: v_mov_b32_e32 v10, 03298; GFX942-NEXT: ;;#ASMSTART3299; GFX942-NEXT: ; def v[2:9]3300; GFX942-NEXT: ;;#ASMEND3301; GFX942-NEXT: s_nop 03302; GFX942-NEXT: v_mov_b32_e32 v2, v83303; GFX942-NEXT: v_mov_b32_e32 v3, v93304; GFX942-NEXT: global_store_dwordx4 v10, v[0:3], s[0:1]3305; GFX942-NEXT: s_waitcnt vmcnt(0)3306; GFX942-NEXT: s_setpc_b64 s[30:31]3307 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3308 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3309 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 7>3310 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163311 ret void3312}3313 3314define void @v_shuffle_v2p0_v4p0__1_7(ptr addrspace(1) inreg %ptr) {3315; GFX900-LABEL: v_shuffle_v2p0_v4p0__1_7:3316; GFX900: ; %bb.0:3317; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3318; GFX900-NEXT: ;;#ASMSTART3319; GFX900-NEXT: ; def v[0:7]3320; GFX900-NEXT: ;;#ASMEND3321; GFX900-NEXT: ;;#ASMSTART3322; GFX900-NEXT: ; def v[4:11]3323; GFX900-NEXT: ;;#ASMEND3324; GFX900-NEXT: v_mov_b32_e32 v12, 03325; GFX900-NEXT: v_mov_b32_e32 v4, v103326; GFX900-NEXT: v_mov_b32_e32 v5, v113327; GFX900-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17]3328; GFX900-NEXT: s_waitcnt vmcnt(0)3329; GFX900-NEXT: s_setpc_b64 s[30:31]3330;3331; GFX90A-LABEL: v_shuffle_v2p0_v4p0__1_7:3332; GFX90A: ; %bb.0:3333; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3334; GFX90A-NEXT: ;;#ASMSTART3335; GFX90A-NEXT: ; def v[0:7]3336; GFX90A-NEXT: ;;#ASMEND3337; GFX90A-NEXT: ;;#ASMSTART3338; GFX90A-NEXT: ; def v[4:11]3339; GFX90A-NEXT: ;;#ASMEND3340; GFX90A-NEXT: v_mov_b32_e32 v12, 03341; GFX90A-NEXT: v_mov_b32_e32 v4, v103342; GFX90A-NEXT: v_mov_b32_e32 v5, v113343; GFX90A-NEXT: global_store_dwordx4 v12, v[2:5], s[16:17]3344; GFX90A-NEXT: s_waitcnt vmcnt(0)3345; GFX90A-NEXT: s_setpc_b64 s[30:31]3346;3347; GFX942-LABEL: v_shuffle_v2p0_v4p0__1_7:3348; GFX942: ; %bb.0:3349; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3350; GFX942-NEXT: ;;#ASMSTART3351; GFX942-NEXT: ; def v[0:7]3352; GFX942-NEXT: ;;#ASMEND3353; GFX942-NEXT: v_mov_b32_e32 v12, 03354; GFX942-NEXT: ;;#ASMSTART3355; GFX942-NEXT: ; def v[4:11]3356; GFX942-NEXT: ;;#ASMEND3357; GFX942-NEXT: s_nop 03358; GFX942-NEXT: v_mov_b32_e32 v4, v103359; GFX942-NEXT: v_mov_b32_e32 v5, v113360; GFX942-NEXT: global_store_dwordx4 v12, v[2:5], s[0:1]3361; GFX942-NEXT: s_waitcnt vmcnt(0)3362; GFX942-NEXT: s_setpc_b64 s[30:31]3363 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3364 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3365 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 7>3366 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163367 ret void3368}3369 3370define void @v_shuffle_v2p0_v4p0__2_7(ptr addrspace(1) inreg %ptr) {3371; GFX900-LABEL: v_shuffle_v2p0_v4p0__2_7:3372; GFX900: ; %bb.0:3373; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3374; GFX900-NEXT: ;;#ASMSTART3375; GFX900-NEXT: ; def v[0:7]3376; GFX900-NEXT: ;;#ASMEND3377; GFX900-NEXT: ;;#ASMSTART3378; GFX900-NEXT: ; def v[6:13]3379; GFX900-NEXT: ;;#ASMEND3380; GFX900-NEXT: v_mov_b32_e32 v14, 03381; GFX900-NEXT: v_mov_b32_e32 v6, v123382; GFX900-NEXT: v_mov_b32_e32 v7, v133383; GFX900-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]3384; GFX900-NEXT: s_waitcnt vmcnt(0)3385; GFX900-NEXT: s_setpc_b64 s[30:31]3386;3387; GFX90A-LABEL: v_shuffle_v2p0_v4p0__2_7:3388; GFX90A: ; %bb.0:3389; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3390; GFX90A-NEXT: ;;#ASMSTART3391; GFX90A-NEXT: ; def v[0:7]3392; GFX90A-NEXT: ;;#ASMEND3393; GFX90A-NEXT: ;;#ASMSTART3394; GFX90A-NEXT: ; def v[6:13]3395; GFX90A-NEXT: ;;#ASMEND3396; GFX90A-NEXT: v_mov_b32_e32 v14, 03397; GFX90A-NEXT: v_mov_b32_e32 v6, v123398; GFX90A-NEXT: v_mov_b32_e32 v7, v133399; GFX90A-NEXT: global_store_dwordx4 v14, v[4:7], s[16:17]3400; GFX90A-NEXT: s_waitcnt vmcnt(0)3401; GFX90A-NEXT: s_setpc_b64 s[30:31]3402;3403; GFX942-LABEL: v_shuffle_v2p0_v4p0__2_7:3404; GFX942: ; %bb.0:3405; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3406; GFX942-NEXT: ;;#ASMSTART3407; GFX942-NEXT: ; def v[0:7]3408; GFX942-NEXT: ;;#ASMEND3409; GFX942-NEXT: v_mov_b32_e32 v14, 03410; GFX942-NEXT: ;;#ASMSTART3411; GFX942-NEXT: ; def v[6:13]3412; GFX942-NEXT: ;;#ASMEND3413; GFX942-NEXT: s_nop 03414; GFX942-NEXT: v_mov_b32_e32 v6, v123415; GFX942-NEXT: v_mov_b32_e32 v7, v133416; GFX942-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1]3417; GFX942-NEXT: s_waitcnt vmcnt(0)3418; GFX942-NEXT: s_setpc_b64 s[30:31]3419 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3420 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3421 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 7>3422 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163423 ret void3424}3425 3426define void @v_shuffle_v2p0_v4p0__3_7(ptr addrspace(1) inreg %ptr) {3427; GFX900-LABEL: v_shuffle_v2p0_v4p0__3_7:3428; GFX900: ; %bb.0:3429; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3430; GFX900-NEXT: ;;#ASMSTART3431; GFX900-NEXT: ; def v[8:15]3432; GFX900-NEXT: ;;#ASMEND3433; GFX900-NEXT: v_mov_b32_e32 v16, 03434; GFX900-NEXT: v_mov_b32_e32 v8, v143435; GFX900-NEXT: v_mov_b32_e32 v9, v153436; GFX900-NEXT: ;;#ASMSTART3437; GFX900-NEXT: ; def v[0:7]3438; GFX900-NEXT: ;;#ASMEND3439; GFX900-NEXT: global_store_dwordx4 v16, v[6:9], s[16:17]3440; GFX900-NEXT: s_waitcnt vmcnt(0)3441; GFX900-NEXT: s_setpc_b64 s[30:31]3442;3443; GFX90A-LABEL: v_shuffle_v2p0_v4p0__3_7:3444; GFX90A: ; %bb.0:3445; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3446; GFX90A-NEXT: ;;#ASMSTART3447; GFX90A-NEXT: ; def v[8:15]3448; GFX90A-NEXT: ;;#ASMEND3449; GFX90A-NEXT: v_mov_b32_e32 v16, 03450; GFX90A-NEXT: v_mov_b32_e32 v8, v143451; GFX90A-NEXT: v_mov_b32_e32 v9, v153452; GFX90A-NEXT: ;;#ASMSTART3453; GFX90A-NEXT: ; def v[0:7]3454; GFX90A-NEXT: ;;#ASMEND3455; GFX90A-NEXT: global_store_dwordx4 v16, v[6:9], s[16:17]3456; GFX90A-NEXT: s_waitcnt vmcnt(0)3457; GFX90A-NEXT: s_setpc_b64 s[30:31]3458;3459; GFX942-LABEL: v_shuffle_v2p0_v4p0__3_7:3460; GFX942: ; %bb.0:3461; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3462; GFX942-NEXT: ;;#ASMSTART3463; GFX942-NEXT: ; def v[8:15]3464; GFX942-NEXT: ;;#ASMEND3465; GFX942-NEXT: v_mov_b32_e32 v16, 03466; GFX942-NEXT: v_mov_b32_e32 v8, v143467; GFX942-NEXT: v_mov_b32_e32 v9, v153468; GFX942-NEXT: ;;#ASMSTART3469; GFX942-NEXT: ; def v[0:7]3470; GFX942-NEXT: ;;#ASMEND3471; GFX942-NEXT: global_store_dwordx4 v16, v[6:9], s[0:1]3472; GFX942-NEXT: s_waitcnt vmcnt(0)3473; GFX942-NEXT: s_setpc_b64 s[30:31]3474 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3475 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3476 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 7>3477 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163478 ret void3479}3480 3481define void @v_shuffle_v2p0_v4p0__4_7(ptr addrspace(1) inreg %ptr) {3482; GFX900-LABEL: v_shuffle_v2p0_v4p0__4_7:3483; GFX900: ; %bb.0:3484; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3485; GFX900-NEXT: ;;#ASMSTART3486; GFX900-NEXT: ; def v[0:7]3487; GFX900-NEXT: ;;#ASMEND3488; GFX900-NEXT: v_mov_b32_e32 v8, 03489; GFX900-NEXT: v_mov_b32_e32 v2, v63490; GFX900-NEXT: v_mov_b32_e32 v3, v73491; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], 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_v2p0_v4p0__4_7:3496; GFX90A: ; %bb.0:3497; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3498; GFX90A-NEXT: ;;#ASMSTART3499; GFX90A-NEXT: ; def v[0:7]3500; GFX90A-NEXT: ;;#ASMEND3501; GFX90A-NEXT: v_mov_b32_e32 v8, 03502; GFX90A-NEXT: v_mov_b32_e32 v2, v63503; GFX90A-NEXT: v_mov_b32_e32 v3, v73504; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3505; GFX90A-NEXT: s_waitcnt vmcnt(0)3506; GFX90A-NEXT: s_setpc_b64 s[30:31]3507;3508; GFX942-LABEL: v_shuffle_v2p0_v4p0__4_7:3509; GFX942: ; %bb.0:3510; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3511; GFX942-NEXT: ;;#ASMSTART3512; GFX942-NEXT: ; def v[0:7]3513; GFX942-NEXT: ;;#ASMEND3514; GFX942-NEXT: v_mov_b32_e32 v8, 03515; GFX942-NEXT: v_mov_b32_e32 v2, v63516; GFX942-NEXT: v_mov_b32_e32 v3, v73517; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]3518; GFX942-NEXT: s_waitcnt vmcnt(0)3519; GFX942-NEXT: s_setpc_b64 s[30:31]3520 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3521 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3522 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 7>3523 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163524 ret void3525}3526 3527define void @v_shuffle_v2p0_v4p0__5_7(ptr addrspace(1) inreg %ptr) {3528; GFX900-LABEL: v_shuffle_v2p0_v4p0__5_7:3529; GFX900: ; %bb.0:3530; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3531; GFX900-NEXT: ;;#ASMSTART3532; GFX900-NEXT: ; def v[0:7]3533; GFX900-NEXT: ;;#ASMEND3534; GFX900-NEXT: v_mov_b32_e32 v8, 03535; GFX900-NEXT: v_mov_b32_e32 v4, v63536; GFX900-NEXT: v_mov_b32_e32 v5, v73537; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]3538; GFX900-NEXT: s_waitcnt vmcnt(0)3539; GFX900-NEXT: s_setpc_b64 s[30:31]3540;3541; GFX90A-LABEL: v_shuffle_v2p0_v4p0__5_7:3542; GFX90A: ; %bb.0:3543; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3544; GFX90A-NEXT: ;;#ASMSTART3545; GFX90A-NEXT: ; def v[0:7]3546; GFX90A-NEXT: ;;#ASMEND3547; GFX90A-NEXT: v_mov_b32_e32 v8, 03548; GFX90A-NEXT: v_mov_b32_e32 v4, v63549; GFX90A-NEXT: v_mov_b32_e32 v5, v73550; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], 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_v2p0_v4p0__5_7:3555; GFX942: ; %bb.0:3556; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3557; GFX942-NEXT: ;;#ASMSTART3558; GFX942-NEXT: ; def v[0:7]3559; GFX942-NEXT: ;;#ASMEND3560; GFX942-NEXT: v_mov_b32_e32 v8, 03561; GFX942-NEXT: v_mov_b32_e32 v4, v63562; GFX942-NEXT: v_mov_b32_e32 v5, v73563; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]3564; GFX942-NEXT: s_waitcnt vmcnt(0)3565; GFX942-NEXT: s_setpc_b64 s[30:31]3566 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3567 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3568 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 7>3569 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163570 ret void3571}3572 3573define void @v_shuffle_v2p0_v4p0__6_7(ptr addrspace(1) inreg %ptr) {3574; GFX900-LABEL: v_shuffle_v2p0_v4p0__6_7:3575; GFX900: ; %bb.0:3576; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3577; GFX900-NEXT: v_mov_b32_e32 v8, 03578; GFX900-NEXT: ;;#ASMSTART3579; GFX900-NEXT: ; def v[0:7]3580; GFX900-NEXT: ;;#ASMEND3581; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3582; GFX900-NEXT: s_waitcnt vmcnt(0)3583; GFX900-NEXT: s_setpc_b64 s[30:31]3584;3585; GFX90A-LABEL: v_shuffle_v2p0_v4p0__6_7:3586; GFX90A: ; %bb.0:3587; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3588; GFX90A-NEXT: v_mov_b32_e32 v8, 03589; GFX90A-NEXT: ;;#ASMSTART3590; GFX90A-NEXT: ; def v[0:7]3591; GFX90A-NEXT: ;;#ASMEND3592; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3593; GFX90A-NEXT: s_waitcnt vmcnt(0)3594; GFX90A-NEXT: s_setpc_b64 s[30:31]3595;3596; GFX942-LABEL: v_shuffle_v2p0_v4p0__6_7:3597; GFX942: ; %bb.0:3598; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3599; GFX942-NEXT: v_mov_b32_e32 v8, 03600; GFX942-NEXT: ;;#ASMSTART3601; GFX942-NEXT: ; def v[0:7]3602; GFX942-NEXT: ;;#ASMEND3603; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]3604; GFX942-NEXT: s_waitcnt vmcnt(0)3605; GFX942-NEXT: s_setpc_b64 s[30:31]3606 %vec0 = call <4 x ptr> asm "; def $0", "=v"()3607 %vec1 = call <4 x ptr> asm "; def $0", "=v"()3608 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 7>3609 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 163610 ret void3611}3612 3613define void @s_shuffle_v2p0_v4p0__u_u() {3614; GFX9-LABEL: s_shuffle_v2p0_v4p0__u_u:3615; GFX9: ; %bb.0:3616; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3617; GFX9-NEXT: ;;#ASMSTART3618; GFX9-NEXT: ; use s[8:11]3619; GFX9-NEXT: ;;#ASMEND3620; GFX9-NEXT: s_setpc_b64 s[30:31]3621 %vec0 = call <4 x ptr> asm "; def $0", "=s"()3622 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> poison3623 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3624 ret void3625}3626 3627define void @s_shuffle_v2p0_v4p0__0_u() {3628; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_u:3629; GFX900: ; %bb.0:3630; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3631; GFX900-NEXT: ;;#ASMSTART3632; GFX900-NEXT: ; def s[8:15]3633; GFX900-NEXT: ;;#ASMEND3634; GFX900-NEXT: ;;#ASMSTART3635; GFX900-NEXT: ; use s[8:11]3636; GFX900-NEXT: ;;#ASMEND3637; GFX900-NEXT: s_setpc_b64 s[30:31]3638;3639; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_u:3640; GFX90A: ; %bb.0:3641; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3642; GFX90A-NEXT: ;;#ASMSTART3643; GFX90A-NEXT: ; def s[8:15]3644; GFX90A-NEXT: ;;#ASMEND3645; GFX90A-NEXT: ;;#ASMSTART3646; GFX90A-NEXT: ; use s[8:11]3647; GFX90A-NEXT: ;;#ASMEND3648; GFX90A-NEXT: s_setpc_b64 s[30:31]3649;3650; GFX942-LABEL: s_shuffle_v2p0_v4p0__0_u:3651; GFX942: ; %bb.0:3652; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3653; GFX942-NEXT: ;;#ASMSTART3654; GFX942-NEXT: ; def s[8:15]3655; GFX942-NEXT: ;;#ASMEND3656; GFX942-NEXT: s_nop 03657; GFX942-NEXT: ;;#ASMSTART3658; GFX942-NEXT: ; use s[8:11]3659; GFX942-NEXT: ;;#ASMEND3660; GFX942-NEXT: s_setpc_b64 s[30:31]3661 %vec0 = call <4 x ptr> asm "; def $0", "=s"()3662 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 poison>3663 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3664 ret void3665}3666 3667define void @s_shuffle_v2p0_v4p0__1_u() {3668; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_u:3669; GFX900: ; %bb.0:3670; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3671; GFX900-NEXT: ;;#ASMSTART3672; GFX900-NEXT: ; def s[4:11]3673; GFX900-NEXT: ;;#ASMEND3674; GFX900-NEXT: s_mov_b32 s8, s63675; GFX900-NEXT: s_mov_b32 s9, s73676; GFX900-NEXT: ;;#ASMSTART3677; GFX900-NEXT: ; use s[8:11]3678; GFX900-NEXT: ;;#ASMEND3679; GFX900-NEXT: s_setpc_b64 s[30:31]3680;3681; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_u:3682; GFX90A: ; %bb.0:3683; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3684; GFX90A-NEXT: ;;#ASMSTART3685; GFX90A-NEXT: ; def s[4:11]3686; GFX90A-NEXT: ;;#ASMEND3687; GFX90A-NEXT: s_mov_b32 s8, s63688; GFX90A-NEXT: s_mov_b32 s9, s73689; GFX90A-NEXT: ;;#ASMSTART3690; GFX90A-NEXT: ; use s[8:11]3691; GFX90A-NEXT: ;;#ASMEND3692; GFX90A-NEXT: s_setpc_b64 s[30:31]3693;3694; GFX942-LABEL: s_shuffle_v2p0_v4p0__1_u:3695; GFX942: ; %bb.0:3696; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3697; GFX942-NEXT: ;;#ASMSTART3698; GFX942-NEXT: ; def s[0:7]3699; GFX942-NEXT: ;;#ASMEND3700; GFX942-NEXT: s_mov_b32 s8, s23701; GFX942-NEXT: s_mov_b32 s9, s33702; GFX942-NEXT: ;;#ASMSTART3703; GFX942-NEXT: ; use s[8:11]3704; GFX942-NEXT: ;;#ASMEND3705; GFX942-NEXT: s_setpc_b64 s[30:31]3706 %vec0 = call <4 x ptr> asm "; def $0", "=s"()3707 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 poison>3708 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3709 ret void3710}3711 3712define void @s_shuffle_v2p0_v4p0__2_u() {3713; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_u:3714; GFX900: ; %bb.0:3715; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3716; GFX900-NEXT: ;;#ASMSTART3717; GFX900-NEXT: ; def s[4:11]3718; GFX900-NEXT: ;;#ASMEND3719; GFX900-NEXT: ;;#ASMSTART3720; GFX900-NEXT: ; use s[8:11]3721; GFX900-NEXT: ;;#ASMEND3722; GFX900-NEXT: s_setpc_b64 s[30:31]3723;3724; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_u:3725; GFX90A: ; %bb.0:3726; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3727; GFX90A-NEXT: ;;#ASMSTART3728; GFX90A-NEXT: ; def s[4:11]3729; GFX90A-NEXT: ;;#ASMEND3730; GFX90A-NEXT: ;;#ASMSTART3731; GFX90A-NEXT: ; use s[8:11]3732; GFX90A-NEXT: ;;#ASMEND3733; GFX90A-NEXT: s_setpc_b64 s[30:31]3734;3735; GFX942-LABEL: s_shuffle_v2p0_v4p0__2_u:3736; GFX942: ; %bb.0:3737; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3738; GFX942-NEXT: ;;#ASMSTART3739; GFX942-NEXT: ; def s[4:11]3740; GFX942-NEXT: ;;#ASMEND3741; GFX942-NEXT: s_nop 03742; GFX942-NEXT: ;;#ASMSTART3743; GFX942-NEXT: ; use s[8:11]3744; GFX942-NEXT: ;;#ASMEND3745; GFX942-NEXT: s_setpc_b64 s[30:31]3746 %vec0 = call <4 x ptr> asm "; def $0", "=s"()3747 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 poison>3748 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3749 ret void3750}3751 3752define void @s_shuffle_v2p0_v4p0__3_u() {3753; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_u:3754; GFX900: ; %bb.0:3755; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3756; GFX900-NEXT: ;;#ASMSTART3757; GFX900-NEXT: ; def s[4:11]3758; GFX900-NEXT: ;;#ASMEND3759; GFX900-NEXT: s_mov_b32 s8, s103760; GFX900-NEXT: s_mov_b32 s9, s113761; GFX900-NEXT: ;;#ASMSTART3762; GFX900-NEXT: ; use s[8:11]3763; GFX900-NEXT: ;;#ASMEND3764; GFX900-NEXT: s_setpc_b64 s[30:31]3765;3766; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_u:3767; GFX90A: ; %bb.0:3768; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3769; GFX90A-NEXT: ;;#ASMSTART3770; GFX90A-NEXT: ; def s[4:11]3771; GFX90A-NEXT: ;;#ASMEND3772; GFX90A-NEXT: s_mov_b32 s8, s103773; GFX90A-NEXT: s_mov_b32 s9, s113774; GFX90A-NEXT: ;;#ASMSTART3775; GFX90A-NEXT: ; use s[8:11]3776; GFX90A-NEXT: ;;#ASMEND3777; GFX90A-NEXT: s_setpc_b64 s[30:31]3778;3779; GFX942-LABEL: s_shuffle_v2p0_v4p0__3_u:3780; GFX942: ; %bb.0:3781; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3782; GFX942-NEXT: ;;#ASMSTART3783; GFX942-NEXT: ; def s[0:7]3784; GFX942-NEXT: ;;#ASMEND3785; GFX942-NEXT: s_mov_b32 s8, s63786; GFX942-NEXT: s_mov_b32 s9, s73787; GFX942-NEXT: ;;#ASMSTART3788; GFX942-NEXT: ; use s[8:11]3789; GFX942-NEXT: ;;#ASMEND3790; GFX942-NEXT: s_setpc_b64 s[30:31]3791 %vec0 = call <4 x ptr> asm "; def $0", "=s"()3792 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 poison>3793 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3794 ret void3795}3796 3797define void @s_shuffle_v2p0_v4p0__4_u() {3798; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_u:3799; GFX9: ; %bb.0:3800; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3801; GFX9-NEXT: ;;#ASMSTART3802; GFX9-NEXT: ; use s[8:11]3803; GFX9-NEXT: ;;#ASMEND3804; GFX9-NEXT: s_setpc_b64 s[30:31]3805 %vec0 = call <4 x ptr> asm "; def $0", "=s"()3806 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 poison>3807 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3808 ret void3809}3810 3811define void @s_shuffle_v2p0_v4p0__5_u() {3812; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_u:3813; GFX900: ; %bb.0:3814; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3815; GFX900-NEXT: ;;#ASMSTART3816; GFX900-NEXT: ; def s[4:11]3817; GFX900-NEXT: ;;#ASMEND3818; GFX900-NEXT: s_mov_b32 s8, s63819; GFX900-NEXT: s_mov_b32 s9, s73820; GFX900-NEXT: ;;#ASMSTART3821; GFX900-NEXT: ; use s[8:11]3822; GFX900-NEXT: ;;#ASMEND3823; GFX900-NEXT: s_setpc_b64 s[30:31]3824;3825; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_u:3826; GFX90A: ; %bb.0:3827; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3828; GFX90A-NEXT: ;;#ASMSTART3829; GFX90A-NEXT: ; def s[4:11]3830; GFX90A-NEXT: ;;#ASMEND3831; GFX90A-NEXT: s_mov_b32 s8, s63832; GFX90A-NEXT: s_mov_b32 s9, s73833; GFX90A-NEXT: ;;#ASMSTART3834; GFX90A-NEXT: ; use s[8:11]3835; GFX90A-NEXT: ;;#ASMEND3836; GFX90A-NEXT: s_setpc_b64 s[30:31]3837;3838; GFX942-LABEL: s_shuffle_v2p0_v4p0__5_u:3839; GFX942: ; %bb.0:3840; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3841; GFX942-NEXT: ;;#ASMSTART3842; GFX942-NEXT: ; def s[0:7]3843; GFX942-NEXT: ;;#ASMEND3844; GFX942-NEXT: s_mov_b32 s8, s23845; GFX942-NEXT: s_mov_b32 s9, s33846; GFX942-NEXT: ;;#ASMSTART3847; GFX942-NEXT: ; use s[8:11]3848; GFX942-NEXT: ;;#ASMEND3849; GFX942-NEXT: s_setpc_b64 s[30:31]3850 %vec0 = call <4 x ptr> asm "; def $0", "=s"()3851 %vec1 = call <4 x ptr> asm "; def $0", "=s"()3852 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>3853 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3854 ret void3855}3856 3857define void @s_shuffle_v2p0_v4p0__6_u() {3858; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_u:3859; GFX900: ; %bb.0:3860; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3861; GFX900-NEXT: ;;#ASMSTART3862; GFX900-NEXT: ; def s[4:11]3863; GFX900-NEXT: ;;#ASMEND3864; GFX900-NEXT: ;;#ASMSTART3865; GFX900-NEXT: ; use s[8:11]3866; GFX900-NEXT: ;;#ASMEND3867; GFX900-NEXT: s_setpc_b64 s[30:31]3868;3869; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_u:3870; GFX90A: ; %bb.0:3871; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3872; GFX90A-NEXT: ;;#ASMSTART3873; GFX90A-NEXT: ; def s[4:11]3874; GFX90A-NEXT: ;;#ASMEND3875; GFX90A-NEXT: ;;#ASMSTART3876; GFX90A-NEXT: ; use s[8:11]3877; GFX90A-NEXT: ;;#ASMEND3878; GFX90A-NEXT: s_setpc_b64 s[30:31]3879;3880; GFX942-LABEL: s_shuffle_v2p0_v4p0__6_u:3881; GFX942: ; %bb.0:3882; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3883; GFX942-NEXT: ;;#ASMSTART3884; GFX942-NEXT: ; def s[4:11]3885; GFX942-NEXT: ;;#ASMEND3886; GFX942-NEXT: s_nop 03887; GFX942-NEXT: ;;#ASMSTART3888; GFX942-NEXT: ; use s[8:11]3889; GFX942-NEXT: ;;#ASMEND3890; GFX942-NEXT: s_setpc_b64 s[30:31]3891 %vec0 = call <4 x ptr> asm "; def $0", "=s"()3892 %vec1 = call <4 x ptr> asm "; def $0", "=s"()3893 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 poison>3894 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3895 ret void3896}3897 3898define void @s_shuffle_v2p0_v4p0__7_u() {3899; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_u:3900; GFX900: ; %bb.0:3901; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3902; GFX900-NEXT: ;;#ASMSTART3903; GFX900-NEXT: ; def s[4:11]3904; GFX900-NEXT: ;;#ASMEND3905; GFX900-NEXT: s_mov_b32 s8, s103906; GFX900-NEXT: s_mov_b32 s9, s113907; GFX900-NEXT: ;;#ASMSTART3908; GFX900-NEXT: ; use s[8:11]3909; GFX900-NEXT: ;;#ASMEND3910; GFX900-NEXT: s_setpc_b64 s[30:31]3911;3912; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_u:3913; GFX90A: ; %bb.0:3914; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3915; GFX90A-NEXT: ;;#ASMSTART3916; GFX90A-NEXT: ; def s[4:11]3917; GFX90A-NEXT: ;;#ASMEND3918; GFX90A-NEXT: s_mov_b32 s8, s103919; GFX90A-NEXT: s_mov_b32 s9, s113920; GFX90A-NEXT: ;;#ASMSTART3921; GFX90A-NEXT: ; use s[8:11]3922; GFX90A-NEXT: ;;#ASMEND3923; GFX90A-NEXT: s_setpc_b64 s[30:31]3924;3925; GFX942-LABEL: s_shuffle_v2p0_v4p0__7_u:3926; GFX942: ; %bb.0:3927; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3928; GFX942-NEXT: ;;#ASMSTART3929; GFX942-NEXT: ; def s[0:7]3930; GFX942-NEXT: ;;#ASMEND3931; GFX942-NEXT: s_mov_b32 s8, s63932; GFX942-NEXT: s_mov_b32 s9, s73933; GFX942-NEXT: ;;#ASMSTART3934; GFX942-NEXT: ; use s[8:11]3935; GFX942-NEXT: ;;#ASMEND3936; GFX942-NEXT: s_setpc_b64 s[30:31]3937 %vec0 = call <4 x ptr> asm "; def $0", "=s"()3938 %vec1 = call <4 x ptr> asm "; def $0", "=s"()3939 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 poison>3940 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3941 ret void3942}3943 3944define void @s_shuffle_v2p0_v4p0__7_0() {3945; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_0:3946; GFX900: ; %bb.0:3947; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3948; GFX900-NEXT: ;;#ASMSTART3949; GFX900-NEXT: ; def s[4:11]3950; GFX900-NEXT: ;;#ASMEND3951; GFX900-NEXT: ;;#ASMSTART3952; GFX900-NEXT: ; def s[8:15]3953; GFX900-NEXT: ;;#ASMEND3954; GFX900-NEXT: s_mov_b32 s8, s143955; GFX900-NEXT: s_mov_b32 s9, s153956; GFX900-NEXT: s_mov_b32 s10, s43957; GFX900-NEXT: s_mov_b32 s11, s53958; GFX900-NEXT: ;;#ASMSTART3959; GFX900-NEXT: ; use s[8:11]3960; GFX900-NEXT: ;;#ASMEND3961; GFX900-NEXT: s_setpc_b64 s[30:31]3962;3963; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_0:3964; GFX90A: ; %bb.0:3965; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3966; GFX90A-NEXT: ;;#ASMSTART3967; GFX90A-NEXT: ; def s[4:11]3968; GFX90A-NEXT: ;;#ASMEND3969; GFX90A-NEXT: ;;#ASMSTART3970; GFX90A-NEXT: ; def s[8:15]3971; GFX90A-NEXT: ;;#ASMEND3972; GFX90A-NEXT: s_mov_b32 s8, s143973; GFX90A-NEXT: s_mov_b32 s9, s153974; GFX90A-NEXT: s_mov_b32 s10, s43975; GFX90A-NEXT: s_mov_b32 s11, s53976; GFX90A-NEXT: ;;#ASMSTART3977; GFX90A-NEXT: ; use s[8:11]3978; GFX90A-NEXT: ;;#ASMEND3979; GFX90A-NEXT: s_setpc_b64 s[30:31]3980;3981; GFX942-LABEL: s_shuffle_v2p0_v4p0__7_0:3982; GFX942: ; %bb.0:3983; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3984; GFX942-NEXT: ;;#ASMSTART3985; GFX942-NEXT: ; def s[0:7]3986; GFX942-NEXT: ;;#ASMEND3987; GFX942-NEXT: s_nop 03988; GFX942-NEXT: ;;#ASMSTART3989; GFX942-NEXT: ; def s[4:11]3990; GFX942-NEXT: ;;#ASMEND3991; GFX942-NEXT: s_mov_b32 s8, s103992; GFX942-NEXT: s_mov_b32 s9, s113993; GFX942-NEXT: s_mov_b32 s10, s03994; GFX942-NEXT: s_mov_b32 s11, s13995; GFX942-NEXT: ;;#ASMSTART3996; GFX942-NEXT: ; use s[8:11]3997; GFX942-NEXT: ;;#ASMEND3998; GFX942-NEXT: s_setpc_b64 s[30:31]3999 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4000 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4001 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 0>4002 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4003 ret void4004}4005 4006define void @s_shuffle_v2p0_v4p0__7_1() {4007; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_1:4008; GFX900: ; %bb.0:4009; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4010; GFX900-NEXT: ;;#ASMSTART4011; GFX900-NEXT: ; def s[8:15]4012; GFX900-NEXT: ;;#ASMEND4013; GFX900-NEXT: ;;#ASMSTART4014; GFX900-NEXT: ; def s[12:19]4015; GFX900-NEXT: ;;#ASMEND4016; GFX900-NEXT: s_mov_b32 s8, s184017; GFX900-NEXT: s_mov_b32 s9, s194018; GFX900-NEXT: ;;#ASMSTART4019; GFX900-NEXT: ; use s[8:11]4020; GFX900-NEXT: ;;#ASMEND4021; GFX900-NEXT: s_setpc_b64 s[30:31]4022;4023; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_1:4024; GFX90A: ; %bb.0:4025; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4026; GFX90A-NEXT: ;;#ASMSTART4027; GFX90A-NEXT: ; def s[8:15]4028; GFX90A-NEXT: ;;#ASMEND4029; GFX90A-NEXT: ;;#ASMSTART4030; GFX90A-NEXT: ; def s[12:19]4031; GFX90A-NEXT: ;;#ASMEND4032; GFX90A-NEXT: s_mov_b32 s8, s184033; GFX90A-NEXT: s_mov_b32 s9, s194034; GFX90A-NEXT: ;;#ASMSTART4035; GFX90A-NEXT: ; use s[8:11]4036; GFX90A-NEXT: ;;#ASMEND4037; GFX90A-NEXT: s_setpc_b64 s[30:31]4038;4039; GFX942-LABEL: s_shuffle_v2p0_v4p0__7_1:4040; GFX942: ; %bb.0:4041; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4042; GFX942-NEXT: ;;#ASMSTART4043; GFX942-NEXT: ; def s[8:15]4044; GFX942-NEXT: ;;#ASMEND4045; GFX942-NEXT: ;;#ASMSTART4046; GFX942-NEXT: ; def s[0:7]4047; GFX942-NEXT: ;;#ASMEND4048; GFX942-NEXT: s_mov_b32 s8, s64049; GFX942-NEXT: s_mov_b32 s9, s74050; GFX942-NEXT: ;;#ASMSTART4051; GFX942-NEXT: ; use s[8:11]4052; GFX942-NEXT: ;;#ASMEND4053; GFX942-NEXT: s_setpc_b64 s[30:31]4054 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4055 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4056 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 1>4057 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4058 ret void4059}4060 4061define void @s_shuffle_v2p0_v4p0__7_2() {4062; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_2:4063; GFX900: ; %bb.0:4064; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4065; GFX900-NEXT: ;;#ASMSTART4066; GFX900-NEXT: ; def s[8:15]4067; GFX900-NEXT: ;;#ASMEND4068; GFX900-NEXT: ;;#ASMSTART4069; GFX900-NEXT: ; def s[4:11]4070; GFX900-NEXT: ;;#ASMEND4071; GFX900-NEXT: s_mov_b32 s8, s104072; GFX900-NEXT: s_mov_b32 s9, s114073; GFX900-NEXT: s_mov_b32 s10, s124074; GFX900-NEXT: s_mov_b32 s11, s134075; GFX900-NEXT: ;;#ASMSTART4076; GFX900-NEXT: ; use s[8:11]4077; GFX900-NEXT: ;;#ASMEND4078; GFX900-NEXT: s_setpc_b64 s[30:31]4079;4080; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_2:4081; GFX90A: ; %bb.0:4082; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4083; GFX90A-NEXT: ;;#ASMSTART4084; GFX90A-NEXT: ; def s[8:15]4085; GFX90A-NEXT: ;;#ASMEND4086; GFX90A-NEXT: ;;#ASMSTART4087; GFX90A-NEXT: ; def s[4:11]4088; GFX90A-NEXT: ;;#ASMEND4089; GFX90A-NEXT: s_mov_b32 s8, s104090; GFX90A-NEXT: s_mov_b32 s9, s114091; GFX90A-NEXT: s_mov_b32 s10, s124092; GFX90A-NEXT: s_mov_b32 s11, s134093; GFX90A-NEXT: ;;#ASMSTART4094; GFX90A-NEXT: ; use s[8:11]4095; GFX90A-NEXT: ;;#ASMEND4096; GFX90A-NEXT: s_setpc_b64 s[30:31]4097;4098; GFX942-LABEL: s_shuffle_v2p0_v4p0__7_2:4099; GFX942: ; %bb.0:4100; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4101; GFX942-NEXT: ;;#ASMSTART4102; GFX942-NEXT: ; def s[8:15]4103; GFX942-NEXT: ;;#ASMEND4104; GFX942-NEXT: ;;#ASMSTART4105; GFX942-NEXT: ; def s[0:7]4106; GFX942-NEXT: ;;#ASMEND4107; GFX942-NEXT: s_mov_b32 s8, s144108; GFX942-NEXT: s_mov_b32 s9, s154109; GFX942-NEXT: s_mov_b32 s10, s44110; GFX942-NEXT: s_mov_b32 s11, s54111; GFX942-NEXT: ;;#ASMSTART4112; GFX942-NEXT: ; use s[8:11]4113; GFX942-NEXT: ;;#ASMEND4114; GFX942-NEXT: s_setpc_b64 s[30:31]4115 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4116 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4117 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 2>4118 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4119 ret void4120}4121 4122define void @s_shuffle_v2p0_v4p0__7_3() {4123; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_3:4124; GFX900: ; %bb.0:4125; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4126; GFX900-NEXT: ;;#ASMSTART4127; GFX900-NEXT: ; def s[4:11]4128; GFX900-NEXT: ;;#ASMEND4129; GFX900-NEXT: ;;#ASMSTART4130; GFX900-NEXT: ; def s[12:19]4131; GFX900-NEXT: ;;#ASMEND4132; GFX900-NEXT: s_mov_b32 s8, s184133; GFX900-NEXT: s_mov_b32 s9, s194134; GFX900-NEXT: ;;#ASMSTART4135; GFX900-NEXT: ; use s[8:11]4136; GFX900-NEXT: ;;#ASMEND4137; GFX900-NEXT: s_setpc_b64 s[30:31]4138;4139; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_3:4140; GFX90A: ; %bb.0:4141; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4142; GFX90A-NEXT: ;;#ASMSTART4143; GFX90A-NEXT: ; def s[4:11]4144; GFX90A-NEXT: ;;#ASMEND4145; GFX90A-NEXT: ;;#ASMSTART4146; GFX90A-NEXT: ; def s[12:19]4147; GFX90A-NEXT: ;;#ASMEND4148; GFX90A-NEXT: s_mov_b32 s8, s184149; GFX90A-NEXT: s_mov_b32 s9, s194150; GFX90A-NEXT: ;;#ASMSTART4151; GFX90A-NEXT: ; use s[8:11]4152; GFX90A-NEXT: ;;#ASMEND4153; GFX90A-NEXT: s_setpc_b64 s[30:31]4154;4155; GFX942-LABEL: s_shuffle_v2p0_v4p0__7_3:4156; GFX942: ; %bb.0:4157; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4158; GFX942-NEXT: ;;#ASMSTART4159; GFX942-NEXT: ; def s[4:11]4160; GFX942-NEXT: ;;#ASMEND4161; GFX942-NEXT: s_nop 04162; GFX942-NEXT: ;;#ASMSTART4163; GFX942-NEXT: ; def s[0:7]4164; GFX942-NEXT: ;;#ASMEND4165; GFX942-NEXT: s_mov_b32 s8, s64166; GFX942-NEXT: s_mov_b32 s9, s74167; GFX942-NEXT: ;;#ASMSTART4168; GFX942-NEXT: ; use s[8:11]4169; GFX942-NEXT: ;;#ASMEND4170; GFX942-NEXT: s_setpc_b64 s[30:31]4171 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4172 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4173 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 3>4174 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4175 ret void4176}4177 4178define void @s_shuffle_v2p0_v4p0__7_4() {4179; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_4:4180; GFX900: ; %bb.0:4181; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4182; GFX900-NEXT: ;;#ASMSTART4183; GFX900-NEXT: ; def s[4:11]4184; GFX900-NEXT: ;;#ASMEND4185; GFX900-NEXT: s_mov_b32 s8, s104186; GFX900-NEXT: s_mov_b32 s9, s114187; GFX900-NEXT: s_mov_b32 s10, s44188; GFX900-NEXT: s_mov_b32 s11, s54189; GFX900-NEXT: ;;#ASMSTART4190; GFX900-NEXT: ; use s[8:11]4191; GFX900-NEXT: ;;#ASMEND4192; GFX900-NEXT: s_setpc_b64 s[30:31]4193;4194; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_4:4195; GFX90A: ; %bb.0:4196; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4197; GFX90A-NEXT: ;;#ASMSTART4198; GFX90A-NEXT: ; def s[4:11]4199; GFX90A-NEXT: ;;#ASMEND4200; GFX90A-NEXT: s_mov_b32 s8, s104201; GFX90A-NEXT: s_mov_b32 s9, s114202; GFX90A-NEXT: s_mov_b32 s10, s44203; GFX90A-NEXT: s_mov_b32 s11, s54204; GFX90A-NEXT: ;;#ASMSTART4205; GFX90A-NEXT: ; use s[8:11]4206; GFX90A-NEXT: ;;#ASMEND4207; GFX90A-NEXT: s_setpc_b64 s[30:31]4208;4209; GFX942-LABEL: s_shuffle_v2p0_v4p0__7_4:4210; GFX942: ; %bb.0:4211; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4212; GFX942-NEXT: ;;#ASMSTART4213; GFX942-NEXT: ; def s[0:7]4214; GFX942-NEXT: ;;#ASMEND4215; GFX942-NEXT: s_mov_b32 s8, s64216; GFX942-NEXT: s_mov_b32 s9, s74217; GFX942-NEXT: s_mov_b32 s10, s04218; GFX942-NEXT: s_mov_b32 s11, s14219; GFX942-NEXT: ;;#ASMSTART4220; GFX942-NEXT: ; use s[8:11]4221; GFX942-NEXT: ;;#ASMEND4222; GFX942-NEXT: s_setpc_b64 s[30:31]4223 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4224 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4225 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 4>4226 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4227 ret void4228}4229 4230define void @s_shuffle_v2p0_v4p0__7_5() {4231; GFX9-LABEL: s_shuffle_v2p0_v4p0__7_5:4232; GFX9: ; %bb.0:4233; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4234; GFX9-NEXT: ;;#ASMSTART4235; GFX9-NEXT: ; def s[8:15]4236; GFX9-NEXT: ;;#ASMEND4237; GFX9-NEXT: s_mov_b32 s8, s144238; GFX9-NEXT: s_mov_b32 s9, s154239; GFX9-NEXT: ;;#ASMSTART4240; GFX9-NEXT: ; use s[8:11]4241; GFX9-NEXT: ;;#ASMEND4242; GFX9-NEXT: s_setpc_b64 s[30:31]4243 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4244 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4245 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 5>4246 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4247 ret void4248}4249 4250define void @s_shuffle_v2p0_v4p0__7_6() {4251; GFX900-LABEL: s_shuffle_v2p0_v4p0__7_6:4252; GFX900: ; %bb.0:4253; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4254; GFX900-NEXT: ;;#ASMSTART4255; GFX900-NEXT: ; def s[8:15]4256; GFX900-NEXT: ;;#ASMEND4257; GFX900-NEXT: s_mov_b32 s8, s144258; GFX900-NEXT: s_mov_b32 s9, s154259; GFX900-NEXT: s_mov_b32 s10, s124260; GFX900-NEXT: s_mov_b32 s11, s134261; GFX900-NEXT: ;;#ASMSTART4262; GFX900-NEXT: ; use s[8:11]4263; GFX900-NEXT: ;;#ASMEND4264; GFX900-NEXT: s_setpc_b64 s[30:31]4265;4266; GFX90A-LABEL: s_shuffle_v2p0_v4p0__7_6:4267; GFX90A: ; %bb.0:4268; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4269; GFX90A-NEXT: ;;#ASMSTART4270; GFX90A-NEXT: ; def s[8:15]4271; GFX90A-NEXT: ;;#ASMEND4272; GFX90A-NEXT: s_mov_b32 s8, s144273; GFX90A-NEXT: s_mov_b32 s9, s154274; GFX90A-NEXT: s_mov_b32 s10, s124275; GFX90A-NEXT: s_mov_b32 s11, s134276; GFX90A-NEXT: ;;#ASMSTART4277; GFX90A-NEXT: ; use s[8:11]4278; GFX90A-NEXT: ;;#ASMEND4279; GFX90A-NEXT: s_setpc_b64 s[30:31]4280;4281; GFX942-LABEL: s_shuffle_v2p0_v4p0__7_6:4282; GFX942: ; %bb.0:4283; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4284; GFX942-NEXT: ;;#ASMSTART4285; GFX942-NEXT: ; def s[0:7]4286; GFX942-NEXT: ;;#ASMEND4287; GFX942-NEXT: s_mov_b32 s8, s64288; GFX942-NEXT: s_mov_b32 s9, s74289; GFX942-NEXT: s_mov_b32 s10, s44290; GFX942-NEXT: s_mov_b32 s11, s54291; GFX942-NEXT: ;;#ASMSTART4292; GFX942-NEXT: ; use s[8:11]4293; GFX942-NEXT: ;;#ASMEND4294; GFX942-NEXT: s_setpc_b64 s[30:31]4295 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4296 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4297 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 6>4298 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4299 ret void4300}4301 4302define void @s_shuffle_v2p0_v4p0__7_7() {4303; GFX9-LABEL: s_shuffle_v2p0_v4p0__7_7:4304; GFX9: ; %bb.0:4305; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4306; GFX9-NEXT: ;;#ASMSTART4307; GFX9-NEXT: ; def s[4:11]4308; GFX9-NEXT: ;;#ASMEND4309; GFX9-NEXT: s_mov_b32 s8, s104310; GFX9-NEXT: s_mov_b32 s9, s114311; GFX9-NEXT: ;;#ASMSTART4312; GFX9-NEXT: ; use s[8:11]4313; GFX9-NEXT: ;;#ASMEND4314; GFX9-NEXT: s_setpc_b64 s[30:31]4315 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4316 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4317 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 7, i32 7>4318 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4319 ret void4320}4321 4322define void @s_shuffle_v2p0_v4p0__u_0() {4323; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_0:4324; GFX900: ; %bb.0:4325; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4326; GFX900-NEXT: ;;#ASMSTART4327; GFX900-NEXT: ; def s[4:11]4328; GFX900-NEXT: ;;#ASMEND4329; GFX900-NEXT: s_mov_b32 s10, s44330; GFX900-NEXT: s_mov_b32 s11, s54331; GFX900-NEXT: ;;#ASMSTART4332; GFX900-NEXT: ; use s[8:11]4333; GFX900-NEXT: ;;#ASMEND4334; GFX900-NEXT: s_setpc_b64 s[30:31]4335;4336; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_0:4337; GFX90A: ; %bb.0:4338; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4339; GFX90A-NEXT: ;;#ASMSTART4340; GFX90A-NEXT: ; def s[4:11]4341; GFX90A-NEXT: ;;#ASMEND4342; GFX90A-NEXT: s_mov_b32 s10, s44343; GFX90A-NEXT: s_mov_b32 s11, s54344; GFX90A-NEXT: ;;#ASMSTART4345; GFX90A-NEXT: ; use s[8:11]4346; GFX90A-NEXT: ;;#ASMEND4347; GFX90A-NEXT: s_setpc_b64 s[30:31]4348;4349; GFX942-LABEL: s_shuffle_v2p0_v4p0__u_0:4350; GFX942: ; %bb.0:4351; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4352; GFX942-NEXT: ;;#ASMSTART4353; GFX942-NEXT: ; def s[0:7]4354; GFX942-NEXT: ;;#ASMEND4355; GFX942-NEXT: s_mov_b32 s10, s04356; GFX942-NEXT: s_mov_b32 s11, s14357; GFX942-NEXT: ;;#ASMSTART4358; GFX942-NEXT: ; use s[8:11]4359; GFX942-NEXT: ;;#ASMEND4360; GFX942-NEXT: s_setpc_b64 s[30:31]4361 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4362 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 0>4363 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4364 ret void4365}4366 4367define void @s_shuffle_v2p0_v4p0__0_0() {4368; GFX9-LABEL: s_shuffle_v2p0_v4p0__0_0:4369; GFX9: ; %bb.0:4370; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4371; GFX9-NEXT: ;;#ASMSTART4372; GFX9-NEXT: ; def s[8:15]4373; GFX9-NEXT: ;;#ASMEND4374; GFX9-NEXT: s_mov_b32 s10, s84375; GFX9-NEXT: s_mov_b32 s11, s94376; GFX9-NEXT: ;;#ASMSTART4377; GFX9-NEXT: ; use s[8:11]4378; GFX9-NEXT: ;;#ASMEND4379; GFX9-NEXT: s_setpc_b64 s[30:31]4380 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4381 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> zeroinitializer4382 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4383 ret void4384}4385 4386define void @s_shuffle_v2p0_v4p0__1_0() {4387; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_0:4388; GFX900: ; %bb.0:4389; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4390; GFX900-NEXT: ;;#ASMSTART4391; GFX900-NEXT: ; def s[4:11]4392; GFX900-NEXT: ;;#ASMEND4393; GFX900-NEXT: s_mov_b32 s8, s64394; GFX900-NEXT: s_mov_b32 s9, s74395; GFX900-NEXT: s_mov_b32 s10, s44396; GFX900-NEXT: s_mov_b32 s11, s54397; GFX900-NEXT: ;;#ASMSTART4398; GFX900-NEXT: ; use s[8:11]4399; GFX900-NEXT: ;;#ASMEND4400; GFX900-NEXT: s_setpc_b64 s[30:31]4401;4402; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_0:4403; GFX90A: ; %bb.0:4404; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4405; GFX90A-NEXT: ;;#ASMSTART4406; GFX90A-NEXT: ; def s[4:11]4407; GFX90A-NEXT: ;;#ASMEND4408; GFX90A-NEXT: s_mov_b32 s8, s64409; GFX90A-NEXT: s_mov_b32 s9, s74410; GFX90A-NEXT: s_mov_b32 s10, s44411; GFX90A-NEXT: s_mov_b32 s11, s54412; GFX90A-NEXT: ;;#ASMSTART4413; GFX90A-NEXT: ; use s[8:11]4414; GFX90A-NEXT: ;;#ASMEND4415; GFX90A-NEXT: s_setpc_b64 s[30:31]4416;4417; GFX942-LABEL: s_shuffle_v2p0_v4p0__1_0:4418; GFX942: ; %bb.0:4419; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4420; GFX942-NEXT: ;;#ASMSTART4421; GFX942-NEXT: ; def s[0:7]4422; GFX942-NEXT: ;;#ASMEND4423; GFX942-NEXT: s_mov_b32 s8, s24424; GFX942-NEXT: s_mov_b32 s9, s34425; GFX942-NEXT: s_mov_b32 s10, s04426; GFX942-NEXT: s_mov_b32 s11, s14427; GFX942-NEXT: ;;#ASMSTART4428; GFX942-NEXT: ; use s[8:11]4429; GFX942-NEXT: ;;#ASMEND4430; GFX942-NEXT: s_setpc_b64 s[30:31]4431 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4432 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 0>4433 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4434 ret void4435}4436 4437define void @s_shuffle_v2p0_v4p0__2_0() {4438; GFX9-LABEL: s_shuffle_v2p0_v4p0__2_0:4439; GFX9: ; %bb.0:4440; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4441; GFX9-NEXT: ;;#ASMSTART4442; GFX9-NEXT: ; def s[4:11]4443; GFX9-NEXT: ;;#ASMEND4444; GFX9-NEXT: s_mov_b32 s10, s44445; GFX9-NEXT: s_mov_b32 s11, s54446; GFX9-NEXT: ;;#ASMSTART4447; GFX9-NEXT: ; use s[8:11]4448; GFX9-NEXT: ;;#ASMEND4449; GFX9-NEXT: s_setpc_b64 s[30:31]4450 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4451 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 0>4452 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4453 ret void4454}4455 4456define void @s_shuffle_v2p0_v4p0__3_0() {4457; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_0:4458; GFX900: ; %bb.0:4459; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4460; GFX900-NEXT: ;;#ASMSTART4461; GFX900-NEXT: ; def s[4:11]4462; GFX900-NEXT: ;;#ASMEND4463; GFX900-NEXT: s_mov_b32 s8, s104464; GFX900-NEXT: s_mov_b32 s9, s114465; GFX900-NEXT: s_mov_b32 s10, s44466; GFX900-NEXT: s_mov_b32 s11, s54467; GFX900-NEXT: ;;#ASMSTART4468; GFX900-NEXT: ; use s[8:11]4469; GFX900-NEXT: ;;#ASMEND4470; GFX900-NEXT: s_setpc_b64 s[30:31]4471;4472; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_0:4473; GFX90A: ; %bb.0:4474; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4475; GFX90A-NEXT: ;;#ASMSTART4476; GFX90A-NEXT: ; def s[4:11]4477; GFX90A-NEXT: ;;#ASMEND4478; GFX90A-NEXT: s_mov_b32 s8, s104479; GFX90A-NEXT: s_mov_b32 s9, s114480; GFX90A-NEXT: s_mov_b32 s10, s44481; GFX90A-NEXT: s_mov_b32 s11, s54482; GFX90A-NEXT: ;;#ASMSTART4483; GFX90A-NEXT: ; use s[8:11]4484; GFX90A-NEXT: ;;#ASMEND4485; GFX90A-NEXT: s_setpc_b64 s[30:31]4486;4487; GFX942-LABEL: s_shuffle_v2p0_v4p0__3_0:4488; GFX942: ; %bb.0:4489; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4490; GFX942-NEXT: ;;#ASMSTART4491; GFX942-NEXT: ; def s[0:7]4492; GFX942-NEXT: ;;#ASMEND4493; GFX942-NEXT: s_mov_b32 s8, s64494; GFX942-NEXT: s_mov_b32 s9, s74495; GFX942-NEXT: s_mov_b32 s10, s04496; GFX942-NEXT: s_mov_b32 s11, s14497; GFX942-NEXT: ;;#ASMSTART4498; GFX942-NEXT: ; use s[8:11]4499; GFX942-NEXT: ;;#ASMEND4500; GFX942-NEXT: s_setpc_b64 s[30:31]4501 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4502 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 0>4503 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4504 ret void4505}4506 4507define void @s_shuffle_v2p0_v4p0__4_0() {4508; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_0:4509; GFX900: ; %bb.0:4510; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4511; GFX900-NEXT: ;;#ASMSTART4512; GFX900-NEXT: ; def s[4:11]4513; GFX900-NEXT: ;;#ASMEND4514; GFX900-NEXT: s_mov_b32 s10, s44515; GFX900-NEXT: s_mov_b32 s11, s54516; GFX900-NEXT: ;;#ASMSTART4517; GFX900-NEXT: ; use s[8:11]4518; GFX900-NEXT: ;;#ASMEND4519; GFX900-NEXT: s_setpc_b64 s[30:31]4520;4521; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_0:4522; GFX90A: ; %bb.0:4523; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4524; GFX90A-NEXT: ;;#ASMSTART4525; GFX90A-NEXT: ; def s[4:11]4526; GFX90A-NEXT: ;;#ASMEND4527; GFX90A-NEXT: s_mov_b32 s10, s44528; GFX90A-NEXT: s_mov_b32 s11, s54529; GFX90A-NEXT: ;;#ASMSTART4530; GFX90A-NEXT: ; use s[8:11]4531; GFX90A-NEXT: ;;#ASMEND4532; GFX90A-NEXT: s_setpc_b64 s[30:31]4533;4534; GFX942-LABEL: s_shuffle_v2p0_v4p0__4_0:4535; GFX942: ; %bb.0:4536; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4537; GFX942-NEXT: ;;#ASMSTART4538; GFX942-NEXT: ; def s[0:7]4539; GFX942-NEXT: ;;#ASMEND4540; GFX942-NEXT: s_mov_b32 s10, s04541; GFX942-NEXT: s_mov_b32 s11, s14542; GFX942-NEXT: ;;#ASMSTART4543; GFX942-NEXT: ; use s[8:11]4544; GFX942-NEXT: ;;#ASMEND4545; GFX942-NEXT: s_setpc_b64 s[30:31]4546 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4547 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 0>4548 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4549 ret void4550}4551 4552define void @s_shuffle_v2p0_v4p0__5_0() {4553; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_0:4554; GFX900: ; %bb.0:4555; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4556; GFX900-NEXT: ;;#ASMSTART4557; GFX900-NEXT: ; def s[4:11]4558; GFX900-NEXT: ;;#ASMEND4559; GFX900-NEXT: ;;#ASMSTART4560; GFX900-NEXT: ; def s[8:15]4561; GFX900-NEXT: ;;#ASMEND4562; GFX900-NEXT: s_mov_b32 s8, s104563; GFX900-NEXT: s_mov_b32 s9, s114564; GFX900-NEXT: s_mov_b32 s10, s44565; GFX900-NEXT: s_mov_b32 s11, s54566; GFX900-NEXT: ;;#ASMSTART4567; GFX900-NEXT: ; use s[8:11]4568; GFX900-NEXT: ;;#ASMEND4569; GFX900-NEXT: s_setpc_b64 s[30:31]4570;4571; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_0:4572; GFX90A: ; %bb.0:4573; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4574; GFX90A-NEXT: ;;#ASMSTART4575; GFX90A-NEXT: ; def s[4:11]4576; GFX90A-NEXT: ;;#ASMEND4577; GFX90A-NEXT: ;;#ASMSTART4578; GFX90A-NEXT: ; def s[8:15]4579; GFX90A-NEXT: ;;#ASMEND4580; GFX90A-NEXT: s_mov_b32 s8, s104581; GFX90A-NEXT: s_mov_b32 s9, s114582; GFX90A-NEXT: s_mov_b32 s10, s44583; GFX90A-NEXT: s_mov_b32 s11, s54584; GFX90A-NEXT: ;;#ASMSTART4585; GFX90A-NEXT: ; use s[8:11]4586; GFX90A-NEXT: ;;#ASMEND4587; GFX90A-NEXT: s_setpc_b64 s[30:31]4588;4589; GFX942-LABEL: s_shuffle_v2p0_v4p0__5_0:4590; GFX942: ; %bb.0:4591; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4592; GFX942-NEXT: ;;#ASMSTART4593; GFX942-NEXT: ; def s[0:7]4594; GFX942-NEXT: ;;#ASMEND4595; GFX942-NEXT: s_nop 04596; GFX942-NEXT: ;;#ASMSTART4597; GFX942-NEXT: ; def s[4:11]4598; GFX942-NEXT: ;;#ASMEND4599; GFX942-NEXT: s_mov_b32 s8, s64600; GFX942-NEXT: s_mov_b32 s9, s74601; GFX942-NEXT: s_mov_b32 s10, s04602; GFX942-NEXT: s_mov_b32 s11, s14603; GFX942-NEXT: ;;#ASMSTART4604; GFX942-NEXT: ; use s[8:11]4605; GFX942-NEXT: ;;#ASMEND4606; GFX942-NEXT: s_setpc_b64 s[30:31]4607 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4608 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4609 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 0>4610 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4611 ret void4612}4613 4614define void @s_shuffle_v2p0_v4p0__6_0() {4615; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_0:4616; GFX900: ; %bb.0:4617; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4618; GFX900-NEXT: ;;#ASMSTART4619; GFX900-NEXT: ; def s[4:11]4620; GFX900-NEXT: ;;#ASMEND4621; GFX900-NEXT: ;;#ASMSTART4622; GFX900-NEXT: ; def s[12:19]4623; GFX900-NEXT: ;;#ASMEND4624; GFX900-NEXT: s_mov_b32 s10, s124625; GFX900-NEXT: s_mov_b32 s11, s134626; GFX900-NEXT: ;;#ASMSTART4627; GFX900-NEXT: ; use s[8:11]4628; GFX900-NEXT: ;;#ASMEND4629; GFX900-NEXT: s_setpc_b64 s[30:31]4630;4631; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_0:4632; GFX90A: ; %bb.0:4633; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4634; GFX90A-NEXT: ;;#ASMSTART4635; GFX90A-NEXT: ; def s[4:11]4636; GFX90A-NEXT: ;;#ASMEND4637; GFX90A-NEXT: ;;#ASMSTART4638; GFX90A-NEXT: ; def s[12:19]4639; GFX90A-NEXT: ;;#ASMEND4640; GFX90A-NEXT: s_mov_b32 s10, s124641; GFX90A-NEXT: s_mov_b32 s11, s134642; GFX90A-NEXT: ;;#ASMSTART4643; GFX90A-NEXT: ; use s[8:11]4644; GFX90A-NEXT: ;;#ASMEND4645; GFX90A-NEXT: s_setpc_b64 s[30:31]4646;4647; GFX942-LABEL: s_shuffle_v2p0_v4p0__6_0:4648; GFX942: ; %bb.0:4649; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4650; GFX942-NEXT: ;;#ASMSTART4651; GFX942-NEXT: ; def s[0:7]4652; GFX942-NEXT: ;;#ASMEND4653; GFX942-NEXT: s_nop 04654; GFX942-NEXT: ;;#ASMSTART4655; GFX942-NEXT: ; def s[4:11]4656; GFX942-NEXT: ;;#ASMEND4657; GFX942-NEXT: s_mov_b32 s10, s04658; GFX942-NEXT: s_mov_b32 s11, s14659; GFX942-NEXT: ;;#ASMSTART4660; GFX942-NEXT: ; use s[8:11]4661; GFX942-NEXT: ;;#ASMEND4662; GFX942-NEXT: s_setpc_b64 s[30:31]4663 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4664 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4665 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 0>4666 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4667 ret void4668}4669 4670define void @s_shuffle_v2p0_v4p0__u_1() {4671; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_1:4672; GFX900: ; %bb.0:4673; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4674; GFX900-NEXT: ;;#ASMSTART4675; GFX900-NEXT: ; def s[8:15]4676; GFX900-NEXT: ;;#ASMEND4677; GFX900-NEXT: ;;#ASMSTART4678; GFX900-NEXT: ; use s[8:11]4679; GFX900-NEXT: ;;#ASMEND4680; GFX900-NEXT: s_setpc_b64 s[30:31]4681;4682; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_1:4683; GFX90A: ; %bb.0:4684; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4685; GFX90A-NEXT: ;;#ASMSTART4686; GFX90A-NEXT: ; def s[8:15]4687; GFX90A-NEXT: ;;#ASMEND4688; GFX90A-NEXT: ;;#ASMSTART4689; GFX90A-NEXT: ; use s[8:11]4690; GFX90A-NEXT: ;;#ASMEND4691; GFX90A-NEXT: s_setpc_b64 s[30:31]4692;4693; GFX942-LABEL: s_shuffle_v2p0_v4p0__u_1:4694; GFX942: ; %bb.0:4695; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4696; GFX942-NEXT: ;;#ASMSTART4697; GFX942-NEXT: ; def s[8:15]4698; GFX942-NEXT: ;;#ASMEND4699; GFX942-NEXT: s_nop 04700; GFX942-NEXT: ;;#ASMSTART4701; GFX942-NEXT: ; use s[8:11]4702; GFX942-NEXT: ;;#ASMEND4703; GFX942-NEXT: s_setpc_b64 s[30:31]4704 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4705 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 1>4706 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4707 ret void4708}4709 4710define void @s_shuffle_v2p0_v4p0__0_1() {4711; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_1:4712; GFX900: ; %bb.0:4713; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4714; GFX900-NEXT: ;;#ASMSTART4715; GFX900-NEXT: ; def s[8:15]4716; GFX900-NEXT: ;;#ASMEND4717; GFX900-NEXT: ;;#ASMSTART4718; GFX900-NEXT: ; use s[8:11]4719; GFX900-NEXT: ;;#ASMEND4720; GFX900-NEXT: s_setpc_b64 s[30:31]4721;4722; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_1:4723; GFX90A: ; %bb.0:4724; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4725; GFX90A-NEXT: ;;#ASMSTART4726; GFX90A-NEXT: ; def s[8:15]4727; GFX90A-NEXT: ;;#ASMEND4728; GFX90A-NEXT: ;;#ASMSTART4729; GFX90A-NEXT: ; use s[8:11]4730; GFX90A-NEXT: ;;#ASMEND4731; GFX90A-NEXT: s_setpc_b64 s[30:31]4732;4733; GFX942-LABEL: s_shuffle_v2p0_v4p0__0_1:4734; GFX942: ; %bb.0:4735; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4736; GFX942-NEXT: ;;#ASMSTART4737; GFX942-NEXT: ; def s[8:15]4738; GFX942-NEXT: ;;#ASMEND4739; GFX942-NEXT: s_nop 04740; GFX942-NEXT: ;;#ASMSTART4741; GFX942-NEXT: ; use s[8:11]4742; GFX942-NEXT: ;;#ASMEND4743; GFX942-NEXT: s_setpc_b64 s[30:31]4744 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4745 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 1>4746 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4747 ret void4748}4749 4750define void @s_shuffle_v2p0_v4p0__1_1() {4751; GFX9-LABEL: s_shuffle_v2p0_v4p0__1_1:4752; GFX9: ; %bb.0:4753; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4754; GFX9-NEXT: ;;#ASMSTART4755; GFX9-NEXT: ; def s[8:15]4756; GFX9-NEXT: ;;#ASMEND4757; GFX9-NEXT: s_mov_b32 s8, s104758; GFX9-NEXT: s_mov_b32 s9, s114759; GFX9-NEXT: ;;#ASMSTART4760; GFX9-NEXT: ; use s[8:11]4761; GFX9-NEXT: ;;#ASMEND4762; GFX9-NEXT: s_setpc_b64 s[30:31]4763 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4764 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 1>4765 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4766 ret void4767}4768 4769define void @s_shuffle_v2p0_v4p0__2_1() {4770; GFX9-LABEL: s_shuffle_v2p0_v4p0__2_1:4771; GFX9: ; %bb.0:4772; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4773; GFX9-NEXT: ;;#ASMSTART4774; GFX9-NEXT: ; def s[4:11]4775; GFX9-NEXT: ;;#ASMEND4776; GFX9-NEXT: s_mov_b32 s10, s64777; GFX9-NEXT: s_mov_b32 s11, s74778; GFX9-NEXT: ;;#ASMSTART4779; GFX9-NEXT: ; use s[8:11]4780; GFX9-NEXT: ;;#ASMEND4781; GFX9-NEXT: s_setpc_b64 s[30:31]4782 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4783 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 1>4784 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4785 ret void4786}4787 4788define void @s_shuffle_v2p0_v4p0__3_1() {4789; GFX9-LABEL: s_shuffle_v2p0_v4p0__3_1:4790; GFX9: ; %bb.0:4791; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4792; GFX9-NEXT: ;;#ASMSTART4793; GFX9-NEXT: ; def s[8:15]4794; GFX9-NEXT: ;;#ASMEND4795; GFX9-NEXT: s_mov_b32 s8, s144796; GFX9-NEXT: s_mov_b32 s9, s154797; GFX9-NEXT: ;;#ASMSTART4798; GFX9-NEXT: ; use s[8:11]4799; GFX9-NEXT: ;;#ASMEND4800; GFX9-NEXT: s_setpc_b64 s[30:31]4801 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4802 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 1>4803 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4804 ret void4805}4806 4807define void @s_shuffle_v2p0_v4p0__4_1() {4808; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_1:4809; GFX900: ; %bb.0:4810; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4811; GFX900-NEXT: ;;#ASMSTART4812; GFX900-NEXT: ; def s[8:15]4813; GFX900-NEXT: ;;#ASMEND4814; GFX900-NEXT: ;;#ASMSTART4815; GFX900-NEXT: ; use s[8:11]4816; GFX900-NEXT: ;;#ASMEND4817; GFX900-NEXT: s_setpc_b64 s[30:31]4818;4819; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_1:4820; GFX90A: ; %bb.0:4821; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4822; GFX90A-NEXT: ;;#ASMSTART4823; GFX90A-NEXT: ; def s[8:15]4824; GFX90A-NEXT: ;;#ASMEND4825; GFX90A-NEXT: ;;#ASMSTART4826; GFX90A-NEXT: ; use s[8:11]4827; GFX90A-NEXT: ;;#ASMEND4828; GFX90A-NEXT: s_setpc_b64 s[30:31]4829;4830; GFX942-LABEL: s_shuffle_v2p0_v4p0__4_1:4831; GFX942: ; %bb.0:4832; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4833; GFX942-NEXT: ;;#ASMSTART4834; GFX942-NEXT: ; def s[8:15]4835; GFX942-NEXT: ;;#ASMEND4836; GFX942-NEXT: s_nop 04837; GFX942-NEXT: ;;#ASMSTART4838; GFX942-NEXT: ; use s[8:11]4839; GFX942-NEXT: ;;#ASMEND4840; GFX942-NEXT: s_setpc_b64 s[30:31]4841 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4842 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 1>4843 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4844 ret void4845}4846 4847define void @s_shuffle_v2p0_v4p0__5_1() {4848; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_1:4849; GFX900: ; %bb.0:4850; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4851; GFX900-NEXT: ;;#ASMSTART4852; GFX900-NEXT: ; def s[8:15]4853; GFX900-NEXT: ;;#ASMEND4854; GFX900-NEXT: ;;#ASMSTART4855; GFX900-NEXT: ; def s[12:19]4856; GFX900-NEXT: ;;#ASMEND4857; GFX900-NEXT: s_mov_b32 s8, s144858; GFX900-NEXT: s_mov_b32 s9, s154859; GFX900-NEXT: ;;#ASMSTART4860; GFX900-NEXT: ; use s[8:11]4861; GFX900-NEXT: ;;#ASMEND4862; GFX900-NEXT: s_setpc_b64 s[30:31]4863;4864; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_1:4865; GFX90A: ; %bb.0:4866; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4867; GFX90A-NEXT: ;;#ASMSTART4868; GFX90A-NEXT: ; def s[8:15]4869; GFX90A-NEXT: ;;#ASMEND4870; GFX90A-NEXT: ;;#ASMSTART4871; GFX90A-NEXT: ; def s[12:19]4872; GFX90A-NEXT: ;;#ASMEND4873; GFX90A-NEXT: s_mov_b32 s8, s144874; GFX90A-NEXT: s_mov_b32 s9, s154875; GFX90A-NEXT: ;;#ASMSTART4876; GFX90A-NEXT: ; use s[8:11]4877; GFX90A-NEXT: ;;#ASMEND4878; GFX90A-NEXT: s_setpc_b64 s[30:31]4879;4880; GFX942-LABEL: s_shuffle_v2p0_v4p0__5_1:4881; GFX942: ; %bb.0:4882; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4883; GFX942-NEXT: ;;#ASMSTART4884; GFX942-NEXT: ; def s[8:15]4885; GFX942-NEXT: ;;#ASMEND4886; GFX942-NEXT: ;;#ASMSTART4887; GFX942-NEXT: ; def s[0:7]4888; GFX942-NEXT: ;;#ASMEND4889; GFX942-NEXT: s_mov_b32 s8, s24890; GFX942-NEXT: s_mov_b32 s9, s34891; GFX942-NEXT: ;;#ASMSTART4892; GFX942-NEXT: ; use s[8:11]4893; GFX942-NEXT: ;;#ASMEND4894; GFX942-NEXT: s_setpc_b64 s[30:31]4895 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4896 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4897 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 1>4898 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4899 ret void4900}4901 4902define void @s_shuffle_v2p0_v4p0__6_1() {4903; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_1:4904; GFX900: ; %bb.0:4905; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4906; GFX900-NEXT: ;;#ASMSTART4907; GFX900-NEXT: ; def s[4:11]4908; GFX900-NEXT: ;;#ASMEND4909; GFX900-NEXT: ;;#ASMSTART4910; GFX900-NEXT: ; def s[12:19]4911; GFX900-NEXT: ;;#ASMEND4912; GFX900-NEXT: s_mov_b32 s10, s144913; GFX900-NEXT: s_mov_b32 s11, s154914; GFX900-NEXT: ;;#ASMSTART4915; GFX900-NEXT: ; use s[8:11]4916; GFX900-NEXT: ;;#ASMEND4917; GFX900-NEXT: s_setpc_b64 s[30:31]4918;4919; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_1:4920; GFX90A: ; %bb.0:4921; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4922; GFX90A-NEXT: ;;#ASMSTART4923; GFX90A-NEXT: ; def s[4:11]4924; GFX90A-NEXT: ;;#ASMEND4925; GFX90A-NEXT: ;;#ASMSTART4926; GFX90A-NEXT: ; def s[12:19]4927; GFX90A-NEXT: ;;#ASMEND4928; GFX90A-NEXT: s_mov_b32 s10, s144929; GFX90A-NEXT: s_mov_b32 s11, s154930; GFX90A-NEXT: ;;#ASMSTART4931; GFX90A-NEXT: ; use s[8:11]4932; GFX90A-NEXT: ;;#ASMEND4933; GFX90A-NEXT: s_setpc_b64 s[30:31]4934;4935; GFX942-LABEL: s_shuffle_v2p0_v4p0__6_1:4936; GFX942: ; %bb.0:4937; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4938; GFX942-NEXT: ;;#ASMSTART4939; GFX942-NEXT: ; def s[0:7]4940; GFX942-NEXT: ;;#ASMEND4941; GFX942-NEXT: s_nop 04942; GFX942-NEXT: ;;#ASMSTART4943; GFX942-NEXT: ; def s[4:11]4944; GFX942-NEXT: ;;#ASMEND4945; GFX942-NEXT: s_mov_b32 s10, s24946; GFX942-NEXT: s_mov_b32 s11, s34947; GFX942-NEXT: ;;#ASMSTART4948; GFX942-NEXT: ; use s[8:11]4949; GFX942-NEXT: ;;#ASMEND4950; GFX942-NEXT: s_setpc_b64 s[30:31]4951 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4952 %vec1 = call <4 x ptr> asm "; def $0", "=s"()4953 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 1>4954 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)4955 ret void4956}4957 4958define void @s_shuffle_v2p0_v4p0__u_2() {4959; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_2:4960; GFX900: ; %bb.0:4961; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4962; GFX900-NEXT: ;;#ASMSTART4963; GFX900-NEXT: ; def s[4:11]4964; GFX900-NEXT: ;;#ASMEND4965; GFX900-NEXT: s_mov_b32 s10, s84966; GFX900-NEXT: s_mov_b32 s11, s94967; GFX900-NEXT: ;;#ASMSTART4968; GFX900-NEXT: ; use s[8:11]4969; GFX900-NEXT: ;;#ASMEND4970; GFX900-NEXT: s_setpc_b64 s[30:31]4971;4972; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_2:4973; GFX90A: ; %bb.0:4974; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4975; GFX90A-NEXT: ;;#ASMSTART4976; GFX90A-NEXT: ; def s[4:11]4977; GFX90A-NEXT: ;;#ASMEND4978; GFX90A-NEXT: s_mov_b32 s10, s84979; GFX90A-NEXT: s_mov_b32 s11, s94980; GFX90A-NEXT: ;;#ASMSTART4981; GFX90A-NEXT: ; use s[8:11]4982; GFX90A-NEXT: ;;#ASMEND4983; GFX90A-NEXT: s_setpc_b64 s[30:31]4984;4985; GFX942-LABEL: s_shuffle_v2p0_v4p0__u_2:4986; GFX942: ; %bb.0:4987; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4988; GFX942-NEXT: ;;#ASMSTART4989; GFX942-NEXT: ; def s[0:7]4990; GFX942-NEXT: ;;#ASMEND4991; GFX942-NEXT: s_mov_b32 s10, s44992; GFX942-NEXT: s_mov_b32 s11, s54993; GFX942-NEXT: ;;#ASMSTART4994; GFX942-NEXT: ; use s[8:11]4995; GFX942-NEXT: ;;#ASMEND4996; GFX942-NEXT: s_setpc_b64 s[30:31]4997 %vec0 = call <4 x ptr> asm "; def $0", "=s"()4998 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 2>4999 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5000 ret void5001}5002 5003define void @s_shuffle_v2p0_v4p0__0_2() {5004; GFX9-LABEL: s_shuffle_v2p0_v4p0__0_2:5005; GFX9: ; %bb.0:5006; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5007; GFX9-NEXT: ;;#ASMSTART5008; GFX9-NEXT: ; def s[8:15]5009; GFX9-NEXT: ;;#ASMEND5010; GFX9-NEXT: s_mov_b32 s10, s125011; GFX9-NEXT: s_mov_b32 s11, s135012; GFX9-NEXT: ;;#ASMSTART5013; GFX9-NEXT: ; use s[8:11]5014; GFX9-NEXT: ;;#ASMEND5015; GFX9-NEXT: s_setpc_b64 s[30:31]5016 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5017 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 2>5018 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5019 ret void5020}5021 5022define void @s_shuffle_v2p0_v4p0__1_2() {5023; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_2:5024; GFX900: ; %bb.0:5025; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5026; GFX900-NEXT: ;;#ASMSTART5027; GFX900-NEXT: ; def s[8:15]5028; GFX900-NEXT: ;;#ASMEND5029; GFX900-NEXT: s_mov_b32 s8, s105030; GFX900-NEXT: s_mov_b32 s9, s115031; GFX900-NEXT: s_mov_b32 s10, s125032; GFX900-NEXT: s_mov_b32 s11, s135033; GFX900-NEXT: ;;#ASMSTART5034; GFX900-NEXT: ; use s[8:11]5035; GFX900-NEXT: ;;#ASMEND5036; GFX900-NEXT: s_setpc_b64 s[30:31]5037;5038; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_2:5039; GFX90A: ; %bb.0:5040; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5041; GFX90A-NEXT: ;;#ASMSTART5042; GFX90A-NEXT: ; def s[8:15]5043; GFX90A-NEXT: ;;#ASMEND5044; GFX90A-NEXT: s_mov_b32 s8, s105045; GFX90A-NEXT: s_mov_b32 s9, s115046; GFX90A-NEXT: s_mov_b32 s10, s125047; GFX90A-NEXT: s_mov_b32 s11, s135048; GFX90A-NEXT: ;;#ASMSTART5049; GFX90A-NEXT: ; use s[8:11]5050; GFX90A-NEXT: ;;#ASMEND5051; GFX90A-NEXT: s_setpc_b64 s[30:31]5052;5053; GFX942-LABEL: s_shuffle_v2p0_v4p0__1_2:5054; GFX942: ; %bb.0:5055; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5056; GFX942-NEXT: ;;#ASMSTART5057; GFX942-NEXT: ; def s[0:7]5058; GFX942-NEXT: ;;#ASMEND5059; GFX942-NEXT: s_mov_b32 s8, s25060; GFX942-NEXT: s_mov_b32 s9, s35061; GFX942-NEXT: s_mov_b32 s10, s45062; GFX942-NEXT: s_mov_b32 s11, s55063; GFX942-NEXT: ;;#ASMSTART5064; GFX942-NEXT: ; use s[8:11]5065; GFX942-NEXT: ;;#ASMEND5066; GFX942-NEXT: s_setpc_b64 s[30:31]5067 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5068 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 2>5069 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5070 ret void5071}5072 5073define void @s_shuffle_v2p0_v4p0__2_2() {5074; GFX9-LABEL: s_shuffle_v2p0_v4p0__2_2:5075; GFX9: ; %bb.0:5076; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5077; GFX9-NEXT: ;;#ASMSTART5078; GFX9-NEXT: ; def s[4:11]5079; GFX9-NEXT: ;;#ASMEND5080; GFX9-NEXT: s_mov_b32 s10, s85081; GFX9-NEXT: s_mov_b32 s11, s95082; GFX9-NEXT: ;;#ASMSTART5083; GFX9-NEXT: ; use s[8:11]5084; GFX9-NEXT: ;;#ASMEND5085; GFX9-NEXT: s_setpc_b64 s[30:31]5086 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5087 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 2>5088 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5089 ret void5090}5091 5092define void @s_shuffle_v2p0_v4p0__3_2() {5093; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_2:5094; GFX900: ; %bb.0:5095; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5096; GFX900-NEXT: ;;#ASMSTART5097; GFX900-NEXT: ; def s[8:15]5098; GFX900-NEXT: ;;#ASMEND5099; GFX900-NEXT: s_mov_b32 s8, s145100; GFX900-NEXT: s_mov_b32 s9, s155101; GFX900-NEXT: s_mov_b32 s10, s125102; GFX900-NEXT: s_mov_b32 s11, s135103; GFX900-NEXT: ;;#ASMSTART5104; GFX900-NEXT: ; use s[8:11]5105; GFX900-NEXT: ;;#ASMEND5106; GFX900-NEXT: s_setpc_b64 s[30:31]5107;5108; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_2:5109; GFX90A: ; %bb.0:5110; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5111; GFX90A-NEXT: ;;#ASMSTART5112; GFX90A-NEXT: ; def s[8:15]5113; GFX90A-NEXT: ;;#ASMEND5114; GFX90A-NEXT: s_mov_b32 s8, s145115; GFX90A-NEXT: s_mov_b32 s9, s155116; GFX90A-NEXT: s_mov_b32 s10, s125117; GFX90A-NEXT: s_mov_b32 s11, s135118; GFX90A-NEXT: ;;#ASMSTART5119; GFX90A-NEXT: ; use s[8:11]5120; GFX90A-NEXT: ;;#ASMEND5121; GFX90A-NEXT: s_setpc_b64 s[30:31]5122;5123; GFX942-LABEL: s_shuffle_v2p0_v4p0__3_2:5124; GFX942: ; %bb.0:5125; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5126; GFX942-NEXT: ;;#ASMSTART5127; GFX942-NEXT: ; def s[0:7]5128; GFX942-NEXT: ;;#ASMEND5129; GFX942-NEXT: s_mov_b32 s8, s65130; GFX942-NEXT: s_mov_b32 s9, s75131; GFX942-NEXT: s_mov_b32 s10, s45132; GFX942-NEXT: s_mov_b32 s11, s55133; GFX942-NEXT: ;;#ASMSTART5134; GFX942-NEXT: ; use s[8:11]5135; GFX942-NEXT: ;;#ASMEND5136; GFX942-NEXT: s_setpc_b64 s[30:31]5137 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5138 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 2>5139 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5140 ret void5141}5142 5143define void @s_shuffle_v2p0_v4p0__4_2() {5144; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_2:5145; GFX900: ; %bb.0:5146; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5147; GFX900-NEXT: ;;#ASMSTART5148; GFX900-NEXT: ; def s[4:11]5149; GFX900-NEXT: ;;#ASMEND5150; GFX900-NEXT: s_mov_b32 s10, s85151; GFX900-NEXT: s_mov_b32 s11, s95152; GFX900-NEXT: ;;#ASMSTART5153; GFX900-NEXT: ; use s[8:11]5154; GFX900-NEXT: ;;#ASMEND5155; GFX900-NEXT: s_setpc_b64 s[30:31]5156;5157; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_2:5158; GFX90A: ; %bb.0:5159; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5160; GFX90A-NEXT: ;;#ASMSTART5161; GFX90A-NEXT: ; def s[4:11]5162; GFX90A-NEXT: ;;#ASMEND5163; GFX90A-NEXT: s_mov_b32 s10, s85164; GFX90A-NEXT: s_mov_b32 s11, s95165; GFX90A-NEXT: ;;#ASMSTART5166; GFX90A-NEXT: ; use s[8:11]5167; GFX90A-NEXT: ;;#ASMEND5168; GFX90A-NEXT: s_setpc_b64 s[30:31]5169;5170; GFX942-LABEL: s_shuffle_v2p0_v4p0__4_2:5171; GFX942: ; %bb.0:5172; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5173; GFX942-NEXT: ;;#ASMSTART5174; GFX942-NEXT: ; def s[0:7]5175; GFX942-NEXT: ;;#ASMEND5176; GFX942-NEXT: s_mov_b32 s10, s45177; GFX942-NEXT: s_mov_b32 s11, s55178; GFX942-NEXT: ;;#ASMSTART5179; GFX942-NEXT: ; use s[8:11]5180; GFX942-NEXT: ;;#ASMEND5181; GFX942-NEXT: s_setpc_b64 s[30:31]5182 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5183 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 2>5184 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5185 ret void5186}5187 5188define void @s_shuffle_v2p0_v4p0__5_2() {5189; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_2:5190; GFX900: ; %bb.0:5191; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5192; GFX900-NEXT: ;;#ASMSTART5193; GFX900-NEXT: ; def s[8:15]5194; GFX900-NEXT: ;;#ASMEND5195; GFX900-NEXT: ;;#ASMSTART5196; GFX900-NEXT: ; def s[4:11]5197; GFX900-NEXT: ;;#ASMEND5198; GFX900-NEXT: s_mov_b32 s8, s65199; GFX900-NEXT: s_mov_b32 s9, s75200; GFX900-NEXT: s_mov_b32 s10, s125201; GFX900-NEXT: s_mov_b32 s11, s135202; GFX900-NEXT: ;;#ASMSTART5203; GFX900-NEXT: ; use s[8:11]5204; GFX900-NEXT: ;;#ASMEND5205; GFX900-NEXT: s_setpc_b64 s[30:31]5206;5207; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_2:5208; GFX90A: ; %bb.0:5209; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5210; GFX90A-NEXT: ;;#ASMSTART5211; GFX90A-NEXT: ; def s[8:15]5212; GFX90A-NEXT: ;;#ASMEND5213; GFX90A-NEXT: ;;#ASMSTART5214; GFX90A-NEXT: ; def s[4:11]5215; GFX90A-NEXT: ;;#ASMEND5216; GFX90A-NEXT: s_mov_b32 s8, s65217; GFX90A-NEXT: s_mov_b32 s9, s75218; GFX90A-NEXT: s_mov_b32 s10, s125219; GFX90A-NEXT: s_mov_b32 s11, s135220; GFX90A-NEXT: ;;#ASMSTART5221; GFX90A-NEXT: ; use s[8:11]5222; GFX90A-NEXT: ;;#ASMEND5223; GFX90A-NEXT: s_setpc_b64 s[30:31]5224;5225; GFX942-LABEL: s_shuffle_v2p0_v4p0__5_2:5226; GFX942: ; %bb.0:5227; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5228; GFX942-NEXT: ;;#ASMSTART5229; GFX942-NEXT: ; def s[8:15]5230; GFX942-NEXT: ;;#ASMEND5231; GFX942-NEXT: ;;#ASMSTART5232; GFX942-NEXT: ; def s[0:7]5233; GFX942-NEXT: ;;#ASMEND5234; GFX942-NEXT: s_mov_b32 s8, s105235; GFX942-NEXT: s_mov_b32 s9, s115236; GFX942-NEXT: s_mov_b32 s10, s45237; GFX942-NEXT: s_mov_b32 s11, s55238; GFX942-NEXT: ;;#ASMSTART5239; GFX942-NEXT: ; use s[8:11]5240; GFX942-NEXT: ;;#ASMEND5241; GFX942-NEXT: s_setpc_b64 s[30:31]5242 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5243 %vec1 = call <4 x ptr> asm "; def $0", "=s"()5244 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 2>5245 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5246 ret void5247}5248 5249define void @s_shuffle_v2p0_v4p0__6_2() {5250; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_2:5251; GFX900: ; %bb.0:5252; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5253; GFX900-NEXT: ;;#ASMSTART5254; GFX900-NEXT: ; def s[8:15]5255; GFX900-NEXT: ;;#ASMEND5256; GFX900-NEXT: ;;#ASMSTART5257; GFX900-NEXT: ; def s[4:11]5258; GFX900-NEXT: ;;#ASMEND5259; GFX900-NEXT: s_mov_b32 s10, s125260; GFX900-NEXT: s_mov_b32 s11, s135261; GFX900-NEXT: ;;#ASMSTART5262; GFX900-NEXT: ; use s[8:11]5263; GFX900-NEXT: ;;#ASMEND5264; GFX900-NEXT: s_setpc_b64 s[30:31]5265;5266; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_2:5267; GFX90A: ; %bb.0:5268; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5269; GFX90A-NEXT: ;;#ASMSTART5270; GFX90A-NEXT: ; def s[8:15]5271; GFX90A-NEXT: ;;#ASMEND5272; GFX90A-NEXT: ;;#ASMSTART5273; GFX90A-NEXT: ; def s[4:11]5274; GFX90A-NEXT: ;;#ASMEND5275; GFX90A-NEXT: s_mov_b32 s10, s125276; GFX90A-NEXT: s_mov_b32 s11, s135277; GFX90A-NEXT: ;;#ASMSTART5278; GFX90A-NEXT: ; use s[8:11]5279; GFX90A-NEXT: ;;#ASMEND5280; GFX90A-NEXT: s_setpc_b64 s[30:31]5281;5282; GFX942-LABEL: s_shuffle_v2p0_v4p0__6_2:5283; GFX942: ; %bb.0:5284; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5285; GFX942-NEXT: ;;#ASMSTART5286; GFX942-NEXT: ; def s[8:15]5287; GFX942-NEXT: ;;#ASMEND5288; GFX942-NEXT: s_nop 05289; GFX942-NEXT: ;;#ASMSTART5290; GFX942-NEXT: ; def s[4:11]5291; GFX942-NEXT: ;;#ASMEND5292; GFX942-NEXT: s_mov_b32 s10, s125293; GFX942-NEXT: s_mov_b32 s11, s135294; GFX942-NEXT: ;;#ASMSTART5295; GFX942-NEXT: ; use s[8:11]5296; GFX942-NEXT: ;;#ASMEND5297; GFX942-NEXT: s_setpc_b64 s[30:31]5298 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5299 %vec1 = call <4 x ptr> asm "; def $0", "=s"()5300 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 2>5301 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5302 ret void5303}5304 5305define void @s_shuffle_v2p0_v4p0__u_3() {5306; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_3:5307; GFX900: ; %bb.0:5308; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5309; GFX900-NEXT: ;;#ASMSTART5310; GFX900-NEXT: ; def s[4:11]5311; GFX900-NEXT: ;;#ASMEND5312; GFX900-NEXT: ;;#ASMSTART5313; GFX900-NEXT: ; use s[8:11]5314; GFX900-NEXT: ;;#ASMEND5315; GFX900-NEXT: s_setpc_b64 s[30:31]5316;5317; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_3:5318; GFX90A: ; %bb.0:5319; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5320; GFX90A-NEXT: ;;#ASMSTART5321; GFX90A-NEXT: ; def s[4:11]5322; GFX90A-NEXT: ;;#ASMEND5323; GFX90A-NEXT: ;;#ASMSTART5324; GFX90A-NEXT: ; use s[8:11]5325; GFX90A-NEXT: ;;#ASMEND5326; GFX90A-NEXT: s_setpc_b64 s[30:31]5327;5328; GFX942-LABEL: s_shuffle_v2p0_v4p0__u_3:5329; GFX942: ; %bb.0:5330; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5331; GFX942-NEXT: ;;#ASMSTART5332; GFX942-NEXT: ; def s[4:11]5333; GFX942-NEXT: ;;#ASMEND5334; GFX942-NEXT: s_nop 05335; GFX942-NEXT: ;;#ASMSTART5336; GFX942-NEXT: ; use s[8:11]5337; GFX942-NEXT: ;;#ASMEND5338; GFX942-NEXT: s_setpc_b64 s[30:31]5339 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5340 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 3>5341 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5342 ret void5343}5344 5345define void @s_shuffle_v2p0_v4p0__0_3() {5346; GFX9-LABEL: s_shuffle_v2p0_v4p0__0_3:5347; GFX9: ; %bb.0:5348; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5349; GFX9-NEXT: ;;#ASMSTART5350; GFX9-NEXT: ; def s[8:15]5351; GFX9-NEXT: ;;#ASMEND5352; GFX9-NEXT: s_mov_b32 s10, s145353; GFX9-NEXT: s_mov_b32 s11, s155354; GFX9-NEXT: ;;#ASMSTART5355; GFX9-NEXT: ; use s[8:11]5356; GFX9-NEXT: ;;#ASMEND5357; GFX9-NEXT: s_setpc_b64 s[30:31]5358 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5359 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 3>5360 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5361 ret void5362}5363 5364define void @s_shuffle_v2p0_v4p0__1_3() {5365; GFX9-LABEL: s_shuffle_v2p0_v4p0__1_3:5366; GFX9: ; %bb.0:5367; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5368; GFX9-NEXT: ;;#ASMSTART5369; GFX9-NEXT: ; def s[4:11]5370; GFX9-NEXT: ;;#ASMEND5371; GFX9-NEXT: s_mov_b32 s8, s65372; GFX9-NEXT: s_mov_b32 s9, s75373; GFX9-NEXT: ;;#ASMSTART5374; GFX9-NEXT: ; use s[8:11]5375; GFX9-NEXT: ;;#ASMEND5376; GFX9-NEXT: s_setpc_b64 s[30:31]5377 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5378 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 3>5379 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5380 ret void5381}5382 5383define void @s_shuffle_v2p0_v4p0__2_3() {5384; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_3:5385; GFX900: ; %bb.0:5386; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5387; GFX900-NEXT: ;;#ASMSTART5388; GFX900-NEXT: ; def s[4:11]5389; GFX900-NEXT: ;;#ASMEND5390; GFX900-NEXT: ;;#ASMSTART5391; GFX900-NEXT: ; use s[8:11]5392; GFX900-NEXT: ;;#ASMEND5393; GFX900-NEXT: s_setpc_b64 s[30:31]5394;5395; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_3:5396; GFX90A: ; %bb.0:5397; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5398; GFX90A-NEXT: ;;#ASMSTART5399; GFX90A-NEXT: ; def s[4:11]5400; GFX90A-NEXT: ;;#ASMEND5401; GFX90A-NEXT: ;;#ASMSTART5402; GFX90A-NEXT: ; use s[8:11]5403; GFX90A-NEXT: ;;#ASMEND5404; GFX90A-NEXT: s_setpc_b64 s[30:31]5405;5406; GFX942-LABEL: s_shuffle_v2p0_v4p0__2_3:5407; GFX942: ; %bb.0:5408; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5409; GFX942-NEXT: ;;#ASMSTART5410; GFX942-NEXT: ; def s[4:11]5411; GFX942-NEXT: ;;#ASMEND5412; GFX942-NEXT: s_nop 05413; GFX942-NEXT: ;;#ASMSTART5414; GFX942-NEXT: ; use s[8:11]5415; GFX942-NEXT: ;;#ASMEND5416; GFX942-NEXT: s_setpc_b64 s[30:31]5417 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5418 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 3>5419 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5420 ret void5421}5422 5423define void @s_shuffle_v2p0_v4p0__3_3() {5424; GFX9-LABEL: s_shuffle_v2p0_v4p0__3_3:5425; GFX9: ; %bb.0:5426; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5427; GFX9-NEXT: ;;#ASMSTART5428; GFX9-NEXT: ; def s[4:11]5429; GFX9-NEXT: ;;#ASMEND5430; GFX9-NEXT: s_mov_b32 s8, s105431; GFX9-NEXT: s_mov_b32 s9, s115432; GFX9-NEXT: ;;#ASMSTART5433; GFX9-NEXT: ; use s[8:11]5434; GFX9-NEXT: ;;#ASMEND5435; GFX9-NEXT: s_setpc_b64 s[30:31]5436 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5437 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 3>5438 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5439 ret void5440}5441 5442define void @s_shuffle_v2p0_v4p0__4_3() {5443; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_3:5444; GFX900: ; %bb.0:5445; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5446; GFX900-NEXT: ;;#ASMSTART5447; GFX900-NEXT: ; def s[4:11]5448; GFX900-NEXT: ;;#ASMEND5449; GFX900-NEXT: ;;#ASMSTART5450; GFX900-NEXT: ; use s[8:11]5451; GFX900-NEXT: ;;#ASMEND5452; GFX900-NEXT: s_setpc_b64 s[30:31]5453;5454; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_3:5455; GFX90A: ; %bb.0:5456; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5457; GFX90A-NEXT: ;;#ASMSTART5458; GFX90A-NEXT: ; def s[4:11]5459; GFX90A-NEXT: ;;#ASMEND5460; GFX90A-NEXT: ;;#ASMSTART5461; GFX90A-NEXT: ; use s[8:11]5462; GFX90A-NEXT: ;;#ASMEND5463; GFX90A-NEXT: s_setpc_b64 s[30:31]5464;5465; GFX942-LABEL: s_shuffle_v2p0_v4p0__4_3:5466; GFX942: ; %bb.0:5467; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5468; GFX942-NEXT: ;;#ASMSTART5469; GFX942-NEXT: ; def s[4:11]5470; GFX942-NEXT: ;;#ASMEND5471; GFX942-NEXT: s_nop 05472; GFX942-NEXT: ;;#ASMSTART5473; GFX942-NEXT: ; use s[8:11]5474; GFX942-NEXT: ;;#ASMEND5475; GFX942-NEXT: s_setpc_b64 s[30:31]5476 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5477 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 3>5478 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5479 ret void5480}5481 5482define void @s_shuffle_v2p0_v4p0__5_3() {5483; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_3:5484; GFX900: ; %bb.0:5485; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5486; GFX900-NEXT: ;;#ASMSTART5487; GFX900-NEXT: ; def s[4:11]5488; GFX900-NEXT: ;;#ASMEND5489; GFX900-NEXT: ;;#ASMSTART5490; GFX900-NEXT: ; def s[12:19]5491; GFX900-NEXT: ;;#ASMEND5492; GFX900-NEXT: s_mov_b32 s8, s145493; GFX900-NEXT: s_mov_b32 s9, s155494; GFX900-NEXT: ;;#ASMSTART5495; GFX900-NEXT: ; use s[8:11]5496; GFX900-NEXT: ;;#ASMEND5497; GFX900-NEXT: s_setpc_b64 s[30:31]5498;5499; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_3:5500; GFX90A: ; %bb.0:5501; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5502; GFX90A-NEXT: ;;#ASMSTART5503; GFX90A-NEXT: ; def s[4:11]5504; GFX90A-NEXT: ;;#ASMEND5505; GFX90A-NEXT: ;;#ASMSTART5506; GFX90A-NEXT: ; def s[12:19]5507; GFX90A-NEXT: ;;#ASMEND5508; GFX90A-NEXT: s_mov_b32 s8, s145509; GFX90A-NEXT: s_mov_b32 s9, s155510; GFX90A-NEXT: ;;#ASMSTART5511; GFX90A-NEXT: ; use s[8:11]5512; GFX90A-NEXT: ;;#ASMEND5513; GFX90A-NEXT: s_setpc_b64 s[30:31]5514;5515; GFX942-LABEL: s_shuffle_v2p0_v4p0__5_3:5516; GFX942: ; %bb.0:5517; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5518; GFX942-NEXT: ;;#ASMSTART5519; GFX942-NEXT: ; def s[4:11]5520; GFX942-NEXT: ;;#ASMEND5521; GFX942-NEXT: s_nop 05522; GFX942-NEXT: ;;#ASMSTART5523; GFX942-NEXT: ; def s[0:7]5524; GFX942-NEXT: ;;#ASMEND5525; GFX942-NEXT: s_mov_b32 s8, s25526; GFX942-NEXT: s_mov_b32 s9, s35527; GFX942-NEXT: ;;#ASMSTART5528; GFX942-NEXT: ; use s[8:11]5529; GFX942-NEXT: ;;#ASMEND5530; GFX942-NEXT: s_setpc_b64 s[30:31]5531 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5532 %vec1 = call <4 x ptr> asm "; def $0", "=s"()5533 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 3>5534 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5535 ret void5536}5537 5538define void @s_shuffle_v2p0_v4p0__6_3() {5539; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_3:5540; GFX900: ; %bb.0:5541; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5542; GFX900-NEXT: ;;#ASMSTART5543; GFX900-NEXT: ; def s[8:15]5544; GFX900-NEXT: ;;#ASMEND5545; GFX900-NEXT: ;;#ASMSTART5546; GFX900-NEXT: ; def s[4:11]5547; GFX900-NEXT: ;;#ASMEND5548; GFX900-NEXT: s_mov_b32 s10, s145549; GFX900-NEXT: s_mov_b32 s11, s155550; GFX900-NEXT: ;;#ASMSTART5551; GFX900-NEXT: ; use s[8:11]5552; GFX900-NEXT: ;;#ASMEND5553; GFX900-NEXT: s_setpc_b64 s[30:31]5554;5555; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_3:5556; GFX90A: ; %bb.0:5557; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5558; GFX90A-NEXT: ;;#ASMSTART5559; GFX90A-NEXT: ; def s[8:15]5560; GFX90A-NEXT: ;;#ASMEND5561; GFX90A-NEXT: ;;#ASMSTART5562; GFX90A-NEXT: ; def s[4:11]5563; GFX90A-NEXT: ;;#ASMEND5564; GFX90A-NEXT: s_mov_b32 s10, s145565; GFX90A-NEXT: s_mov_b32 s11, s155566; GFX90A-NEXT: ;;#ASMSTART5567; GFX90A-NEXT: ; use s[8:11]5568; GFX90A-NEXT: ;;#ASMEND5569; GFX90A-NEXT: s_setpc_b64 s[30:31]5570;5571; GFX942-LABEL: s_shuffle_v2p0_v4p0__6_3:5572; GFX942: ; %bb.0:5573; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5574; GFX942-NEXT: ;;#ASMSTART5575; GFX942-NEXT: ; def s[8:15]5576; GFX942-NEXT: ;;#ASMEND5577; GFX942-NEXT: s_nop 05578; GFX942-NEXT: ;;#ASMSTART5579; GFX942-NEXT: ; def s[4:11]5580; GFX942-NEXT: ;;#ASMEND5581; GFX942-NEXT: s_mov_b32 s10, s145582; GFX942-NEXT: s_mov_b32 s11, s155583; GFX942-NEXT: ;;#ASMSTART5584; GFX942-NEXT: ; use s[8:11]5585; GFX942-NEXT: ;;#ASMEND5586; GFX942-NEXT: s_setpc_b64 s[30:31]5587 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5588 %vec1 = call <4 x ptr> asm "; def $0", "=s"()5589 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 3>5590 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5591 ret void5592}5593 5594define void @s_shuffle_v2p0_v4p0__u_4() {5595; GFX9-LABEL: s_shuffle_v2p0_v4p0__u_4:5596; GFX9: ; %bb.0:5597; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5598; GFX9-NEXT: ;;#ASMSTART5599; GFX9-NEXT: ; use s[8:11]5600; GFX9-NEXT: ;;#ASMEND5601; GFX9-NEXT: s_setpc_b64 s[30:31]5602 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5603 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 poison, i32 4>5604 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5605 ret void5606}5607 5608define void @s_shuffle_v2p0_v4p0__0_4() {5609; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_4:5610; GFX900: ; %bb.0:5611; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5612; GFX900-NEXT: ;;#ASMSTART5613; GFX900-NEXT: ; def s[8:15]5614; GFX900-NEXT: ;;#ASMEND5615; GFX900-NEXT: ;;#ASMSTART5616; GFX900-NEXT: ; use s[8:11]5617; GFX900-NEXT: ;;#ASMEND5618; GFX900-NEXT: s_setpc_b64 s[30:31]5619;5620; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_4:5621; GFX90A: ; %bb.0:5622; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5623; GFX90A-NEXT: ;;#ASMSTART5624; GFX90A-NEXT: ; def s[8:15]5625; GFX90A-NEXT: ;;#ASMEND5626; GFX90A-NEXT: ;;#ASMSTART5627; GFX90A-NEXT: ; use s[8:11]5628; GFX90A-NEXT: ;;#ASMEND5629; GFX90A-NEXT: s_setpc_b64 s[30:31]5630;5631; GFX942-LABEL: s_shuffle_v2p0_v4p0__0_4:5632; GFX942: ; %bb.0:5633; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5634; GFX942-NEXT: ;;#ASMSTART5635; GFX942-NEXT: ; def s[8:15]5636; GFX942-NEXT: ;;#ASMEND5637; GFX942-NEXT: s_nop 05638; GFX942-NEXT: ;;#ASMSTART5639; GFX942-NEXT: ; use s[8:11]5640; GFX942-NEXT: ;;#ASMEND5641; GFX942-NEXT: s_setpc_b64 s[30:31]5642 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5643 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 0, i32 4>5644 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5645 ret void5646}5647 5648define void @s_shuffle_v2p0_v4p0__1_4() {5649; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_4:5650; GFX900: ; %bb.0:5651; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5652; GFX900-NEXT: ;;#ASMSTART5653; GFX900-NEXT: ; def s[4:11]5654; GFX900-NEXT: ;;#ASMEND5655; GFX900-NEXT: s_mov_b32 s8, s65656; GFX900-NEXT: s_mov_b32 s9, s75657; GFX900-NEXT: ;;#ASMSTART5658; GFX900-NEXT: ; use s[8:11]5659; GFX900-NEXT: ;;#ASMEND5660; GFX900-NEXT: s_setpc_b64 s[30:31]5661;5662; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_4:5663; GFX90A: ; %bb.0:5664; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5665; GFX90A-NEXT: ;;#ASMSTART5666; GFX90A-NEXT: ; def s[4:11]5667; GFX90A-NEXT: ;;#ASMEND5668; GFX90A-NEXT: s_mov_b32 s8, s65669; GFX90A-NEXT: s_mov_b32 s9, s75670; GFX90A-NEXT: ;;#ASMSTART5671; GFX90A-NEXT: ; use s[8:11]5672; GFX90A-NEXT: ;;#ASMEND5673; GFX90A-NEXT: s_setpc_b64 s[30:31]5674;5675; GFX942-LABEL: s_shuffle_v2p0_v4p0__1_4:5676; GFX942: ; %bb.0:5677; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5678; GFX942-NEXT: ;;#ASMSTART5679; GFX942-NEXT: ; def s[0:7]5680; GFX942-NEXT: ;;#ASMEND5681; GFX942-NEXT: s_mov_b32 s8, s25682; GFX942-NEXT: s_mov_b32 s9, s35683; GFX942-NEXT: ;;#ASMSTART5684; GFX942-NEXT: ; use s[8:11]5685; GFX942-NEXT: ;;#ASMEND5686; GFX942-NEXT: s_setpc_b64 s[30:31]5687 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5688 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 1, i32 4>5689 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5690 ret void5691}5692 5693define void @s_shuffle_v2p0_v4p0__2_4() {5694; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_4:5695; GFX900: ; %bb.0:5696; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5697; GFX900-NEXT: ;;#ASMSTART5698; GFX900-NEXT: ; def s[4:11]5699; GFX900-NEXT: ;;#ASMEND5700; GFX900-NEXT: ;;#ASMSTART5701; GFX900-NEXT: ; use s[8:11]5702; GFX900-NEXT: ;;#ASMEND5703; GFX900-NEXT: s_setpc_b64 s[30:31]5704;5705; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_4:5706; GFX90A: ; %bb.0:5707; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5708; GFX90A-NEXT: ;;#ASMSTART5709; GFX90A-NEXT: ; def s[4:11]5710; GFX90A-NEXT: ;;#ASMEND5711; GFX90A-NEXT: ;;#ASMSTART5712; GFX90A-NEXT: ; use s[8:11]5713; GFX90A-NEXT: ;;#ASMEND5714; GFX90A-NEXT: s_setpc_b64 s[30:31]5715;5716; GFX942-LABEL: s_shuffle_v2p0_v4p0__2_4:5717; GFX942: ; %bb.0:5718; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5719; GFX942-NEXT: ;;#ASMSTART5720; GFX942-NEXT: ; def s[4:11]5721; GFX942-NEXT: ;;#ASMEND5722; GFX942-NEXT: s_nop 05723; GFX942-NEXT: ;;#ASMSTART5724; GFX942-NEXT: ; use s[8:11]5725; GFX942-NEXT: ;;#ASMEND5726; GFX942-NEXT: s_setpc_b64 s[30:31]5727 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5728 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 2, i32 4>5729 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5730 ret void5731}5732 5733define void @s_shuffle_v2p0_v4p0__3_4() {5734; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_4:5735; GFX900: ; %bb.0:5736; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5737; GFX900-NEXT: ;;#ASMSTART5738; GFX900-NEXT: ; def s[4:11]5739; GFX900-NEXT: ;;#ASMEND5740; GFX900-NEXT: s_mov_b32 s8, s105741; GFX900-NEXT: s_mov_b32 s9, s115742; GFX900-NEXT: ;;#ASMSTART5743; GFX900-NEXT: ; use s[8:11]5744; GFX900-NEXT: ;;#ASMEND5745; GFX900-NEXT: s_setpc_b64 s[30:31]5746;5747; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_4:5748; GFX90A: ; %bb.0:5749; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5750; GFX90A-NEXT: ;;#ASMSTART5751; GFX90A-NEXT: ; def s[4:11]5752; GFX90A-NEXT: ;;#ASMEND5753; GFX90A-NEXT: s_mov_b32 s8, s105754; GFX90A-NEXT: s_mov_b32 s9, s115755; GFX90A-NEXT: ;;#ASMSTART5756; GFX90A-NEXT: ; use s[8:11]5757; GFX90A-NEXT: ;;#ASMEND5758; GFX90A-NEXT: s_setpc_b64 s[30:31]5759;5760; GFX942-LABEL: s_shuffle_v2p0_v4p0__3_4:5761; GFX942: ; %bb.0:5762; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5763; GFX942-NEXT: ;;#ASMSTART5764; GFX942-NEXT: ; def s[0:7]5765; GFX942-NEXT: ;;#ASMEND5766; GFX942-NEXT: s_mov_b32 s8, s65767; GFX942-NEXT: s_mov_b32 s9, s75768; GFX942-NEXT: ;;#ASMSTART5769; GFX942-NEXT: ; use s[8:11]5770; GFX942-NEXT: ;;#ASMEND5771; GFX942-NEXT: s_setpc_b64 s[30:31]5772 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5773 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 3, i32 4>5774 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5775 ret void5776}5777 5778define void @s_shuffle_v2p0_v4p0__4_4() {5779; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_4:5780; GFX9: ; %bb.0:5781; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5782; GFX9-NEXT: ;;#ASMSTART5783; GFX9-NEXT: ; use s[8:11]5784; GFX9-NEXT: ;;#ASMEND5785; GFX9-NEXT: s_setpc_b64 s[30:31]5786 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5787 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> poison, <2 x i32> <i32 4, i32 4>5788 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5789 ret void5790}5791 5792define void @s_shuffle_v2p0_v4p0__5_4() {5793; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_4:5794; GFX900: ; %bb.0:5795; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5796; GFX900-NEXT: ;;#ASMSTART5797; GFX900-NEXT: ; def s[4:11]5798; GFX900-NEXT: ;;#ASMEND5799; GFX900-NEXT: s_mov_b32 s8, s65800; GFX900-NEXT: s_mov_b32 s9, s75801; GFX900-NEXT: s_mov_b32 s10, s45802; GFX900-NEXT: s_mov_b32 s11, s55803; GFX900-NEXT: ;;#ASMSTART5804; GFX900-NEXT: ; use s[8:11]5805; GFX900-NEXT: ;;#ASMEND5806; GFX900-NEXT: s_setpc_b64 s[30:31]5807;5808; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_4:5809; GFX90A: ; %bb.0:5810; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5811; GFX90A-NEXT: ;;#ASMSTART5812; GFX90A-NEXT: ; def s[4:11]5813; GFX90A-NEXT: ;;#ASMEND5814; GFX90A-NEXT: s_mov_b32 s8, s65815; GFX90A-NEXT: s_mov_b32 s9, s75816; GFX90A-NEXT: s_mov_b32 s10, s45817; GFX90A-NEXT: s_mov_b32 s11, s55818; GFX90A-NEXT: ;;#ASMSTART5819; GFX90A-NEXT: ; use s[8:11]5820; GFX90A-NEXT: ;;#ASMEND5821; GFX90A-NEXT: s_setpc_b64 s[30:31]5822;5823; GFX942-LABEL: s_shuffle_v2p0_v4p0__5_4:5824; GFX942: ; %bb.0:5825; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5826; GFX942-NEXT: ;;#ASMSTART5827; GFX942-NEXT: ; def s[0:7]5828; GFX942-NEXT: ;;#ASMEND5829; GFX942-NEXT: s_mov_b32 s8, s25830; GFX942-NEXT: s_mov_b32 s9, s35831; GFX942-NEXT: s_mov_b32 s10, s05832; GFX942-NEXT: s_mov_b32 s11, s15833; GFX942-NEXT: ;;#ASMSTART5834; GFX942-NEXT: ; use s[8:11]5835; GFX942-NEXT: ;;#ASMEND5836; GFX942-NEXT: s_setpc_b64 s[30:31]5837 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5838 %vec1 = call <4 x ptr> asm "; def $0", "=s"()5839 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 4>5840 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5841 ret void5842}5843 5844define void @s_shuffle_v2p0_v4p0__6_4() {5845; GFX9-LABEL: s_shuffle_v2p0_v4p0__6_4:5846; GFX9: ; %bb.0:5847; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5848; GFX9-NEXT: ;;#ASMSTART5849; GFX9-NEXT: ; def s[4:11]5850; GFX9-NEXT: ;;#ASMEND5851; GFX9-NEXT: s_mov_b32 s10, s45852; GFX9-NEXT: s_mov_b32 s11, s55853; GFX9-NEXT: ;;#ASMSTART5854; GFX9-NEXT: ; use s[8:11]5855; GFX9-NEXT: ;;#ASMEND5856; GFX9-NEXT: s_setpc_b64 s[30:31]5857 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5858 %vec1 = call <4 x ptr> asm "; def $0", "=s"()5859 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 4>5860 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5861 ret void5862}5863 5864define void @s_shuffle_v2p0_v4p0__u_5() {5865; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_5:5866; GFX900: ; %bb.0:5867; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5868; GFX900-NEXT: ;;#ASMSTART5869; GFX900-NEXT: ; def s[8:15]5870; GFX900-NEXT: ;;#ASMEND5871; GFX900-NEXT: ;;#ASMSTART5872; GFX900-NEXT: ; use s[8:11]5873; GFX900-NEXT: ;;#ASMEND5874; GFX900-NEXT: s_setpc_b64 s[30:31]5875;5876; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_5:5877; GFX90A: ; %bb.0:5878; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5879; GFX90A-NEXT: ;;#ASMSTART5880; GFX90A-NEXT: ; def s[8:15]5881; GFX90A-NEXT: ;;#ASMEND5882; GFX90A-NEXT: ;;#ASMSTART5883; GFX90A-NEXT: ; use s[8:11]5884; GFX90A-NEXT: ;;#ASMEND5885; GFX90A-NEXT: s_setpc_b64 s[30:31]5886;5887; GFX942-LABEL: s_shuffle_v2p0_v4p0__u_5:5888; GFX942: ; %bb.0:5889; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5890; GFX942-NEXT: ;;#ASMSTART5891; GFX942-NEXT: ; def s[8:15]5892; GFX942-NEXT: ;;#ASMEND5893; GFX942-NEXT: s_nop 05894; GFX942-NEXT: ;;#ASMSTART5895; GFX942-NEXT: ; use s[8:11]5896; GFX942-NEXT: ;;#ASMEND5897; GFX942-NEXT: s_setpc_b64 s[30:31]5898 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5899 %vec1 = call <4 x ptr> asm "; def $0", "=s"()5900 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>5901 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5902 ret void5903}5904 5905define void @s_shuffle_v2p0_v4p0__0_5() {5906; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_5:5907; GFX900: ; %bb.0:5908; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5909; GFX900-NEXT: ;;#ASMSTART5910; GFX900-NEXT: ; def s[8:15]5911; GFX900-NEXT: ;;#ASMEND5912; GFX900-NEXT: ;;#ASMSTART5913; GFX900-NEXT: ; def s[12:19]5914; GFX900-NEXT: ;;#ASMEND5915; GFX900-NEXT: s_mov_b32 s10, s145916; GFX900-NEXT: s_mov_b32 s11, s155917; GFX900-NEXT: ;;#ASMSTART5918; GFX900-NEXT: ; use s[8:11]5919; GFX900-NEXT: ;;#ASMEND5920; GFX900-NEXT: s_setpc_b64 s[30:31]5921;5922; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_5:5923; GFX90A: ; %bb.0:5924; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5925; GFX90A-NEXT: ;;#ASMSTART5926; GFX90A-NEXT: ; def s[8:15]5927; GFX90A-NEXT: ;;#ASMEND5928; GFX90A-NEXT: ;;#ASMSTART5929; GFX90A-NEXT: ; def s[12:19]5930; GFX90A-NEXT: ;;#ASMEND5931; GFX90A-NEXT: s_mov_b32 s10, s145932; GFX90A-NEXT: s_mov_b32 s11, s155933; GFX90A-NEXT: ;;#ASMSTART5934; GFX90A-NEXT: ; use s[8:11]5935; GFX90A-NEXT: ;;#ASMEND5936; GFX90A-NEXT: s_setpc_b64 s[30:31]5937;5938; GFX942-LABEL: s_shuffle_v2p0_v4p0__0_5:5939; GFX942: ; %bb.0:5940; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5941; GFX942-NEXT: ;;#ASMSTART5942; GFX942-NEXT: ; def s[8:15]5943; GFX942-NEXT: ;;#ASMEND5944; GFX942-NEXT: ;;#ASMSTART5945; GFX942-NEXT: ; def s[0:7]5946; GFX942-NEXT: ;;#ASMEND5947; GFX942-NEXT: s_mov_b32 s10, s25948; GFX942-NEXT: s_mov_b32 s11, s35949; GFX942-NEXT: ;;#ASMSTART5950; GFX942-NEXT: ; use s[8:11]5951; GFX942-NEXT: ;;#ASMEND5952; GFX942-NEXT: s_setpc_b64 s[30:31]5953 %vec0 = call <4 x ptr> asm "; def $0", "=s"()5954 %vec1 = call <4 x ptr> asm "; def $0", "=s"()5955 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 5>5956 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)5957 ret void5958}5959 5960define void @s_shuffle_v2p0_v4p0__1_5() {5961; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_5:5962; GFX900: ; %bb.0:5963; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5964; GFX900-NEXT: ;;#ASMSTART5965; GFX900-NEXT: ; def s[4:11]5966; GFX900-NEXT: ;;#ASMEND5967; GFX900-NEXT: ;;#ASMSTART5968; GFX900-NEXT: ; def s[8:15]5969; GFX900-NEXT: ;;#ASMEND5970; GFX900-NEXT: s_mov_b32 s8, s65971; GFX900-NEXT: s_mov_b32 s9, s75972; GFX900-NEXT: ;;#ASMSTART5973; GFX900-NEXT: ; use s[8:11]5974; GFX900-NEXT: ;;#ASMEND5975; GFX900-NEXT: s_setpc_b64 s[30:31]5976;5977; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_5:5978; GFX90A: ; %bb.0:5979; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5980; GFX90A-NEXT: ;;#ASMSTART5981; GFX90A-NEXT: ; def s[4:11]5982; GFX90A-NEXT: ;;#ASMEND5983; GFX90A-NEXT: ;;#ASMSTART5984; GFX90A-NEXT: ; def s[8:15]5985; GFX90A-NEXT: ;;#ASMEND5986; GFX90A-NEXT: s_mov_b32 s8, s65987; GFX90A-NEXT: s_mov_b32 s9, s75988; GFX90A-NEXT: ;;#ASMSTART5989; GFX90A-NEXT: ; use s[8:11]5990; GFX90A-NEXT: ;;#ASMEND5991; GFX90A-NEXT: s_setpc_b64 s[30:31]5992;5993; GFX942-LABEL: s_shuffle_v2p0_v4p0__1_5:5994; GFX942: ; %bb.0:5995; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5996; GFX942-NEXT: ;;#ASMSTART5997; GFX942-NEXT: ; def s[8:15]5998; GFX942-NEXT: ;;#ASMEND5999; GFX942-NEXT: ;;#ASMSTART6000; GFX942-NEXT: ; def s[0:7]6001; GFX942-NEXT: ;;#ASMEND6002; GFX942-NEXT: s_mov_b32 s8, s26003; GFX942-NEXT: s_mov_b32 s9, s36004; GFX942-NEXT: ;;#ASMSTART6005; GFX942-NEXT: ; use s[8:11]6006; GFX942-NEXT: ;;#ASMEND6007; GFX942-NEXT: s_setpc_b64 s[30:31]6008 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6009 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6010 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 5>6011 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6012 ret void6013}6014 6015define void @s_shuffle_v2p0_v4p0__2_5() {6016; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_5:6017; GFX900: ; %bb.0:6018; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6019; GFX900-NEXT: ;;#ASMSTART6020; GFX900-NEXT: ; def s[4:11]6021; GFX900-NEXT: ;;#ASMEND6022; GFX900-NEXT: ;;#ASMSTART6023; GFX900-NEXT: ; def s[12:19]6024; GFX900-NEXT: ;;#ASMEND6025; GFX900-NEXT: s_mov_b32 s10, s146026; GFX900-NEXT: s_mov_b32 s11, s156027; GFX900-NEXT: ;;#ASMSTART6028; GFX900-NEXT: ; use s[8:11]6029; GFX900-NEXT: ;;#ASMEND6030; GFX900-NEXT: s_setpc_b64 s[30:31]6031;6032; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_5:6033; GFX90A: ; %bb.0:6034; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6035; GFX90A-NEXT: ;;#ASMSTART6036; GFX90A-NEXT: ; def s[4:11]6037; GFX90A-NEXT: ;;#ASMEND6038; GFX90A-NEXT: ;;#ASMSTART6039; GFX90A-NEXT: ; def s[12:19]6040; GFX90A-NEXT: ;;#ASMEND6041; GFX90A-NEXT: s_mov_b32 s10, s146042; GFX90A-NEXT: s_mov_b32 s11, s156043; GFX90A-NEXT: ;;#ASMSTART6044; GFX90A-NEXT: ; use s[8:11]6045; GFX90A-NEXT: ;;#ASMEND6046; GFX90A-NEXT: s_setpc_b64 s[30:31]6047;6048; GFX942-LABEL: s_shuffle_v2p0_v4p0__2_5:6049; GFX942: ; %bb.0:6050; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6051; GFX942-NEXT: ;;#ASMSTART6052; GFX942-NEXT: ; def s[4:11]6053; GFX942-NEXT: ;;#ASMEND6054; GFX942-NEXT: s_nop 06055; GFX942-NEXT: ;;#ASMSTART6056; GFX942-NEXT: ; def s[0:7]6057; GFX942-NEXT: ;;#ASMEND6058; GFX942-NEXT: s_mov_b32 s10, s26059; GFX942-NEXT: s_mov_b32 s11, s36060; GFX942-NEXT: ;;#ASMSTART6061; GFX942-NEXT: ; use s[8:11]6062; GFX942-NEXT: ;;#ASMEND6063; GFX942-NEXT: s_setpc_b64 s[30:31]6064 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6065 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6066 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 5>6067 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6068 ret void6069}6070 6071define void @s_shuffle_v2p0_v4p0__3_5() {6072; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_5:6073; GFX900: ; %bb.0:6074; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6075; GFX900-NEXT: ;;#ASMSTART6076; GFX900-NEXT: ; def s[12:19]6077; GFX900-NEXT: ;;#ASMEND6078; GFX900-NEXT: ;;#ASMSTART6079; GFX900-NEXT: ; def s[8:15]6080; GFX900-NEXT: ;;#ASMEND6081; GFX900-NEXT: s_mov_b32 s8, s186082; GFX900-NEXT: s_mov_b32 s9, s196083; GFX900-NEXT: ;;#ASMSTART6084; GFX900-NEXT: ; use s[8:11]6085; GFX900-NEXT: ;;#ASMEND6086; GFX900-NEXT: s_setpc_b64 s[30:31]6087;6088; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_5:6089; GFX90A: ; %bb.0:6090; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6091; GFX90A-NEXT: ;;#ASMSTART6092; GFX90A-NEXT: ; def s[12:19]6093; GFX90A-NEXT: ;;#ASMEND6094; GFX90A-NEXT: ;;#ASMSTART6095; GFX90A-NEXT: ; def s[8:15]6096; GFX90A-NEXT: ;;#ASMEND6097; GFX90A-NEXT: s_mov_b32 s8, s186098; GFX90A-NEXT: s_mov_b32 s9, s196099; GFX90A-NEXT: ;;#ASMSTART6100; GFX90A-NEXT: ; use s[8:11]6101; GFX90A-NEXT: ;;#ASMEND6102; GFX90A-NEXT: s_setpc_b64 s[30:31]6103;6104; GFX942-LABEL: s_shuffle_v2p0_v4p0__3_5:6105; GFX942: ; %bb.0:6106; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6107; GFX942-NEXT: ;;#ASMSTART6108; GFX942-NEXT: ; def s[8:15]6109; GFX942-NEXT: ;;#ASMEND6110; GFX942-NEXT: ;;#ASMSTART6111; GFX942-NEXT: ; def s[0:7]6112; GFX942-NEXT: ;;#ASMEND6113; GFX942-NEXT: s_mov_b32 s8, s66114; GFX942-NEXT: s_mov_b32 s9, s76115; GFX942-NEXT: ;;#ASMSTART6116; GFX942-NEXT: ; use s[8:11]6117; GFX942-NEXT: ;;#ASMEND6118; GFX942-NEXT: s_setpc_b64 s[30:31]6119 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6120 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6121 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 5>6122 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6123 ret void6124}6125 6126define void @s_shuffle_v2p0_v4p0__4_5() {6127; GFX900-LABEL: s_shuffle_v2p0_v4p0__4_5:6128; GFX900: ; %bb.0:6129; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6130; GFX900-NEXT: ;;#ASMSTART6131; GFX900-NEXT: ; def s[8:15]6132; GFX900-NEXT: ;;#ASMEND6133; GFX900-NEXT: ;;#ASMSTART6134; GFX900-NEXT: ; use s[8:11]6135; GFX900-NEXT: ;;#ASMEND6136; GFX900-NEXT: s_setpc_b64 s[30:31]6137;6138; GFX90A-LABEL: s_shuffle_v2p0_v4p0__4_5:6139; GFX90A: ; %bb.0:6140; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6141; GFX90A-NEXT: ;;#ASMSTART6142; GFX90A-NEXT: ; def s[8:15]6143; GFX90A-NEXT: ;;#ASMEND6144; GFX90A-NEXT: ;;#ASMSTART6145; GFX90A-NEXT: ; use s[8:11]6146; GFX90A-NEXT: ;;#ASMEND6147; GFX90A-NEXT: s_setpc_b64 s[30:31]6148;6149; GFX942-LABEL: s_shuffle_v2p0_v4p0__4_5:6150; GFX942: ; %bb.0:6151; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6152; GFX942-NEXT: ;;#ASMSTART6153; GFX942-NEXT: ; def s[8:15]6154; GFX942-NEXT: ;;#ASMEND6155; GFX942-NEXT: s_nop 06156; GFX942-NEXT: ;;#ASMSTART6157; GFX942-NEXT: ; use s[8:11]6158; GFX942-NEXT: ;;#ASMEND6159; GFX942-NEXT: s_setpc_b64 s[30:31]6160 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6161 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6162 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 5>6163 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6164 ret void6165}6166 6167define void @s_shuffle_v2p0_v4p0__5_5() {6168; GFX9-LABEL: s_shuffle_v2p0_v4p0__5_5:6169; GFX9: ; %bb.0:6170; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6171; GFX9-NEXT: ;;#ASMSTART6172; GFX9-NEXT: ; def s[8:15]6173; GFX9-NEXT: ;;#ASMEND6174; GFX9-NEXT: s_mov_b32 s8, s106175; GFX9-NEXT: s_mov_b32 s9, s116176; GFX9-NEXT: ;;#ASMSTART6177; GFX9-NEXT: ; use s[8:11]6178; GFX9-NEXT: ;;#ASMEND6179; GFX9-NEXT: s_setpc_b64 s[30:31]6180 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6181 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6182 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 5>6183 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6184 ret void6185}6186 6187define void @s_shuffle_v2p0_v4p0__6_5() {6188; GFX9-LABEL: s_shuffle_v2p0_v4p0__6_5:6189; GFX9: ; %bb.0:6190; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6191; GFX9-NEXT: ;;#ASMSTART6192; GFX9-NEXT: ; def s[4:11]6193; GFX9-NEXT: ;;#ASMEND6194; GFX9-NEXT: s_mov_b32 s10, s66195; GFX9-NEXT: s_mov_b32 s11, s76196; GFX9-NEXT: ;;#ASMSTART6197; GFX9-NEXT: ; use s[8:11]6198; GFX9-NEXT: ;;#ASMEND6199; GFX9-NEXT: s_setpc_b64 s[30:31]6200 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6201 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6202 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 5>6203 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6204 ret void6205}6206 6207define void @s_shuffle_v2p0_v4p0__u_6() {6208; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_6:6209; GFX900: ; %bb.0:6210; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6211; GFX900-NEXT: ;;#ASMSTART6212; GFX900-NEXT: ; def s[4:11]6213; GFX900-NEXT: ;;#ASMEND6214; GFX900-NEXT: s_mov_b32 s10, s86215; GFX900-NEXT: s_mov_b32 s11, s96216; GFX900-NEXT: ;;#ASMSTART6217; GFX900-NEXT: ; use s[8:11]6218; GFX900-NEXT: ;;#ASMEND6219; GFX900-NEXT: s_setpc_b64 s[30:31]6220;6221; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_6:6222; GFX90A: ; %bb.0:6223; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6224; GFX90A-NEXT: ;;#ASMSTART6225; GFX90A-NEXT: ; def s[4:11]6226; GFX90A-NEXT: ;;#ASMEND6227; GFX90A-NEXT: s_mov_b32 s10, s86228; GFX90A-NEXT: s_mov_b32 s11, s96229; GFX90A-NEXT: ;;#ASMSTART6230; GFX90A-NEXT: ; use s[8:11]6231; GFX90A-NEXT: ;;#ASMEND6232; GFX90A-NEXT: s_setpc_b64 s[30:31]6233;6234; GFX942-LABEL: s_shuffle_v2p0_v4p0__u_6:6235; GFX942: ; %bb.0:6236; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6237; GFX942-NEXT: ;;#ASMSTART6238; GFX942-NEXT: ; def s[0:7]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:11]6244; GFX942-NEXT: ;;#ASMEND6245; GFX942-NEXT: s_setpc_b64 s[30:31]6246 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6247 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6248 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 6>6249 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6250 ret void6251}6252 6253define void @s_shuffle_v2p0_v4p0__0_6() {6254; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_6:6255; GFX900: ; %bb.0:6256; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6257; GFX900-NEXT: ;;#ASMSTART6258; GFX900-NEXT: ; def s[8:15]6259; GFX900-NEXT: ;;#ASMEND6260; GFX900-NEXT: ;;#ASMSTART6261; GFX900-NEXT: ; def s[12:19]6262; GFX900-NEXT: ;;#ASMEND6263; GFX900-NEXT: s_mov_b32 s10, s166264; GFX900-NEXT: s_mov_b32 s11, s176265; GFX900-NEXT: ;;#ASMSTART6266; GFX900-NEXT: ; use s[8:11]6267; GFX900-NEXT: ;;#ASMEND6268; GFX900-NEXT: s_setpc_b64 s[30:31]6269;6270; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_6:6271; GFX90A: ; %bb.0:6272; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6273; GFX90A-NEXT: ;;#ASMSTART6274; GFX90A-NEXT: ; def s[8:15]6275; GFX90A-NEXT: ;;#ASMEND6276; GFX90A-NEXT: ;;#ASMSTART6277; GFX90A-NEXT: ; def s[12:19]6278; GFX90A-NEXT: ;;#ASMEND6279; GFX90A-NEXT: s_mov_b32 s10, s166280; GFX90A-NEXT: s_mov_b32 s11, s176281; GFX90A-NEXT: ;;#ASMSTART6282; GFX90A-NEXT: ; use s[8:11]6283; GFX90A-NEXT: ;;#ASMEND6284; GFX90A-NEXT: s_setpc_b64 s[30:31]6285;6286; GFX942-LABEL: s_shuffle_v2p0_v4p0__0_6:6287; GFX942: ; %bb.0:6288; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6289; GFX942-NEXT: ;;#ASMSTART6290; GFX942-NEXT: ; def s[8:15]6291; GFX942-NEXT: ;;#ASMEND6292; GFX942-NEXT: ;;#ASMSTART6293; GFX942-NEXT: ; def s[0:7]6294; GFX942-NEXT: ;;#ASMEND6295; GFX942-NEXT: s_mov_b32 s10, s46296; GFX942-NEXT: s_mov_b32 s11, s56297; GFX942-NEXT: ;;#ASMSTART6298; GFX942-NEXT: ; use s[8:11]6299; GFX942-NEXT: ;;#ASMEND6300; GFX942-NEXT: s_setpc_b64 s[30:31]6301 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6302 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6303 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 6>6304 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6305 ret void6306}6307 6308define void @s_shuffle_v2p0_v4p0__1_6() {6309; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_6:6310; GFX900: ; %bb.0:6311; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6312; GFX900-NEXT: ;;#ASMSTART6313; GFX900-NEXT: ; def s[4:11]6314; GFX900-NEXT: ;;#ASMEND6315; GFX900-NEXT: ;;#ASMSTART6316; GFX900-NEXT: ; def s[8:15]6317; GFX900-NEXT: ;;#ASMEND6318; GFX900-NEXT: s_mov_b32 s8, s66319; GFX900-NEXT: s_mov_b32 s9, s76320; GFX900-NEXT: s_mov_b32 s10, s126321; GFX900-NEXT: s_mov_b32 s11, s136322; GFX900-NEXT: ;;#ASMSTART6323; GFX900-NEXT: ; use s[8:11]6324; GFX900-NEXT: ;;#ASMEND6325; GFX900-NEXT: s_setpc_b64 s[30:31]6326;6327; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_6:6328; GFX90A: ; %bb.0:6329; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6330; GFX90A-NEXT: ;;#ASMSTART6331; GFX90A-NEXT: ; def s[4:11]6332; GFX90A-NEXT: ;;#ASMEND6333; GFX90A-NEXT: ;;#ASMSTART6334; GFX90A-NEXT: ; def s[8:15]6335; GFX90A-NEXT: ;;#ASMEND6336; GFX90A-NEXT: s_mov_b32 s8, s66337; GFX90A-NEXT: s_mov_b32 s9, s76338; GFX90A-NEXT: s_mov_b32 s10, s126339; GFX90A-NEXT: s_mov_b32 s11, s136340; GFX90A-NEXT: ;;#ASMSTART6341; GFX90A-NEXT: ; use s[8:11]6342; GFX90A-NEXT: ;;#ASMEND6343; GFX90A-NEXT: s_setpc_b64 s[30:31]6344;6345; GFX942-LABEL: s_shuffle_v2p0_v4p0__1_6:6346; GFX942: ; %bb.0:6347; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6348; GFX942-NEXT: ;;#ASMSTART6349; GFX942-NEXT: ; def s[8:15]6350; GFX942-NEXT: ;;#ASMEND6351; GFX942-NEXT: ;;#ASMSTART6352; GFX942-NEXT: ; def s[0:7]6353; GFX942-NEXT: ;;#ASMEND6354; GFX942-NEXT: s_mov_b32 s8, s26355; GFX942-NEXT: s_mov_b32 s9, s36356; GFX942-NEXT: s_mov_b32 s10, s126357; GFX942-NEXT: s_mov_b32 s11, s136358; GFX942-NEXT: ;;#ASMSTART6359; GFX942-NEXT: ; use s[8:11]6360; GFX942-NEXT: ;;#ASMEND6361; GFX942-NEXT: s_setpc_b64 s[30:31]6362 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6363 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6364 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 6>6365 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6366 ret void6367}6368 6369define void @s_shuffle_v2p0_v4p0__2_6() {6370; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_6:6371; GFX900: ; %bb.0:6372; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6373; GFX900-NEXT: ;;#ASMSTART6374; GFX900-NEXT: ; def s[4:11]6375; GFX900-NEXT: ;;#ASMEND6376; GFX900-NEXT: ;;#ASMSTART6377; GFX900-NEXT: ; def s[12:19]6378; GFX900-NEXT: ;;#ASMEND6379; GFX900-NEXT: s_mov_b32 s10, s166380; GFX900-NEXT: s_mov_b32 s11, s176381; GFX900-NEXT: ;;#ASMSTART6382; GFX900-NEXT: ; use s[8:11]6383; GFX900-NEXT: ;;#ASMEND6384; GFX900-NEXT: s_setpc_b64 s[30:31]6385;6386; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_6:6387; GFX90A: ; %bb.0:6388; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6389; GFX90A-NEXT: ;;#ASMSTART6390; GFX90A-NEXT: ; def s[4:11]6391; GFX90A-NEXT: ;;#ASMEND6392; GFX90A-NEXT: ;;#ASMSTART6393; GFX90A-NEXT: ; def s[12:19]6394; GFX90A-NEXT: ;;#ASMEND6395; GFX90A-NEXT: s_mov_b32 s10, s166396; GFX90A-NEXT: s_mov_b32 s11, s176397; GFX90A-NEXT: ;;#ASMSTART6398; GFX90A-NEXT: ; use s[8:11]6399; GFX90A-NEXT: ;;#ASMEND6400; GFX90A-NEXT: s_setpc_b64 s[30:31]6401;6402; GFX942-LABEL: s_shuffle_v2p0_v4p0__2_6:6403; GFX942: ; %bb.0:6404; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6405; GFX942-NEXT: ;;#ASMSTART6406; GFX942-NEXT: ; def s[4:11]6407; GFX942-NEXT: ;;#ASMEND6408; GFX942-NEXT: s_nop 06409; GFX942-NEXT: ;;#ASMSTART6410; GFX942-NEXT: ; def s[0:7]6411; GFX942-NEXT: ;;#ASMEND6412; GFX942-NEXT: s_mov_b32 s10, s46413; GFX942-NEXT: s_mov_b32 s11, s56414; GFX942-NEXT: ;;#ASMSTART6415; GFX942-NEXT: ; use s[8:11]6416; GFX942-NEXT: ;;#ASMEND6417; GFX942-NEXT: s_setpc_b64 s[30:31]6418 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6419 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6420 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 6>6421 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6422 ret void6423}6424 6425define void @s_shuffle_v2p0_v4p0__3_6() {6426; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_6:6427; GFX900: ; %bb.0:6428; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6429; GFX900-NEXT: ;;#ASMSTART6430; GFX900-NEXT: ; def s[4:11]6431; GFX900-NEXT: ;;#ASMEND6432; GFX900-NEXT: ;;#ASMSTART6433; GFX900-NEXT: ; def s[12:19]6434; GFX900-NEXT: ;;#ASMEND6435; GFX900-NEXT: s_mov_b32 s8, s106436; GFX900-NEXT: s_mov_b32 s9, s116437; GFX900-NEXT: s_mov_b32 s10, s166438; GFX900-NEXT: s_mov_b32 s11, s176439; GFX900-NEXT: ;;#ASMSTART6440; GFX900-NEXT: ; use s[8:11]6441; GFX900-NEXT: ;;#ASMEND6442; GFX900-NEXT: s_setpc_b64 s[30:31]6443;6444; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_6:6445; GFX90A: ; %bb.0:6446; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6447; GFX90A-NEXT: ;;#ASMSTART6448; GFX90A-NEXT: ; def s[4:11]6449; GFX90A-NEXT: ;;#ASMEND6450; GFX90A-NEXT: ;;#ASMSTART6451; GFX90A-NEXT: ; def s[12:19]6452; GFX90A-NEXT: ;;#ASMEND6453; GFX90A-NEXT: s_mov_b32 s8, s106454; GFX90A-NEXT: s_mov_b32 s9, s116455; GFX90A-NEXT: s_mov_b32 s10, s166456; GFX90A-NEXT: s_mov_b32 s11, s176457; GFX90A-NEXT: ;;#ASMSTART6458; GFX90A-NEXT: ; use s[8:11]6459; GFX90A-NEXT: ;;#ASMEND6460; GFX90A-NEXT: s_setpc_b64 s[30:31]6461;6462; GFX942-LABEL: s_shuffle_v2p0_v4p0__3_6:6463; GFX942: ; %bb.0:6464; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6465; GFX942-NEXT: ;;#ASMSTART6466; GFX942-NEXT: ; def s[8:15]6467; GFX942-NEXT: ;;#ASMEND6468; GFX942-NEXT: ;;#ASMSTART6469; GFX942-NEXT: ; def s[0:7]6470; GFX942-NEXT: ;;#ASMEND6471; GFX942-NEXT: s_mov_b32 s8, s66472; GFX942-NEXT: s_mov_b32 s9, s76473; GFX942-NEXT: s_mov_b32 s10, s126474; GFX942-NEXT: s_mov_b32 s11, s136475; GFX942-NEXT: ;;#ASMSTART6476; GFX942-NEXT: ; use s[8:11]6477; GFX942-NEXT: ;;#ASMEND6478; GFX942-NEXT: s_setpc_b64 s[30:31]6479 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6480 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6481 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 6>6482 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6483 ret void6484}6485 6486define void @s_shuffle_v2p0_v4p0__4_6() {6487; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_6:6488; GFX9: ; %bb.0:6489; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6490; GFX9-NEXT: ;;#ASMSTART6491; GFX9-NEXT: ; def s[8:15]6492; GFX9-NEXT: ;;#ASMEND6493; GFX9-NEXT: s_mov_b32 s10, s126494; GFX9-NEXT: s_mov_b32 s11, s136495; GFX9-NEXT: ;;#ASMSTART6496; GFX9-NEXT: ; use s[8:11]6497; GFX9-NEXT: ;;#ASMEND6498; GFX9-NEXT: s_setpc_b64 s[30:31]6499 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6500 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6501 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 6>6502 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6503 ret void6504}6505 6506define void @s_shuffle_v2p0_v4p0__5_6() {6507; GFX900-LABEL: s_shuffle_v2p0_v4p0__5_6:6508; GFX900: ; %bb.0:6509; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6510; GFX900-NEXT: ;;#ASMSTART6511; GFX900-NEXT: ; def s[8:15]6512; GFX900-NEXT: ;;#ASMEND6513; GFX900-NEXT: s_mov_b32 s8, s106514; GFX900-NEXT: s_mov_b32 s9, s116515; GFX900-NEXT: s_mov_b32 s10, s126516; GFX900-NEXT: s_mov_b32 s11, s136517; GFX900-NEXT: ;;#ASMSTART6518; GFX900-NEXT: ; use s[8:11]6519; GFX900-NEXT: ;;#ASMEND6520; GFX900-NEXT: s_setpc_b64 s[30:31]6521;6522; GFX90A-LABEL: s_shuffle_v2p0_v4p0__5_6:6523; GFX90A: ; %bb.0:6524; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6525; GFX90A-NEXT: ;;#ASMSTART6526; GFX90A-NEXT: ; def s[8:15]6527; GFX90A-NEXT: ;;#ASMEND6528; GFX90A-NEXT: s_mov_b32 s8, s106529; GFX90A-NEXT: s_mov_b32 s9, s116530; GFX90A-NEXT: s_mov_b32 s10, s126531; GFX90A-NEXT: s_mov_b32 s11, s136532; GFX90A-NEXT: ;;#ASMSTART6533; GFX90A-NEXT: ; use s[8:11]6534; GFX90A-NEXT: ;;#ASMEND6535; GFX90A-NEXT: s_setpc_b64 s[30:31]6536;6537; GFX942-LABEL: s_shuffle_v2p0_v4p0__5_6:6538; GFX942: ; %bb.0:6539; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6540; GFX942-NEXT: ;;#ASMSTART6541; GFX942-NEXT: ; def s[0:7]6542; GFX942-NEXT: ;;#ASMEND6543; GFX942-NEXT: s_mov_b32 s8, s26544; GFX942-NEXT: s_mov_b32 s9, s36545; GFX942-NEXT: s_mov_b32 s10, s46546; GFX942-NEXT: s_mov_b32 s11, s56547; GFX942-NEXT: ;;#ASMSTART6548; GFX942-NEXT: ; use s[8:11]6549; GFX942-NEXT: ;;#ASMEND6550; GFX942-NEXT: s_setpc_b64 s[30:31]6551 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6552 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6553 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 6>6554 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6555 ret void6556}6557 6558define void @s_shuffle_v2p0_v4p0__6_6() {6559; GFX9-LABEL: s_shuffle_v2p0_v4p0__6_6:6560; GFX9: ; %bb.0:6561; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6562; GFX9-NEXT: ;;#ASMSTART6563; GFX9-NEXT: ; def s[4:11]6564; GFX9-NEXT: ;;#ASMEND6565; GFX9-NEXT: s_mov_b32 s10, s86566; GFX9-NEXT: s_mov_b32 s11, s96567; GFX9-NEXT: ;;#ASMSTART6568; GFX9-NEXT: ; use s[8:11]6569; GFX9-NEXT: ;;#ASMEND6570; GFX9-NEXT: s_setpc_b64 s[30:31]6571 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6572 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6573 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 6>6574 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6575 ret void6576}6577 6578define void @s_shuffle_v2p0_v4p0__u_7() {6579; GFX900-LABEL: s_shuffle_v2p0_v4p0__u_7:6580; GFX900: ; %bb.0:6581; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6582; GFX900-NEXT: ;;#ASMSTART6583; GFX900-NEXT: ; def s[4:11]6584; GFX900-NEXT: ;;#ASMEND6585; GFX900-NEXT: ;;#ASMSTART6586; GFX900-NEXT: ; use s[8:11]6587; GFX900-NEXT: ;;#ASMEND6588; GFX900-NEXT: s_setpc_b64 s[30:31]6589;6590; GFX90A-LABEL: s_shuffle_v2p0_v4p0__u_7:6591; GFX90A: ; %bb.0:6592; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6593; GFX90A-NEXT: ;;#ASMSTART6594; GFX90A-NEXT: ; def s[4:11]6595; GFX90A-NEXT: ;;#ASMEND6596; GFX90A-NEXT: ;;#ASMSTART6597; GFX90A-NEXT: ; use s[8:11]6598; GFX90A-NEXT: ;;#ASMEND6599; GFX90A-NEXT: s_setpc_b64 s[30:31]6600;6601; GFX942-LABEL: s_shuffle_v2p0_v4p0__u_7:6602; GFX942: ; %bb.0:6603; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6604; GFX942-NEXT: ;;#ASMSTART6605; GFX942-NEXT: ; def s[4:11]6606; GFX942-NEXT: ;;#ASMEND6607; GFX942-NEXT: s_nop 06608; GFX942-NEXT: ;;#ASMSTART6609; GFX942-NEXT: ; use s[8:11]6610; GFX942-NEXT: ;;#ASMEND6611; GFX942-NEXT: s_setpc_b64 s[30:31]6612 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6613 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6614 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 poison, i32 7>6615 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6616 ret void6617}6618 6619define void @s_shuffle_v2p0_v4p0__0_7() {6620; GFX900-LABEL: s_shuffle_v2p0_v4p0__0_7:6621; GFX900: ; %bb.0:6622; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6623; GFX900-NEXT: ;;#ASMSTART6624; GFX900-NEXT: ; def s[8:15]6625; GFX900-NEXT: ;;#ASMEND6626; GFX900-NEXT: ;;#ASMSTART6627; GFX900-NEXT: ; def s[12:19]6628; GFX900-NEXT: ;;#ASMEND6629; GFX900-NEXT: s_mov_b32 s10, s186630; GFX900-NEXT: s_mov_b32 s11, s196631; GFX900-NEXT: ;;#ASMSTART6632; GFX900-NEXT: ; use s[8:11]6633; GFX900-NEXT: ;;#ASMEND6634; GFX900-NEXT: s_setpc_b64 s[30:31]6635;6636; GFX90A-LABEL: s_shuffle_v2p0_v4p0__0_7:6637; GFX90A: ; %bb.0:6638; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6639; GFX90A-NEXT: ;;#ASMSTART6640; GFX90A-NEXT: ; def s[8:15]6641; GFX90A-NEXT: ;;#ASMEND6642; GFX90A-NEXT: ;;#ASMSTART6643; GFX90A-NEXT: ; def s[12:19]6644; GFX90A-NEXT: ;;#ASMEND6645; GFX90A-NEXT: s_mov_b32 s10, s186646; GFX90A-NEXT: s_mov_b32 s11, s196647; GFX90A-NEXT: ;;#ASMSTART6648; GFX90A-NEXT: ; use s[8:11]6649; GFX90A-NEXT: ;;#ASMEND6650; GFX90A-NEXT: s_setpc_b64 s[30:31]6651;6652; GFX942-LABEL: s_shuffle_v2p0_v4p0__0_7:6653; GFX942: ; %bb.0:6654; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6655; GFX942-NEXT: ;;#ASMSTART6656; GFX942-NEXT: ; def s[8:15]6657; GFX942-NEXT: ;;#ASMEND6658; GFX942-NEXT: ;;#ASMSTART6659; GFX942-NEXT: ; def s[0:7]6660; GFX942-NEXT: ;;#ASMEND6661; GFX942-NEXT: s_mov_b32 s10, s66662; GFX942-NEXT: s_mov_b32 s11, s76663; GFX942-NEXT: ;;#ASMSTART6664; GFX942-NEXT: ; use s[8:11]6665; GFX942-NEXT: ;;#ASMEND6666; GFX942-NEXT: s_setpc_b64 s[30:31]6667 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6668 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6669 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 0, i32 7>6670 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6671 ret void6672}6673 6674define void @s_shuffle_v2p0_v4p0__1_7() {6675; GFX900-LABEL: s_shuffle_v2p0_v4p0__1_7:6676; GFX900: ; %bb.0:6677; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6678; GFX900-NEXT: ;;#ASMSTART6679; GFX900-NEXT: ; def s[4:11]6680; GFX900-NEXT: ;;#ASMEND6681; GFX900-NEXT: ;;#ASMSTART6682; GFX900-NEXT: ; def s[12:19]6683; GFX900-NEXT: ;;#ASMEND6684; GFX900-NEXT: s_mov_b32 s8, s146685; GFX900-NEXT: s_mov_b32 s9, s156686; GFX900-NEXT: ;;#ASMSTART6687; GFX900-NEXT: ; use s[8:11]6688; GFX900-NEXT: ;;#ASMEND6689; GFX900-NEXT: s_setpc_b64 s[30:31]6690;6691; GFX90A-LABEL: s_shuffle_v2p0_v4p0__1_7:6692; GFX90A: ; %bb.0:6693; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6694; GFX90A-NEXT: ;;#ASMSTART6695; GFX90A-NEXT: ; def s[4:11]6696; GFX90A-NEXT: ;;#ASMEND6697; GFX90A-NEXT: ;;#ASMSTART6698; GFX90A-NEXT: ; def s[12:19]6699; GFX90A-NEXT: ;;#ASMEND6700; GFX90A-NEXT: s_mov_b32 s8, s146701; GFX90A-NEXT: s_mov_b32 s9, s156702; GFX90A-NEXT: ;;#ASMSTART6703; GFX90A-NEXT: ; use s[8:11]6704; GFX90A-NEXT: ;;#ASMEND6705; GFX90A-NEXT: s_setpc_b64 s[30:31]6706;6707; GFX942-LABEL: s_shuffle_v2p0_v4p0__1_7:6708; GFX942: ; %bb.0:6709; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6710; GFX942-NEXT: ;;#ASMSTART6711; GFX942-NEXT: ; def s[0:7]6712; GFX942-NEXT: ;;#ASMEND6713; GFX942-NEXT: s_nop 06714; GFX942-NEXT: ;;#ASMSTART6715; GFX942-NEXT: ; def s[4:11]6716; GFX942-NEXT: ;;#ASMEND6717; GFX942-NEXT: s_mov_b32 s8, s26718; GFX942-NEXT: s_mov_b32 s9, s36719; GFX942-NEXT: ;;#ASMSTART6720; GFX942-NEXT: ; use s[8:11]6721; GFX942-NEXT: ;;#ASMEND6722; GFX942-NEXT: s_setpc_b64 s[30:31]6723 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6724 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6725 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 1, i32 7>6726 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6727 ret void6728}6729 6730define void @s_shuffle_v2p0_v4p0__2_7() {6731; GFX900-LABEL: s_shuffle_v2p0_v4p0__2_7:6732; GFX900: ; %bb.0:6733; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6734; GFX900-NEXT: ;;#ASMSTART6735; GFX900-NEXT: ; def s[4:11]6736; GFX900-NEXT: ;;#ASMEND6737; GFX900-NEXT: ;;#ASMSTART6738; GFX900-NEXT: ; def s[12:19]6739; GFX900-NEXT: ;;#ASMEND6740; GFX900-NEXT: s_mov_b32 s10, s186741; GFX900-NEXT: s_mov_b32 s11, s196742; GFX900-NEXT: ;;#ASMSTART6743; GFX900-NEXT: ; use s[8:11]6744; GFX900-NEXT: ;;#ASMEND6745; GFX900-NEXT: s_setpc_b64 s[30:31]6746;6747; GFX90A-LABEL: s_shuffle_v2p0_v4p0__2_7:6748; GFX90A: ; %bb.0:6749; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6750; GFX90A-NEXT: ;;#ASMSTART6751; GFX90A-NEXT: ; def s[4:11]6752; GFX90A-NEXT: ;;#ASMEND6753; GFX90A-NEXT: ;;#ASMSTART6754; GFX90A-NEXT: ; def s[12:19]6755; GFX90A-NEXT: ;;#ASMEND6756; GFX90A-NEXT: s_mov_b32 s10, s186757; GFX90A-NEXT: s_mov_b32 s11, s196758; GFX90A-NEXT: ;;#ASMSTART6759; GFX90A-NEXT: ; use s[8:11]6760; GFX90A-NEXT: ;;#ASMEND6761; GFX90A-NEXT: s_setpc_b64 s[30:31]6762;6763; GFX942-LABEL: s_shuffle_v2p0_v4p0__2_7:6764; GFX942: ; %bb.0:6765; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6766; GFX942-NEXT: ;;#ASMSTART6767; GFX942-NEXT: ; def s[4:11]6768; GFX942-NEXT: ;;#ASMEND6769; GFX942-NEXT: s_nop 06770; GFX942-NEXT: ;;#ASMSTART6771; GFX942-NEXT: ; def s[0:7]6772; GFX942-NEXT: ;;#ASMEND6773; GFX942-NEXT: s_mov_b32 s10, s66774; GFX942-NEXT: s_mov_b32 s11, s76775; GFX942-NEXT: ;;#ASMSTART6776; GFX942-NEXT: ; use s[8:11]6777; GFX942-NEXT: ;;#ASMEND6778; GFX942-NEXT: s_setpc_b64 s[30:31]6779 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6780 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6781 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 2, i32 7>6782 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6783 ret void6784}6785 6786define void @s_shuffle_v2p0_v4p0__3_7() {6787; GFX900-LABEL: s_shuffle_v2p0_v4p0__3_7:6788; GFX900: ; %bb.0:6789; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6790; GFX900-NEXT: ;;#ASMSTART6791; GFX900-NEXT: ; def s[8:15]6792; GFX900-NEXT: ;;#ASMEND6793; GFX900-NEXT: ;;#ASMSTART6794; GFX900-NEXT: ; def s[4:11]6795; GFX900-NEXT: ;;#ASMEND6796; GFX900-NEXT: s_mov_b32 s8, s146797; GFX900-NEXT: s_mov_b32 s9, s156798; GFX900-NEXT: ;;#ASMSTART6799; GFX900-NEXT: ; use s[8:11]6800; GFX900-NEXT: ;;#ASMEND6801; GFX900-NEXT: s_setpc_b64 s[30:31]6802;6803; GFX90A-LABEL: s_shuffle_v2p0_v4p0__3_7:6804; GFX90A: ; %bb.0:6805; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6806; GFX90A-NEXT: ;;#ASMSTART6807; GFX90A-NEXT: ; def s[8:15]6808; GFX90A-NEXT: ;;#ASMEND6809; GFX90A-NEXT: ;;#ASMSTART6810; GFX90A-NEXT: ; def s[4:11]6811; GFX90A-NEXT: ;;#ASMEND6812; GFX90A-NEXT: s_mov_b32 s8, s146813; GFX90A-NEXT: s_mov_b32 s9, s156814; GFX90A-NEXT: ;;#ASMSTART6815; GFX90A-NEXT: ; use s[8:11]6816; GFX90A-NEXT: ;;#ASMEND6817; GFX90A-NEXT: s_setpc_b64 s[30:31]6818;6819; GFX942-LABEL: s_shuffle_v2p0_v4p0__3_7:6820; GFX942: ; %bb.0:6821; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6822; GFX942-NEXT: ;;#ASMSTART6823; GFX942-NEXT: ; def s[8:15]6824; GFX942-NEXT: ;;#ASMEND6825; GFX942-NEXT: s_nop 06826; GFX942-NEXT: ;;#ASMSTART6827; GFX942-NEXT: ; def s[4:11]6828; GFX942-NEXT: ;;#ASMEND6829; GFX942-NEXT: s_mov_b32 s8, s146830; GFX942-NEXT: s_mov_b32 s9, s156831; GFX942-NEXT: ;;#ASMSTART6832; GFX942-NEXT: ; use s[8:11]6833; GFX942-NEXT: ;;#ASMEND6834; GFX942-NEXT: s_setpc_b64 s[30:31]6835 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6836 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6837 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 3, i32 7>6838 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6839 ret void6840}6841 6842define void @s_shuffle_v2p0_v4p0__4_7() {6843; GFX9-LABEL: s_shuffle_v2p0_v4p0__4_7:6844; GFX9: ; %bb.0:6845; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6846; GFX9-NEXT: ;;#ASMSTART6847; GFX9-NEXT: ; def s[8:15]6848; GFX9-NEXT: ;;#ASMEND6849; GFX9-NEXT: s_mov_b32 s10, s146850; GFX9-NEXT: s_mov_b32 s11, s156851; GFX9-NEXT: ;;#ASMSTART6852; GFX9-NEXT: ; use s[8:11]6853; GFX9-NEXT: ;;#ASMEND6854; GFX9-NEXT: s_setpc_b64 s[30:31]6855 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6856 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6857 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 4, i32 7>6858 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6859 ret void6860}6861 6862define void @s_shuffle_v2p0_v4p0__5_7() {6863; GFX9-LABEL: s_shuffle_v2p0_v4p0__5_7:6864; GFX9: ; %bb.0:6865; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6866; GFX9-NEXT: ;;#ASMSTART6867; GFX9-NEXT: ; def s[4:11]6868; GFX9-NEXT: ;;#ASMEND6869; GFX9-NEXT: s_mov_b32 s8, s66870; GFX9-NEXT: s_mov_b32 s9, s76871; GFX9-NEXT: ;;#ASMSTART6872; GFX9-NEXT: ; use s[8:11]6873; GFX9-NEXT: ;;#ASMEND6874; GFX9-NEXT: s_setpc_b64 s[30:31]6875 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6876 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6877 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 5, i32 7>6878 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6879 ret void6880}6881 6882define void @s_shuffle_v2p0_v4p0__6_7() {6883; GFX900-LABEL: s_shuffle_v2p0_v4p0__6_7:6884; GFX900: ; %bb.0:6885; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6886; GFX900-NEXT: ;;#ASMSTART6887; GFX900-NEXT: ; def s[4:11]6888; GFX900-NEXT: ;;#ASMEND6889; GFX900-NEXT: ;;#ASMSTART6890; GFX900-NEXT: ; use s[8:11]6891; GFX900-NEXT: ;;#ASMEND6892; GFX900-NEXT: s_setpc_b64 s[30:31]6893;6894; GFX90A-LABEL: s_shuffle_v2p0_v4p0__6_7:6895; GFX90A: ; %bb.0:6896; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6897; GFX90A-NEXT: ;;#ASMSTART6898; GFX90A-NEXT: ; def s[4:11]6899; GFX90A-NEXT: ;;#ASMEND6900; GFX90A-NEXT: ;;#ASMSTART6901; GFX90A-NEXT: ; use s[8:11]6902; GFX90A-NEXT: ;;#ASMEND6903; GFX90A-NEXT: s_setpc_b64 s[30:31]6904;6905; GFX942-LABEL: s_shuffle_v2p0_v4p0__6_7:6906; GFX942: ; %bb.0:6907; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6908; GFX942-NEXT: ;;#ASMSTART6909; GFX942-NEXT: ; def s[4:11]6910; GFX942-NEXT: ;;#ASMEND6911; GFX942-NEXT: s_nop 06912; GFX942-NEXT: ;;#ASMSTART6913; GFX942-NEXT: ; use s[8:11]6914; GFX942-NEXT: ;;#ASMEND6915; GFX942-NEXT: s_setpc_b64 s[30:31]6916 %vec0 = call <4 x ptr> asm "; def $0", "=s"()6917 %vec1 = call <4 x ptr> asm "; def $0", "=s"()6918 %shuf = shufflevector <4 x ptr> %vec0, <4 x ptr> %vec1, <2 x i32> <i32 6, i32 7>6919 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)6920 ret void6921}6922;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:6923; GFX90APLUS: {{.*}}6924