4003 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_v3p0__u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v2p0_v3p0__u_u:9; GFX9: ; %bb.0:10; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT: s_setpc_b64 s[30:31]12 %vec0 = call <3 x ptr> asm "; def $0", "=v"()13 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> poison14 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 1615 ret void16}17 18define void @v_shuffle_v2p0_v3p0__0_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_u:20; GFX900: ; %bb.0:21; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT: v_mov_b32_e32 v6, 023; GFX900-NEXT: ;;#ASMSTART24; GFX900-NEXT: ; def v[0:5]25; GFX900-NEXT: ;;#ASMEND26; GFX900-NEXT: global_store_dwordx4 v6, 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_v3p0__0_u:31; GFX90A: ; %bb.0:32; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT: v_mov_b32_e32 v6, 034; GFX90A-NEXT: ;;#ASMSTART35; GFX90A-NEXT: ; def v[0:5]36; GFX90A-NEXT: ;;#ASMEND37; GFX90A-NEXT: global_store_dwordx4 v6, 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_v3p0__0_u:42; GFX942: ; %bb.0:43; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT: v_mov_b32_e32 v6, 045; GFX942-NEXT: ;;#ASMSTART46; GFX942-NEXT: ; def v[0:5]47; GFX942-NEXT: ;;#ASMEND48; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]49; GFX942-NEXT: s_waitcnt vmcnt(0)50; GFX942-NEXT: s_setpc_b64 s[30:31]51 %vec0 = call <3 x ptr> asm "; def $0", "=v"()52 %shuf = shufflevector <3 x ptr> %vec0, <3 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_v3p0__1_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_u:59; GFX900: ; %bb.0:60; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT: v_mov_b32_e32 v6, 062; GFX900-NEXT: ;;#ASMSTART63; GFX900-NEXT: ; def v[0:5]64; GFX900-NEXT: ;;#ASMEND65; GFX900-NEXT: global_store_dwordx4 v6, 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_v3p0__1_u:70; GFX90A: ; %bb.0:71; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT: v_mov_b32_e32 v6, 073; GFX90A-NEXT: ;;#ASMSTART74; GFX90A-NEXT: ; def v[0:5]75; GFX90A-NEXT: ;;#ASMEND76; GFX90A-NEXT: global_store_dwordx4 v6, 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_v3p0__1_u:81; GFX942: ; %bb.0:82; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)83; GFX942-NEXT: v_mov_b32_e32 v6, 084; GFX942-NEXT: ;;#ASMSTART85; GFX942-NEXT: ; def v[0:5]86; GFX942-NEXT: ;;#ASMEND87; GFX942-NEXT: global_store_dwordx4 v6, 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 <3 x ptr> asm "; def $0", "=v"()91 %shuf = shufflevector <3 x ptr> %vec0, <3 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_v3p0__2_u(ptr addrspace(1) inreg %ptr) {97; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_u:98; GFX900: ; %bb.0:99; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)100; GFX900-NEXT: v_mov_b32_e32 v6, 0101; GFX900-NEXT: ;;#ASMSTART102; GFX900-NEXT: ; def v[0:5]103; GFX900-NEXT: ;;#ASMEND104; GFX900-NEXT: global_store_dwordx4 v6, 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_v3p0__2_u:109; GFX90A: ; %bb.0:110; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)111; GFX90A-NEXT: v_mov_b32_e32 v6, 0112; GFX90A-NEXT: ;;#ASMSTART113; GFX90A-NEXT: ; def v[0:5]114; GFX90A-NEXT: ;;#ASMEND115; GFX90A-NEXT: global_store_dwordx4 v6, 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_v3p0__2_u:120; GFX942: ; %bb.0:121; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)122; GFX942-NEXT: v_mov_b32_e32 v6, 0123; GFX942-NEXT: ;;#ASMSTART124; GFX942-NEXT: ; def v[0:5]125; GFX942-NEXT: ;;#ASMEND126; GFX942-NEXT: global_store_dwordx4 v6, 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 <3 x ptr> asm "; def $0", "=v"()130 %shuf = shufflevector <3 x ptr> %vec0, <3 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_v3p0__3_u(ptr addrspace(1) inreg %ptr) {136; GFX9-LABEL: v_shuffle_v2p0_v3p0__3_u:137; GFX9: ; %bb.0:138; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)139; GFX9-NEXT: s_setpc_b64 s[30:31]140 %vec0 = call <3 x ptr> asm "; def $0", "=v"()141 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 poison>142 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16143 ret void144}145 146define void @v_shuffle_v2p0_v3p0__4_u(ptr addrspace(1) inreg %ptr) {147; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_u:148; GFX900: ; %bb.0:149; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)150; GFX900-NEXT: v_mov_b32_e32 v6, 0151; GFX900-NEXT: ;;#ASMSTART152; GFX900-NEXT: ; def v[0:5]153; GFX900-NEXT: ;;#ASMEND154; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]155; GFX900-NEXT: s_waitcnt vmcnt(0)156; GFX900-NEXT: s_setpc_b64 s[30:31]157;158; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_u:159; GFX90A: ; %bb.0:160; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)161; GFX90A-NEXT: v_mov_b32_e32 v6, 0162; GFX90A-NEXT: ;;#ASMSTART163; GFX90A-NEXT: ; def v[0:5]164; GFX90A-NEXT: ;;#ASMEND165; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]166; GFX90A-NEXT: s_waitcnt vmcnt(0)167; GFX90A-NEXT: s_setpc_b64 s[30:31]168;169; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_u:170; GFX942: ; %bb.0:171; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)172; GFX942-NEXT: v_mov_b32_e32 v6, 0173; GFX942-NEXT: ;;#ASMSTART174; GFX942-NEXT: ; def v[0:5]175; GFX942-NEXT: ;;#ASMEND176; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]177; GFX942-NEXT: s_waitcnt vmcnt(0)178; GFX942-NEXT: s_setpc_b64 s[30:31]179 %vec0 = call <3 x ptr> asm "; def $0", "=v"()180 %vec1 = call <3 x ptr> asm "; def $0", "=v"()181 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 poison>182 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16183 ret void184}185 186define void @v_shuffle_v2p0_v3p0__5_u(ptr addrspace(1) inreg %ptr) {187; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_u:188; GFX900: ; %bb.0:189; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)190; GFX900-NEXT: v_mov_b32_e32 v6, 0191; GFX900-NEXT: ;;#ASMSTART192; GFX900-NEXT: ; def v[0:5]193; GFX900-NEXT: ;;#ASMEND194; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]195; GFX900-NEXT: s_waitcnt vmcnt(0)196; GFX900-NEXT: s_setpc_b64 s[30:31]197;198; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_u:199; GFX90A: ; %bb.0:200; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)201; GFX90A-NEXT: v_mov_b32_e32 v6, 0202; GFX90A-NEXT: ;;#ASMSTART203; GFX90A-NEXT: ; def v[0:5]204; GFX90A-NEXT: ;;#ASMEND205; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]206; GFX90A-NEXT: s_waitcnt vmcnt(0)207; GFX90A-NEXT: s_setpc_b64 s[30:31]208;209; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_u:210; GFX942: ; %bb.0:211; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)212; GFX942-NEXT: v_mov_b32_e32 v6, 0213; GFX942-NEXT: ;;#ASMSTART214; GFX942-NEXT: ; def v[0:5]215; GFX942-NEXT: ;;#ASMEND216; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]217; GFX942-NEXT: s_waitcnt vmcnt(0)218; GFX942-NEXT: s_setpc_b64 s[30:31]219 %vec0 = call <3 x ptr> asm "; def $0", "=v"()220 %vec1 = call <3 x ptr> asm "; def $0", "=v"()221 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>222 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16223 ret void224}225 226define void @v_shuffle_v2p0_v3p0__5_0(ptr addrspace(1) inreg %ptr) {227; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_0:228; GFX900: ; %bb.0:229; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)230; GFX900-NEXT: v_mov_b32_e32 v12, 0231; GFX900-NEXT: ;;#ASMSTART232; GFX900-NEXT: ; def v[6:11]233; GFX900-NEXT: ;;#ASMEND234; GFX900-NEXT: ;;#ASMSTART235; GFX900-NEXT: ; def v[0:5]236; GFX900-NEXT: ;;#ASMEND237; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]238; GFX900-NEXT: s_waitcnt vmcnt(0)239; GFX900-NEXT: s_setpc_b64 s[30:31]240;241; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_0:242; GFX90A: ; %bb.0:243; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)244; GFX90A-NEXT: v_mov_b32_e32 v12, 0245; GFX90A-NEXT: ;;#ASMSTART246; GFX90A-NEXT: ; def v[6:11]247; GFX90A-NEXT: ;;#ASMEND248; GFX90A-NEXT: ;;#ASMSTART249; GFX90A-NEXT: ; def v[0:5]250; GFX90A-NEXT: ;;#ASMEND251; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]252; GFX90A-NEXT: s_waitcnt vmcnt(0)253; GFX90A-NEXT: s_setpc_b64 s[30:31]254;255; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_0:256; GFX942: ; %bb.0:257; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)258; GFX942-NEXT: v_mov_b32_e32 v12, 0259; GFX942-NEXT: ;;#ASMSTART260; GFX942-NEXT: ; def v[6:11]261; GFX942-NEXT: ;;#ASMEND262; GFX942-NEXT: ;;#ASMSTART263; GFX942-NEXT: ; def v[0:5]264; GFX942-NEXT: ;;#ASMEND265; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]266; GFX942-NEXT: s_waitcnt vmcnt(0)267; GFX942-NEXT: s_setpc_b64 s[30:31]268 %vec0 = call <3 x ptr> asm "; def $0", "=v"()269 %vec1 = call <3 x ptr> asm "; def $0", "=v"()270 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 0>271 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16272 ret void273}274 275define void @v_shuffle_v2p0_v3p0__5_1(ptr addrspace(1) inreg %ptr) {276; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_1:277; GFX900: ; %bb.0:278; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)279; GFX900-NEXT: v_mov_b32_e32 v10, 0280; GFX900-NEXT: ;;#ASMSTART281; GFX900-NEXT: ; def v[4:9]282; GFX900-NEXT: ;;#ASMEND283; GFX900-NEXT: ;;#ASMSTART284; GFX900-NEXT: ; def v[0:5]285; GFX900-NEXT: ;;#ASMEND286; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]287; GFX900-NEXT: s_waitcnt vmcnt(0)288; GFX900-NEXT: s_setpc_b64 s[30:31]289;290; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_1:291; GFX90A: ; %bb.0:292; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)293; GFX90A-NEXT: v_mov_b32_e32 v10, 0294; GFX90A-NEXT: ;;#ASMSTART295; GFX90A-NEXT: ; def v[4:9]296; GFX90A-NEXT: ;;#ASMEND297; GFX90A-NEXT: ;;#ASMSTART298; GFX90A-NEXT: ; def v[0:5]299; GFX90A-NEXT: ;;#ASMEND300; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]301; GFX90A-NEXT: s_waitcnt vmcnt(0)302; GFX90A-NEXT: s_setpc_b64 s[30:31]303;304; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_1:305; GFX942: ; %bb.0:306; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)307; GFX942-NEXT: v_mov_b32_e32 v10, 0308; GFX942-NEXT: ;;#ASMSTART309; GFX942-NEXT: ; def v[4:9]310; GFX942-NEXT: ;;#ASMEND311; GFX942-NEXT: s_nop 0312; GFX942-NEXT: ;;#ASMSTART313; GFX942-NEXT: ; def v[0:5]314; GFX942-NEXT: ;;#ASMEND315; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]316; GFX942-NEXT: s_waitcnt vmcnt(0)317; GFX942-NEXT: s_setpc_b64 s[30:31]318 %vec0 = call <3 x ptr> asm "; def $0", "=v"()319 %vec1 = call <3 x ptr> asm "; def $0", "=v"()320 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 1>321 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16322 ret void323}324 325define void @v_shuffle_v2p0_v3p0__5_2(ptr addrspace(1) inreg %ptr) {326; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_2:327; GFX900: ; %bb.0:328; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)329; GFX900-NEXT: v_mov_b32_e32 v8, 0330; GFX900-NEXT: ;;#ASMSTART331; GFX900-NEXT: ; def v[2:7]332; GFX900-NEXT: ;;#ASMEND333; GFX900-NEXT: ;;#ASMSTART334; GFX900-NEXT: ; def v[0:5]335; GFX900-NEXT: ;;#ASMEND336; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]337; GFX900-NEXT: s_waitcnt vmcnt(0)338; GFX900-NEXT: s_setpc_b64 s[30:31]339;340; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_2:341; GFX90A: ; %bb.0:342; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)343; GFX90A-NEXT: v_mov_b32_e32 v8, 0344; GFX90A-NEXT: ;;#ASMSTART345; GFX90A-NEXT: ; def v[2:7]346; GFX90A-NEXT: ;;#ASMEND347; GFX90A-NEXT: ;;#ASMSTART348; GFX90A-NEXT: ; def v[0:5]349; GFX90A-NEXT: ;;#ASMEND350; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]351; GFX90A-NEXT: s_waitcnt vmcnt(0)352; GFX90A-NEXT: s_setpc_b64 s[30:31]353;354; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_2:355; GFX942: ; %bb.0:356; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)357; GFX942-NEXT: v_mov_b32_e32 v8, 0358; GFX942-NEXT: ;;#ASMSTART359; GFX942-NEXT: ; def v[2:7]360; GFX942-NEXT: ;;#ASMEND361; GFX942-NEXT: s_nop 0362; GFX942-NEXT: ;;#ASMSTART363; GFX942-NEXT: ; def v[0:5]364; GFX942-NEXT: ;;#ASMEND365; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]366; GFX942-NEXT: s_waitcnt vmcnt(0)367; GFX942-NEXT: s_setpc_b64 s[30:31]368 %vec0 = call <3 x ptr> asm "; def $0", "=v"()369 %vec1 = call <3 x ptr> asm "; def $0", "=v"()370 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 2>371 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16372 ret void373}374 375define void @v_shuffle_v2p0_v3p0__5_3(ptr addrspace(1) inreg %ptr) {376; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_3:377; GFX900: ; %bb.0:378; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)379; GFX900-NEXT: v_mov_b32_e32 v8, 0380; GFX900-NEXT: ;;#ASMSTART381; GFX900-NEXT: ; def v[0:5]382; GFX900-NEXT: ;;#ASMEND383; GFX900-NEXT: v_mov_b32_e32 v6, v0384; GFX900-NEXT: v_mov_b32_e32 v7, v1385; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]386; GFX900-NEXT: s_waitcnt vmcnt(0)387; GFX900-NEXT: s_setpc_b64 s[30:31]388;389; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_3:390; GFX90A: ; %bb.0:391; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)392; GFX90A-NEXT: v_mov_b32_e32 v8, 0393; GFX90A-NEXT: ;;#ASMSTART394; GFX90A-NEXT: ; def v[0:5]395; GFX90A-NEXT: ;;#ASMEND396; GFX90A-NEXT: v_mov_b32_e32 v6, v0397; GFX90A-NEXT: v_mov_b32_e32 v7, v1398; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]399; GFX90A-NEXT: s_waitcnt vmcnt(0)400; GFX90A-NEXT: s_setpc_b64 s[30:31]401;402; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_3:403; GFX942: ; %bb.0:404; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)405; GFX942-NEXT: v_mov_b32_e32 v8, 0406; GFX942-NEXT: ;;#ASMSTART407; GFX942-NEXT: ; def v[0:5]408; GFX942-NEXT: ;;#ASMEND409; GFX942-NEXT: s_nop 0410; GFX942-NEXT: v_mov_b32_e32 v6, v0411; GFX942-NEXT: v_mov_b32_e32 v7, v1412; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]413; GFX942-NEXT: s_waitcnt vmcnt(0)414; GFX942-NEXT: s_setpc_b64 s[30:31]415 %vec0 = call <3 x ptr> asm "; def $0", "=v"()416 %vec1 = call <3 x ptr> asm "; def $0", "=v"()417 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 3>418 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16419 ret void420}421 422define void @v_shuffle_v2p0_v3p0__5_4(ptr addrspace(1) inreg %ptr) {423; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_4:424; GFX900: ; %bb.0:425; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)426; GFX900-NEXT: v_mov_b32_e32 v8, 0427; GFX900-NEXT: ;;#ASMSTART428; GFX900-NEXT: ; def v[0:5]429; GFX900-NEXT: ;;#ASMEND430; GFX900-NEXT: v_mov_b32_e32 v6, v2431; GFX900-NEXT: v_mov_b32_e32 v7, v3432; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]433; GFX900-NEXT: s_waitcnt vmcnt(0)434; GFX900-NEXT: s_setpc_b64 s[30:31]435;436; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_4:437; GFX90A: ; %bb.0:438; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)439; GFX90A-NEXT: v_mov_b32_e32 v8, 0440; GFX90A-NEXT: ;;#ASMSTART441; GFX90A-NEXT: ; def v[0:5]442; GFX90A-NEXT: ;;#ASMEND443; GFX90A-NEXT: v_mov_b32_e32 v6, v2444; GFX90A-NEXT: v_mov_b32_e32 v7, v3445; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]446; GFX90A-NEXT: s_waitcnt vmcnt(0)447; GFX90A-NEXT: s_setpc_b64 s[30:31]448;449; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_4:450; GFX942: ; %bb.0:451; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)452; GFX942-NEXT: v_mov_b32_e32 v8, 0453; GFX942-NEXT: ;;#ASMSTART454; GFX942-NEXT: ; def v[0:5]455; GFX942-NEXT: ;;#ASMEND456; GFX942-NEXT: s_nop 0457; GFX942-NEXT: v_mov_b32_e32 v6, v2458; GFX942-NEXT: v_mov_b32_e32 v7, v3459; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]460; GFX942-NEXT: s_waitcnt vmcnt(0)461; GFX942-NEXT: s_setpc_b64 s[30:31]462 %vec0 = call <3 x ptr> asm "; def $0", "=v"()463 %vec1 = call <3 x ptr> asm "; def $0", "=v"()464 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 4>465 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16466 ret void467}468 469define void @v_shuffle_v2p0_v3p0__5_5(ptr addrspace(1) inreg %ptr) {470; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_5:471; GFX900: ; %bb.0:472; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)473; GFX900-NEXT: v_mov_b32_e32 v8, 0474; GFX900-NEXT: ;;#ASMSTART475; GFX900-NEXT: ; def v[0:5]476; GFX900-NEXT: ;;#ASMEND477; GFX900-NEXT: v_mov_b32_e32 v6, v4478; GFX900-NEXT: v_mov_b32_e32 v7, v5479; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]480; GFX900-NEXT: s_waitcnt vmcnt(0)481; GFX900-NEXT: s_setpc_b64 s[30:31]482;483; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_5:484; GFX90A: ; %bb.0:485; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)486; GFX90A-NEXT: v_mov_b32_e32 v8, 0487; GFX90A-NEXT: ;;#ASMSTART488; GFX90A-NEXT: ; def v[0:5]489; GFX90A-NEXT: ;;#ASMEND490; GFX90A-NEXT: v_mov_b32_e32 v6, v4491; GFX90A-NEXT: v_mov_b32_e32 v7, v5492; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]493; GFX90A-NEXT: s_waitcnt vmcnt(0)494; GFX90A-NEXT: s_setpc_b64 s[30:31]495;496; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_5:497; GFX942: ; %bb.0:498; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)499; GFX942-NEXT: v_mov_b32_e32 v8, 0500; GFX942-NEXT: ;;#ASMSTART501; GFX942-NEXT: ; def v[0:5]502; GFX942-NEXT: ;;#ASMEND503; GFX942-NEXT: s_nop 0504; GFX942-NEXT: v_mov_b32_e32 v6, v4505; GFX942-NEXT: v_mov_b32_e32 v7, v5506; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]507; GFX942-NEXT: s_waitcnt vmcnt(0)508; GFX942-NEXT: s_setpc_b64 s[30:31]509 %vec0 = call <3 x ptr> asm "; def $0", "=v"()510 %vec1 = call <3 x ptr> asm "; def $0", "=v"()511 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 5>512 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16513 ret void514}515 516define void @v_shuffle_v2p0_v3p0__u_0(ptr addrspace(1) inreg %ptr) {517; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_0:518; GFX900: ; %bb.0:519; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)520; GFX900-NEXT: v_mov_b32_e32 v0, 0521; GFX900-NEXT: ;;#ASMSTART522; GFX900-NEXT: ; def v[2:7]523; GFX900-NEXT: ;;#ASMEND524; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]525; GFX900-NEXT: s_waitcnt vmcnt(0)526; GFX900-NEXT: s_setpc_b64 s[30:31]527;528; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_0:529; GFX90A: ; %bb.0:530; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)531; GFX90A-NEXT: v_mov_b32_e32 v0, 0532; GFX90A-NEXT: ;;#ASMSTART533; GFX90A-NEXT: ; def v[2:7]534; GFX90A-NEXT: ;;#ASMEND535; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]536; GFX90A-NEXT: s_waitcnt vmcnt(0)537; GFX90A-NEXT: s_setpc_b64 s[30:31]538;539; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_0:540; GFX942: ; %bb.0:541; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)542; GFX942-NEXT: v_mov_b32_e32 v0, 0543; GFX942-NEXT: ;;#ASMSTART544; GFX942-NEXT: ; def v[2:7]545; GFX942-NEXT: ;;#ASMEND546; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]547; GFX942-NEXT: s_waitcnt vmcnt(0)548; GFX942-NEXT: s_setpc_b64 s[30:31]549 %vec0 = call <3 x ptr> asm "; def $0", "=v"()550 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 0>551 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16552 ret void553}554 555define void @v_shuffle_v2p0_v3p0__0_0(ptr addrspace(1) inreg %ptr) {556; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_0:557; GFX900: ; %bb.0:558; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)559; GFX900-NEXT: ;;#ASMSTART560; GFX900-NEXT: ; def v[0:5]561; GFX900-NEXT: ;;#ASMEND562; GFX900-NEXT: v_mov_b32_e32 v6, 0563; GFX900-NEXT: v_mov_b32_e32 v2, v0564; GFX900-NEXT: v_mov_b32_e32 v3, v1565; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]566; GFX900-NEXT: s_waitcnt vmcnt(0)567; GFX900-NEXT: s_setpc_b64 s[30:31]568;569; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_0:570; GFX90A: ; %bb.0:571; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)572; GFX90A-NEXT: ;;#ASMSTART573; GFX90A-NEXT: ; def v[0:5]574; GFX90A-NEXT: ;;#ASMEND575; GFX90A-NEXT: v_mov_b32_e32 v6, 0576; GFX90A-NEXT: v_mov_b32_e32 v2, v0577; GFX90A-NEXT: v_mov_b32_e32 v3, v1578; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]579; GFX90A-NEXT: s_waitcnt vmcnt(0)580; GFX90A-NEXT: s_setpc_b64 s[30:31]581;582; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_0:583; GFX942: ; %bb.0:584; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)585; GFX942-NEXT: ;;#ASMSTART586; GFX942-NEXT: ; def v[0:5]587; GFX942-NEXT: ;;#ASMEND588; GFX942-NEXT: v_mov_b32_e32 v6, 0589; GFX942-NEXT: v_mov_b32_e32 v2, v0590; GFX942-NEXT: v_mov_b32_e32 v3, v1591; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]592; GFX942-NEXT: s_waitcnt vmcnt(0)593; GFX942-NEXT: s_setpc_b64 s[30:31]594 %vec0 = call <3 x ptr> asm "; def $0", "=v"()595 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> zeroinitializer596 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16597 ret void598}599 600define void @v_shuffle_v2p0_v3p0__1_0(ptr addrspace(1) inreg %ptr) {601; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_0:602; GFX900: ; %bb.0:603; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)604; GFX900-NEXT: ;;#ASMSTART605; GFX900-NEXT: ; def v[0:5]606; GFX900-NEXT: ;;#ASMEND607; GFX900-NEXT: v_mov_b32_e32 v6, 0608; GFX900-NEXT: v_mov_b32_e32 v4, v0609; GFX900-NEXT: v_mov_b32_e32 v5, v1610; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]611; GFX900-NEXT: s_waitcnt vmcnt(0)612; GFX900-NEXT: s_setpc_b64 s[30:31]613;614; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_0:615; GFX90A: ; %bb.0:616; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)617; GFX90A-NEXT: ;;#ASMSTART618; GFX90A-NEXT: ; def v[0:5]619; GFX90A-NEXT: ;;#ASMEND620; GFX90A-NEXT: v_mov_b32_e32 v6, 0621; GFX90A-NEXT: v_mov_b32_e32 v4, v0622; GFX90A-NEXT: v_mov_b32_e32 v5, v1623; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]624; GFX90A-NEXT: s_waitcnt vmcnt(0)625; GFX90A-NEXT: s_setpc_b64 s[30:31]626;627; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_0:628; GFX942: ; %bb.0:629; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)630; GFX942-NEXT: ;;#ASMSTART631; GFX942-NEXT: ; def v[0:5]632; GFX942-NEXT: ;;#ASMEND633; GFX942-NEXT: v_mov_b32_e32 v6, 0634; GFX942-NEXT: v_mov_b32_e32 v4, v0635; GFX942-NEXT: v_mov_b32_e32 v5, v1636; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]637; GFX942-NEXT: s_waitcnt vmcnt(0)638; GFX942-NEXT: s_setpc_b64 s[30:31]639 %vec0 = call <3 x ptr> asm "; def $0", "=v"()640 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 0>641 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16642 ret void643}644 645define void @v_shuffle_v2p0_v3p0__2_0(ptr addrspace(1) inreg %ptr) {646; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_0:647; GFX900: ; %bb.0:648; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)649; GFX900-NEXT: v_mov_b32_e32 v8, 0650; GFX900-NEXT: ;;#ASMSTART651; GFX900-NEXT: ; def v[0:5]652; GFX900-NEXT: ;;#ASMEND653; GFX900-NEXT: v_mov_b32_e32 v6, v0654; GFX900-NEXT: v_mov_b32_e32 v7, v1655; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], 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_v3p0__2_0:660; GFX90A: ; %bb.0:661; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)662; GFX90A-NEXT: v_mov_b32_e32 v8, 0663; GFX90A-NEXT: ;;#ASMSTART664; GFX90A-NEXT: ; def v[0:5]665; GFX90A-NEXT: ;;#ASMEND666; GFX90A-NEXT: v_mov_b32_e32 v6, v0667; GFX90A-NEXT: v_mov_b32_e32 v7, v1668; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], 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_v3p0__2_0:673; GFX942: ; %bb.0:674; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)675; GFX942-NEXT: v_mov_b32_e32 v8, 0676; GFX942-NEXT: ;;#ASMSTART677; GFX942-NEXT: ; def v[0:5]678; GFX942-NEXT: ;;#ASMEND679; GFX942-NEXT: s_nop 0680; GFX942-NEXT: v_mov_b32_e32 v6, v0681; GFX942-NEXT: v_mov_b32_e32 v7, v1682; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]683; GFX942-NEXT: s_waitcnt vmcnt(0)684; GFX942-NEXT: s_setpc_b64 s[30:31]685 %vec0 = call <3 x ptr> asm "; def $0", "=v"()686 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 0>687 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16688 ret void689}690 691define void @v_shuffle_v2p0_v3p0__3_0(ptr addrspace(1) inreg %ptr) {692; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_0:693; GFX900: ; %bb.0:694; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)695; GFX900-NEXT: v_mov_b32_e32 v0, 0696; GFX900-NEXT: ;;#ASMSTART697; GFX900-NEXT: ; def v[2:7]698; GFX900-NEXT: ;;#ASMEND699; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]700; GFX900-NEXT: s_waitcnt vmcnt(0)701; GFX900-NEXT: s_setpc_b64 s[30:31]702;703; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_0:704; GFX90A: ; %bb.0:705; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)706; GFX90A-NEXT: v_mov_b32_e32 v0, 0707; GFX90A-NEXT: ;;#ASMSTART708; GFX90A-NEXT: ; def v[2:7]709; GFX90A-NEXT: ;;#ASMEND710; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]711; GFX90A-NEXT: s_waitcnt vmcnt(0)712; GFX90A-NEXT: s_setpc_b64 s[30:31]713;714; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_0:715; GFX942: ; %bb.0:716; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)717; GFX942-NEXT: v_mov_b32_e32 v0, 0718; GFX942-NEXT: ;;#ASMSTART719; GFX942-NEXT: ; def v[2:7]720; GFX942-NEXT: ;;#ASMEND721; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]722; GFX942-NEXT: s_waitcnt vmcnt(0)723; GFX942-NEXT: s_setpc_b64 s[30:31]724 %vec0 = call <3 x ptr> asm "; def $0", "=v"()725 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 0>726 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16727 ret void728}729 730define void @v_shuffle_v2p0_v3p0__4_0(ptr addrspace(1) inreg %ptr) {731; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_0:732; GFX900: ; %bb.0:733; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)734; GFX900-NEXT: ;;#ASMSTART735; GFX900-NEXT: ; def v[0:5]736; GFX900-NEXT: ;;#ASMEND737; GFX900-NEXT: ;;#ASMSTART738; GFX900-NEXT: ; def v[2:7]739; GFX900-NEXT: ;;#ASMEND740; GFX900-NEXT: v_mov_b32_e32 v8, 0741; GFX900-NEXT: v_mov_b32_e32 v6, v0742; GFX900-NEXT: v_mov_b32_e32 v7, v1743; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]744; GFX900-NEXT: s_waitcnt vmcnt(0)745; GFX900-NEXT: s_setpc_b64 s[30:31]746;747; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_0:748; GFX90A: ; %bb.0:749; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)750; GFX90A-NEXT: ;;#ASMSTART751; GFX90A-NEXT: ; def v[0:5]752; GFX90A-NEXT: ;;#ASMEND753; GFX90A-NEXT: ;;#ASMSTART754; GFX90A-NEXT: ; def v[2:7]755; GFX90A-NEXT: ;;#ASMEND756; GFX90A-NEXT: v_mov_b32_e32 v8, 0757; GFX90A-NEXT: v_mov_b32_e32 v6, v0758; GFX90A-NEXT: v_mov_b32_e32 v7, v1759; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]760; GFX90A-NEXT: s_waitcnt vmcnt(0)761; GFX90A-NEXT: s_setpc_b64 s[30:31]762;763; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_0:764; GFX942: ; %bb.0:765; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)766; GFX942-NEXT: ;;#ASMSTART767; GFX942-NEXT: ; def v[0:5]768; GFX942-NEXT: ;;#ASMEND769; GFX942-NEXT: v_mov_b32_e32 v8, 0770; GFX942-NEXT: ;;#ASMSTART771; GFX942-NEXT: ; def v[2:7]772; GFX942-NEXT: ;;#ASMEND773; GFX942-NEXT: s_nop 0774; GFX942-NEXT: v_mov_b32_e32 v6, v0775; GFX942-NEXT: v_mov_b32_e32 v7, v1776; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]777; GFX942-NEXT: s_waitcnt vmcnt(0)778; GFX942-NEXT: s_setpc_b64 s[30:31]779 %vec0 = call <3 x ptr> asm "; def $0", "=v"()780 %vec1 = call <3 x ptr> asm "; def $0", "=v"()781 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 0>782 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16783 ret void784}785 786define void @v_shuffle_v2p0_v3p0__u_1(ptr addrspace(1) inreg %ptr) {787; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_1:788; GFX900: ; %bb.0:789; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)790; GFX900-NEXT: v_mov_b32_e32 v6, 0791; GFX900-NEXT: ;;#ASMSTART792; GFX900-NEXT: ; def v[0:5]793; GFX900-NEXT: ;;#ASMEND794; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]795; GFX900-NEXT: s_waitcnt vmcnt(0)796; GFX900-NEXT: s_setpc_b64 s[30:31]797;798; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_1:799; GFX90A: ; %bb.0:800; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)801; GFX90A-NEXT: v_mov_b32_e32 v6, 0802; GFX90A-NEXT: ;;#ASMSTART803; GFX90A-NEXT: ; def v[0:5]804; GFX90A-NEXT: ;;#ASMEND805; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]806; GFX90A-NEXT: s_waitcnt vmcnt(0)807; GFX90A-NEXT: s_setpc_b64 s[30:31]808;809; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_1:810; GFX942: ; %bb.0:811; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)812; GFX942-NEXT: v_mov_b32_e32 v6, 0813; GFX942-NEXT: ;;#ASMSTART814; GFX942-NEXT: ; def v[0:5]815; GFX942-NEXT: ;;#ASMEND816; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]817; GFX942-NEXT: s_waitcnt vmcnt(0)818; GFX942-NEXT: s_setpc_b64 s[30:31]819 %vec0 = call <3 x ptr> asm "; def $0", "=v"()820 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 1>821 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16822 ret void823}824 825define void @v_shuffle_v2p0_v3p0__0_1(ptr addrspace(1) inreg %ptr) {826; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_1:827; GFX900: ; %bb.0:828; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)829; GFX900-NEXT: v_mov_b32_e32 v6, 0830; GFX900-NEXT: ;;#ASMSTART831; GFX900-NEXT: ; def v[0:5]832; GFX900-NEXT: ;;#ASMEND833; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]834; GFX900-NEXT: s_waitcnt vmcnt(0)835; GFX900-NEXT: s_setpc_b64 s[30:31]836;837; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_1:838; GFX90A: ; %bb.0:839; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)840; GFX90A-NEXT: v_mov_b32_e32 v6, 0841; GFX90A-NEXT: ;;#ASMSTART842; GFX90A-NEXT: ; def v[0:5]843; GFX90A-NEXT: ;;#ASMEND844; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], 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_v3p0__0_1:849; GFX942: ; %bb.0:850; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)851; GFX942-NEXT: v_mov_b32_e32 v6, 0852; GFX942-NEXT: ;;#ASMSTART853; GFX942-NEXT: ; def v[0:5]854; GFX942-NEXT: ;;#ASMEND855; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]856; GFX942-NEXT: s_waitcnt vmcnt(0)857; GFX942-NEXT: s_setpc_b64 s[30:31]858 %vec0 = call <3 x ptr> asm "; def $0", "=v"()859 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 1>860 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16861 ret void862}863 864define void @v_shuffle_v2p0_v3p0__1_1(ptr addrspace(1) inreg %ptr) {865; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_1:866; GFX900: ; %bb.0:867; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)868; GFX900-NEXT: ;;#ASMSTART869; GFX900-NEXT: ; def v[0:5]870; GFX900-NEXT: ;;#ASMEND871; GFX900-NEXT: v_mov_b32_e32 v6, 0872; GFX900-NEXT: v_mov_b32_e32 v4, v2873; GFX900-NEXT: v_mov_b32_e32 v5, v3874; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]875; GFX900-NEXT: s_waitcnt vmcnt(0)876; GFX900-NEXT: s_setpc_b64 s[30:31]877;878; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_1:879; GFX90A: ; %bb.0:880; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)881; GFX90A-NEXT: ;;#ASMSTART882; GFX90A-NEXT: ; def v[0:5]883; GFX90A-NEXT: ;;#ASMEND884; GFX90A-NEXT: v_mov_b32_e32 v6, 0885; GFX90A-NEXT: v_mov_b32_e32 v4, v2886; GFX90A-NEXT: v_mov_b32_e32 v5, v3887; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]888; GFX90A-NEXT: s_waitcnt vmcnt(0)889; GFX90A-NEXT: s_setpc_b64 s[30:31]890;891; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_1:892; GFX942: ; %bb.0:893; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)894; GFX942-NEXT: ;;#ASMSTART895; GFX942-NEXT: ; def v[0:5]896; GFX942-NEXT: ;;#ASMEND897; GFX942-NEXT: v_mov_b32_e32 v6, 0898; GFX942-NEXT: v_mov_b32_e32 v4, v2899; GFX942-NEXT: v_mov_b32_e32 v5, v3900; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]901; GFX942-NEXT: s_waitcnt vmcnt(0)902; GFX942-NEXT: s_setpc_b64 s[30:31]903 %vec0 = call <3 x ptr> asm "; def $0", "=v"()904 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 1>905 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16906 ret void907}908 909define void @v_shuffle_v2p0_v3p0__2_1(ptr addrspace(1) inreg %ptr) {910; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_1:911; GFX900: ; %bb.0:912; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)913; GFX900-NEXT: v_mov_b32_e32 v8, 0914; GFX900-NEXT: ;;#ASMSTART915; GFX900-NEXT: ; def v[0:5]916; GFX900-NEXT: ;;#ASMEND917; GFX900-NEXT: v_mov_b32_e32 v6, v2918; GFX900-NEXT: v_mov_b32_e32 v7, v3919; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]920; GFX900-NEXT: s_waitcnt vmcnt(0)921; GFX900-NEXT: s_setpc_b64 s[30:31]922;923; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_1:924; GFX90A: ; %bb.0:925; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)926; GFX90A-NEXT: v_mov_b32_e32 v8, 0927; GFX90A-NEXT: ;;#ASMSTART928; GFX90A-NEXT: ; def v[0:5]929; GFX90A-NEXT: ;;#ASMEND930; GFX90A-NEXT: v_mov_b32_e32 v6, v2931; GFX90A-NEXT: v_mov_b32_e32 v7, v3932; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]933; GFX90A-NEXT: s_waitcnt vmcnt(0)934; GFX90A-NEXT: s_setpc_b64 s[30:31]935;936; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_1:937; GFX942: ; %bb.0:938; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)939; GFX942-NEXT: v_mov_b32_e32 v8, 0940; GFX942-NEXT: ;;#ASMSTART941; GFX942-NEXT: ; def v[0:5]942; GFX942-NEXT: ;;#ASMEND943; GFX942-NEXT: s_nop 0944; GFX942-NEXT: v_mov_b32_e32 v6, v2945; GFX942-NEXT: v_mov_b32_e32 v7, v3946; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]947; GFX942-NEXT: s_waitcnt vmcnt(0)948; GFX942-NEXT: s_setpc_b64 s[30:31]949 %vec0 = call <3 x ptr> asm "; def $0", "=v"()950 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 1>951 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16952 ret void953}954 955define void @v_shuffle_v2p0_v3p0__3_1(ptr addrspace(1) inreg %ptr) {956; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_1:957; GFX900: ; %bb.0:958; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)959; GFX900-NEXT: v_mov_b32_e32 v6, 0960; GFX900-NEXT: ;;#ASMSTART961; GFX900-NEXT: ; def v[0:5]962; GFX900-NEXT: ;;#ASMEND963; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]964; GFX900-NEXT: s_waitcnt vmcnt(0)965; GFX900-NEXT: s_setpc_b64 s[30:31]966;967; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_1:968; GFX90A: ; %bb.0:969; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)970; GFX90A-NEXT: v_mov_b32_e32 v6, 0971; GFX90A-NEXT: ;;#ASMSTART972; GFX90A-NEXT: ; def v[0:5]973; GFX90A-NEXT: ;;#ASMEND974; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]975; GFX90A-NEXT: s_waitcnt vmcnt(0)976; GFX90A-NEXT: s_setpc_b64 s[30:31]977;978; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_1:979; GFX942: ; %bb.0:980; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)981; GFX942-NEXT: v_mov_b32_e32 v6, 0982; GFX942-NEXT: ;;#ASMSTART983; GFX942-NEXT: ; def v[0:5]984; GFX942-NEXT: ;;#ASMEND985; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]986; GFX942-NEXT: s_waitcnt vmcnt(0)987; GFX942-NEXT: s_setpc_b64 s[30:31]988 %vec0 = call <3 x ptr> asm "; def $0", "=v"()989 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 1>990 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16991 ret void992}993 994define void @v_shuffle_v2p0_v3p0__4_1(ptr addrspace(1) inreg %ptr) {995; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_1:996; GFX900: ; %bb.0:997; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)998; GFX900-NEXT: ;;#ASMSTART999; GFX900-NEXT: ; def v[0:5]1000; GFX900-NEXT: ;;#ASMEND1001; GFX900-NEXT: ;;#ASMSTART1002; GFX900-NEXT: ; def v[4:9]1003; GFX900-NEXT: ;;#ASMEND1004; GFX900-NEXT: v_mov_b32_e32 v10, 01005; GFX900-NEXT: v_mov_b32_e32 v8, v21006; GFX900-NEXT: v_mov_b32_e32 v9, v31007; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1008; GFX900-NEXT: s_waitcnt vmcnt(0)1009; GFX900-NEXT: s_setpc_b64 s[30:31]1010;1011; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_1:1012; GFX90A: ; %bb.0:1013; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1014; GFX90A-NEXT: ;;#ASMSTART1015; GFX90A-NEXT: ; def v[0:5]1016; GFX90A-NEXT: ;;#ASMEND1017; GFX90A-NEXT: ;;#ASMSTART1018; GFX90A-NEXT: ; def v[4:9]1019; GFX90A-NEXT: ;;#ASMEND1020; GFX90A-NEXT: v_mov_b32_e32 v10, 01021; GFX90A-NEXT: v_mov_b32_e32 v8, v21022; GFX90A-NEXT: v_mov_b32_e32 v9, v31023; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1024; GFX90A-NEXT: s_waitcnt vmcnt(0)1025; GFX90A-NEXT: s_setpc_b64 s[30:31]1026;1027; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_1:1028; GFX942: ; %bb.0:1029; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1030; GFX942-NEXT: ;;#ASMSTART1031; GFX942-NEXT: ; def v[0:5]1032; GFX942-NEXT: ;;#ASMEND1033; GFX942-NEXT: v_mov_b32_e32 v10, 01034; GFX942-NEXT: ;;#ASMSTART1035; GFX942-NEXT: ; def v[4:9]1036; GFX942-NEXT: ;;#ASMEND1037; GFX942-NEXT: s_nop 01038; GFX942-NEXT: v_mov_b32_e32 v8, v21039; GFX942-NEXT: v_mov_b32_e32 v9, v31040; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]1041; GFX942-NEXT: s_waitcnt vmcnt(0)1042; GFX942-NEXT: s_setpc_b64 s[30:31]1043 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1044 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1045 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 1>1046 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161047 ret void1048}1049 1050define void @v_shuffle_v2p0_v3p0__u_2(ptr addrspace(1) inreg %ptr) {1051; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_2:1052; GFX900: ; %bb.0:1053; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1054; GFX900-NEXT: v_mov_b32_e32 v6, 01055; GFX900-NEXT: ;;#ASMSTART1056; GFX900-NEXT: ; def v[0:5]1057; GFX900-NEXT: ;;#ASMEND1058; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1059; GFX900-NEXT: s_waitcnt vmcnt(0)1060; GFX900-NEXT: s_setpc_b64 s[30:31]1061;1062; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_2:1063; GFX90A: ; %bb.0:1064; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1065; GFX90A-NEXT: v_mov_b32_e32 v6, 01066; GFX90A-NEXT: ;;#ASMSTART1067; GFX90A-NEXT: ; def v[0:5]1068; GFX90A-NEXT: ;;#ASMEND1069; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1070; GFX90A-NEXT: s_waitcnt vmcnt(0)1071; GFX90A-NEXT: s_setpc_b64 s[30:31]1072;1073; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_2:1074; GFX942: ; %bb.0:1075; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1076; GFX942-NEXT: v_mov_b32_e32 v6, 01077; GFX942-NEXT: ;;#ASMSTART1078; GFX942-NEXT: ; def v[0:5]1079; GFX942-NEXT: ;;#ASMEND1080; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1081; GFX942-NEXT: s_waitcnt vmcnt(0)1082; GFX942-NEXT: s_setpc_b64 s[30:31]1083 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1084 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 2>1085 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161086 ret void1087}1088 1089define void @v_shuffle_v2p0_v3p0__0_2(ptr addrspace(1) inreg %ptr) {1090; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_2:1091; GFX900: ; %bb.0:1092; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1093; GFX900-NEXT: ;;#ASMSTART1094; GFX900-NEXT: ; def v[0:5]1095; GFX900-NEXT: ;;#ASMEND1096; GFX900-NEXT: v_mov_b32_e32 v6, 01097; GFX900-NEXT: v_mov_b32_e32 v2, v41098; GFX900-NEXT: v_mov_b32_e32 v3, v51099; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1100; GFX900-NEXT: s_waitcnt vmcnt(0)1101; GFX900-NEXT: s_setpc_b64 s[30:31]1102;1103; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_2:1104; GFX90A: ; %bb.0:1105; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1106; GFX90A-NEXT: ;;#ASMSTART1107; GFX90A-NEXT: ; def v[0:5]1108; GFX90A-NEXT: ;;#ASMEND1109; GFX90A-NEXT: v_mov_b32_e32 v6, 01110; GFX90A-NEXT: v_mov_b32_e32 v2, v41111; GFX90A-NEXT: v_mov_b32_e32 v3, v51112; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1113; GFX90A-NEXT: s_waitcnt vmcnt(0)1114; GFX90A-NEXT: s_setpc_b64 s[30:31]1115;1116; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_2:1117; GFX942: ; %bb.0:1118; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1119; GFX942-NEXT: ;;#ASMSTART1120; GFX942-NEXT: ; def v[0:5]1121; GFX942-NEXT: ;;#ASMEND1122; GFX942-NEXT: v_mov_b32_e32 v6, 01123; GFX942-NEXT: v_mov_b32_e32 v2, v41124; GFX942-NEXT: v_mov_b32_e32 v3, v51125; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1126; GFX942-NEXT: s_waitcnt vmcnt(0)1127; GFX942-NEXT: s_setpc_b64 s[30:31]1128 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1129 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 2>1130 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161131 ret void1132}1133 1134define void @v_shuffle_v2p0_v3p0__1_2(ptr addrspace(1) inreg %ptr) {1135; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_2:1136; GFX900: ; %bb.0:1137; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1138; GFX900-NEXT: v_mov_b32_e32 v6, 01139; GFX900-NEXT: ;;#ASMSTART1140; GFX900-NEXT: ; def v[0:5]1141; GFX900-NEXT: ;;#ASMEND1142; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1143; GFX900-NEXT: s_waitcnt vmcnt(0)1144; GFX900-NEXT: s_setpc_b64 s[30:31]1145;1146; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_2:1147; GFX90A: ; %bb.0:1148; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1149; GFX90A-NEXT: v_mov_b32_e32 v6, 01150; GFX90A-NEXT: ;;#ASMSTART1151; GFX90A-NEXT: ; def v[0:5]1152; GFX90A-NEXT: ;;#ASMEND1153; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1154; GFX90A-NEXT: s_waitcnt vmcnt(0)1155; GFX90A-NEXT: s_setpc_b64 s[30:31]1156;1157; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_2:1158; GFX942: ; %bb.0:1159; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1160; GFX942-NEXT: v_mov_b32_e32 v6, 01161; GFX942-NEXT: ;;#ASMSTART1162; GFX942-NEXT: ; def v[0:5]1163; GFX942-NEXT: ;;#ASMEND1164; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1165; GFX942-NEXT: s_waitcnt vmcnt(0)1166; GFX942-NEXT: s_setpc_b64 s[30:31]1167 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1168 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 2>1169 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161170 ret void1171}1172 1173define void @v_shuffle_v2p0_v3p0__2_2(ptr addrspace(1) inreg %ptr) {1174; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_2:1175; GFX900: ; %bb.0:1176; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1177; GFX900-NEXT: v_mov_b32_e32 v8, 01178; GFX900-NEXT: ;;#ASMSTART1179; GFX900-NEXT: ; def v[0:5]1180; GFX900-NEXT: ;;#ASMEND1181; GFX900-NEXT: v_mov_b32_e32 v6, v41182; GFX900-NEXT: v_mov_b32_e32 v7, v51183; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1184; GFX900-NEXT: s_waitcnt vmcnt(0)1185; GFX900-NEXT: s_setpc_b64 s[30:31]1186;1187; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_2:1188; GFX90A: ; %bb.0:1189; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1190; GFX90A-NEXT: v_mov_b32_e32 v8, 01191; GFX90A-NEXT: ;;#ASMSTART1192; GFX90A-NEXT: ; def v[0:5]1193; GFX90A-NEXT: ;;#ASMEND1194; GFX90A-NEXT: v_mov_b32_e32 v6, v41195; GFX90A-NEXT: v_mov_b32_e32 v7, v51196; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1197; GFX90A-NEXT: s_waitcnt vmcnt(0)1198; GFX90A-NEXT: s_setpc_b64 s[30:31]1199;1200; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_2:1201; GFX942: ; %bb.0:1202; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1203; GFX942-NEXT: v_mov_b32_e32 v8, 01204; GFX942-NEXT: ;;#ASMSTART1205; GFX942-NEXT: ; def v[0:5]1206; GFX942-NEXT: ;;#ASMEND1207; GFX942-NEXT: s_nop 01208; GFX942-NEXT: v_mov_b32_e32 v6, v41209; GFX942-NEXT: v_mov_b32_e32 v7, v51210; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1211; GFX942-NEXT: s_waitcnt vmcnt(0)1212; GFX942-NEXT: s_setpc_b64 s[30:31]1213 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1214 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 2>1215 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161216 ret void1217}1218 1219define void @v_shuffle_v2p0_v3p0__3_2(ptr addrspace(1) inreg %ptr) {1220; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_2:1221; GFX900: ; %bb.0:1222; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1223; GFX900-NEXT: v_mov_b32_e32 v6, 01224; GFX900-NEXT: ;;#ASMSTART1225; GFX900-NEXT: ; def v[0:5]1226; GFX900-NEXT: ;;#ASMEND1227; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1228; GFX900-NEXT: s_waitcnt vmcnt(0)1229; GFX900-NEXT: s_setpc_b64 s[30:31]1230;1231; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_2:1232; GFX90A: ; %bb.0:1233; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1234; GFX90A-NEXT: v_mov_b32_e32 v6, 01235; GFX90A-NEXT: ;;#ASMSTART1236; GFX90A-NEXT: ; def v[0:5]1237; GFX90A-NEXT: ;;#ASMEND1238; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1239; GFX90A-NEXT: s_waitcnt vmcnt(0)1240; GFX90A-NEXT: s_setpc_b64 s[30:31]1241;1242; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_2:1243; GFX942: ; %bb.0:1244; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1245; GFX942-NEXT: v_mov_b32_e32 v6, 01246; GFX942-NEXT: ;;#ASMSTART1247; GFX942-NEXT: ; def v[0:5]1248; GFX942-NEXT: ;;#ASMEND1249; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1250; GFX942-NEXT: s_waitcnt vmcnt(0)1251; GFX942-NEXT: s_setpc_b64 s[30:31]1252 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1253 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 2>1254 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161255 ret void1256}1257 1258define void @v_shuffle_v2p0_v3p0__4_2(ptr addrspace(1) inreg %ptr) {1259; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_2:1260; GFX900: ; %bb.0:1261; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1262; GFX900-NEXT: ;;#ASMSTART1263; GFX900-NEXT: ; def v[6:11]1264; GFX900-NEXT: ;;#ASMEND1265; GFX900-NEXT: v_mov_b32_e32 v12, 01266; GFX900-NEXT: ;;#ASMSTART1267; GFX900-NEXT: ; def v[0:5]1268; GFX900-NEXT: ;;#ASMEND1269; GFX900-NEXT: v_mov_b32_e32 v10, v41270; GFX900-NEXT: v_mov_b32_e32 v11, v51271; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]1272; GFX900-NEXT: s_waitcnt vmcnt(0)1273; GFX900-NEXT: s_setpc_b64 s[30:31]1274;1275; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_2:1276; GFX90A: ; %bb.0:1277; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1278; GFX90A-NEXT: ;;#ASMSTART1279; GFX90A-NEXT: ; def v[6:11]1280; GFX90A-NEXT: ;;#ASMEND1281; GFX90A-NEXT: v_mov_b32_e32 v12, 01282; GFX90A-NEXT: ;;#ASMSTART1283; GFX90A-NEXT: ; def v[0:5]1284; GFX90A-NEXT: ;;#ASMEND1285; GFX90A-NEXT: v_mov_b32_e32 v10, v41286; GFX90A-NEXT: v_mov_b32_e32 v11, v51287; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]1288; GFX90A-NEXT: s_waitcnt vmcnt(0)1289; GFX90A-NEXT: s_setpc_b64 s[30:31]1290;1291; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_2:1292; GFX942: ; %bb.0:1293; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1294; GFX942-NEXT: ;;#ASMSTART1295; GFX942-NEXT: ; def v[6:11]1296; GFX942-NEXT: ;;#ASMEND1297; GFX942-NEXT: v_mov_b32_e32 v12, 01298; GFX942-NEXT: ;;#ASMSTART1299; GFX942-NEXT: ; def v[0:5]1300; GFX942-NEXT: ;;#ASMEND1301; GFX942-NEXT: s_nop 01302; GFX942-NEXT: v_mov_b32_e32 v10, v41303; GFX942-NEXT: v_mov_b32_e32 v11, v51304; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1]1305; GFX942-NEXT: s_waitcnt vmcnt(0)1306; GFX942-NEXT: s_setpc_b64 s[30:31]1307 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1308 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1309 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 2>1310 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161311 ret void1312}1313 1314define void @v_shuffle_v2p0_v3p0__u_3(ptr addrspace(1) inreg %ptr) {1315; GFX9-LABEL: v_shuffle_v2p0_v3p0__u_3:1316; GFX9: ; %bb.0:1317; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1318; GFX9-NEXT: s_setpc_b64 s[30:31]1319 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1320 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 3>1321 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161322 ret void1323}1324 1325define void @v_shuffle_v2p0_v3p0__0_3(ptr addrspace(1) inreg %ptr) {1326; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_3:1327; GFX900: ; %bb.0:1328; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1329; GFX900-NEXT: v_mov_b32_e32 v6, 01330; GFX900-NEXT: ;;#ASMSTART1331; GFX900-NEXT: ; def v[0:5]1332; GFX900-NEXT: ;;#ASMEND1333; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1334; GFX900-NEXT: s_waitcnt vmcnt(0)1335; GFX900-NEXT: s_setpc_b64 s[30:31]1336;1337; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_3:1338; GFX90A: ; %bb.0:1339; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1340; GFX90A-NEXT: v_mov_b32_e32 v6, 01341; GFX90A-NEXT: ;;#ASMSTART1342; GFX90A-NEXT: ; def v[0:5]1343; GFX90A-NEXT: ;;#ASMEND1344; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1345; GFX90A-NEXT: s_waitcnt vmcnt(0)1346; GFX90A-NEXT: s_setpc_b64 s[30:31]1347;1348; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_3:1349; GFX942: ; %bb.0:1350; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1351; GFX942-NEXT: v_mov_b32_e32 v6, 01352; GFX942-NEXT: ;;#ASMSTART1353; GFX942-NEXT: ; def v[0:5]1354; GFX942-NEXT: ;;#ASMEND1355; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1356; GFX942-NEXT: s_waitcnt vmcnt(0)1357; GFX942-NEXT: s_setpc_b64 s[30:31]1358 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1359 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 3>1360 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161361 ret void1362}1363 1364define void @v_shuffle_v2p0_v3p0__1_3(ptr addrspace(1) inreg %ptr) {1365; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_3:1366; GFX900: ; %bb.0:1367; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1368; GFX900-NEXT: v_mov_b32_e32 v6, 01369; GFX900-NEXT: ;;#ASMSTART1370; GFX900-NEXT: ; def v[0:5]1371; GFX900-NEXT: ;;#ASMEND1372; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1373; GFX900-NEXT: s_waitcnt vmcnt(0)1374; GFX900-NEXT: s_setpc_b64 s[30:31]1375;1376; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_3:1377; GFX90A: ; %bb.0:1378; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1379; GFX90A-NEXT: v_mov_b32_e32 v6, 01380; GFX90A-NEXT: ;;#ASMSTART1381; GFX90A-NEXT: ; def v[0:5]1382; GFX90A-NEXT: ;;#ASMEND1383; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1384; GFX90A-NEXT: s_waitcnt vmcnt(0)1385; GFX90A-NEXT: s_setpc_b64 s[30:31]1386;1387; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_3:1388; GFX942: ; %bb.0:1389; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1390; GFX942-NEXT: v_mov_b32_e32 v6, 01391; GFX942-NEXT: ;;#ASMSTART1392; GFX942-NEXT: ; def v[0:5]1393; GFX942-NEXT: ;;#ASMEND1394; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1395; GFX942-NEXT: s_waitcnt vmcnt(0)1396; GFX942-NEXT: s_setpc_b64 s[30:31]1397 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1398 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 3>1399 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161400 ret void1401}1402 1403define void @v_shuffle_v2p0_v3p0__2_3(ptr addrspace(1) inreg %ptr) {1404; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_3:1405; GFX900: ; %bb.0:1406; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1407; GFX900-NEXT: v_mov_b32_e32 v6, 01408; GFX900-NEXT: ;;#ASMSTART1409; GFX900-NEXT: ; def v[0:5]1410; GFX900-NEXT: ;;#ASMEND1411; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]1412; GFX900-NEXT: s_waitcnt vmcnt(0)1413; GFX900-NEXT: s_setpc_b64 s[30:31]1414;1415; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_3:1416; GFX90A: ; %bb.0:1417; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1418; GFX90A-NEXT: v_mov_b32_e32 v6, 01419; GFX90A-NEXT: ;;#ASMSTART1420; GFX90A-NEXT: ; def v[0:5]1421; GFX90A-NEXT: ;;#ASMEND1422; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]1423; GFX90A-NEXT: s_waitcnt vmcnt(0)1424; GFX90A-NEXT: s_setpc_b64 s[30:31]1425;1426; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_3:1427; GFX942: ; %bb.0:1428; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1429; GFX942-NEXT: v_mov_b32_e32 v6, 01430; GFX942-NEXT: ;;#ASMSTART1431; GFX942-NEXT: ; def v[0:5]1432; GFX942-NEXT: ;;#ASMEND1433; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]1434; GFX942-NEXT: s_waitcnt vmcnt(0)1435; GFX942-NEXT: s_setpc_b64 s[30:31]1436 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1437 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 3>1438 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161439 ret void1440}1441 1442define void @v_shuffle_v2p0_v3p0__3_3(ptr addrspace(1) inreg %ptr) {1443; GFX9-LABEL: v_shuffle_v2p0_v3p0__3_3:1444; GFX9: ; %bb.0:1445; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1446; GFX9-NEXT: s_setpc_b64 s[30:31]1447 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1448 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 3>1449 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161450 ret void1451}1452 1453define void @v_shuffle_v2p0_v3p0__4_3(ptr addrspace(1) inreg %ptr) {1454; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_3:1455; GFX900: ; %bb.0:1456; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1457; GFX900-NEXT: ;;#ASMSTART1458; GFX900-NEXT: ; def v[0:5]1459; GFX900-NEXT: ;;#ASMEND1460; GFX900-NEXT: v_mov_b32_e32 v6, 01461; GFX900-NEXT: v_mov_b32_e32 v4, v01462; GFX900-NEXT: v_mov_b32_e32 v5, v11463; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1464; GFX900-NEXT: s_waitcnt vmcnt(0)1465; GFX900-NEXT: s_setpc_b64 s[30:31]1466;1467; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_3:1468; GFX90A: ; %bb.0:1469; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1470; GFX90A-NEXT: ;;#ASMSTART1471; GFX90A-NEXT: ; def v[0:5]1472; GFX90A-NEXT: ;;#ASMEND1473; GFX90A-NEXT: v_mov_b32_e32 v6, 01474; GFX90A-NEXT: v_mov_b32_e32 v4, v01475; GFX90A-NEXT: v_mov_b32_e32 v5, v11476; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1477; GFX90A-NEXT: s_waitcnt vmcnt(0)1478; GFX90A-NEXT: s_setpc_b64 s[30:31]1479;1480; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_3:1481; GFX942: ; %bb.0:1482; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1483; GFX942-NEXT: ;;#ASMSTART1484; GFX942-NEXT: ; def v[0:5]1485; GFX942-NEXT: ;;#ASMEND1486; GFX942-NEXT: v_mov_b32_e32 v6, 01487; GFX942-NEXT: v_mov_b32_e32 v4, v01488; GFX942-NEXT: v_mov_b32_e32 v5, v11489; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1490; GFX942-NEXT: s_waitcnt vmcnt(0)1491; GFX942-NEXT: s_setpc_b64 s[30:31]1492 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1493 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1494 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 3>1495 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161496 ret void1497}1498 1499define void @v_shuffle_v2p0_v3p0__u_4(ptr addrspace(1) inreg %ptr) {1500; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_4:1501; GFX900: ; %bb.0:1502; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1503; GFX900-NEXT: v_mov_b32_e32 v6, 01504; GFX900-NEXT: ;;#ASMSTART1505; GFX900-NEXT: ; def v[0:5]1506; GFX900-NEXT: ;;#ASMEND1507; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1508; GFX900-NEXT: s_waitcnt vmcnt(0)1509; GFX900-NEXT: s_setpc_b64 s[30:31]1510;1511; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_4:1512; GFX90A: ; %bb.0:1513; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1514; GFX90A-NEXT: v_mov_b32_e32 v6, 01515; GFX90A-NEXT: ;;#ASMSTART1516; GFX90A-NEXT: ; def v[0:5]1517; GFX90A-NEXT: ;;#ASMEND1518; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1519; GFX90A-NEXT: s_waitcnt vmcnt(0)1520; GFX90A-NEXT: s_setpc_b64 s[30:31]1521;1522; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_4:1523; GFX942: ; %bb.0:1524; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX942-NEXT: v_mov_b32_e32 v6, 01526; GFX942-NEXT: ;;#ASMSTART1527; GFX942-NEXT: ; def v[0:5]1528; GFX942-NEXT: ;;#ASMEND1529; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1530; GFX942-NEXT: s_waitcnt vmcnt(0)1531; GFX942-NEXT: s_setpc_b64 s[30:31]1532 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1533 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1534 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 4>1535 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161536 ret void1537}1538 1539define void @v_shuffle_v2p0_v3p0__0_4(ptr addrspace(1) inreg %ptr) {1540; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_4:1541; GFX900: ; %bb.0:1542; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1543; GFX900-NEXT: ;;#ASMSTART1544; GFX900-NEXT: ; def v[0:5]1545; GFX900-NEXT: ;;#ASMEND1546; GFX900-NEXT: ;;#ASMSTART1547; GFX900-NEXT: ; def v[2:7]1548; GFX900-NEXT: ;;#ASMEND1549; GFX900-NEXT: v_mov_b32_e32 v8, 01550; GFX900-NEXT: v_mov_b32_e32 v2, v41551; GFX900-NEXT: v_mov_b32_e32 v3, v51552; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1553; GFX900-NEXT: s_waitcnt vmcnt(0)1554; GFX900-NEXT: s_setpc_b64 s[30:31]1555;1556; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_4:1557; GFX90A: ; %bb.0:1558; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1559; GFX90A-NEXT: ;;#ASMSTART1560; GFX90A-NEXT: ; def v[0:5]1561; GFX90A-NEXT: ;;#ASMEND1562; GFX90A-NEXT: ;;#ASMSTART1563; GFX90A-NEXT: ; def v[2:7]1564; GFX90A-NEXT: ;;#ASMEND1565; GFX90A-NEXT: v_mov_b32_e32 v8, 01566; GFX90A-NEXT: v_mov_b32_e32 v2, v41567; GFX90A-NEXT: v_mov_b32_e32 v3, v51568; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1569; GFX90A-NEXT: s_waitcnt vmcnt(0)1570; GFX90A-NEXT: s_setpc_b64 s[30:31]1571;1572; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_4:1573; GFX942: ; %bb.0:1574; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1575; GFX942-NEXT: ;;#ASMSTART1576; GFX942-NEXT: ; def v[0:5]1577; GFX942-NEXT: ;;#ASMEND1578; GFX942-NEXT: v_mov_b32_e32 v8, 01579; GFX942-NEXT: ;;#ASMSTART1580; GFX942-NEXT: ; def v[2:7]1581; GFX942-NEXT: ;;#ASMEND1582; GFX942-NEXT: s_nop 01583; GFX942-NEXT: v_mov_b32_e32 v2, v41584; GFX942-NEXT: v_mov_b32_e32 v3, v51585; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]1586; GFX942-NEXT: s_waitcnt vmcnt(0)1587; GFX942-NEXT: s_setpc_b64 s[30:31]1588 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1589 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1590 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 4>1591 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161592 ret void1593}1594 1595define void @v_shuffle_v2p0_v3p0__1_4(ptr addrspace(1) inreg %ptr) {1596; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_4:1597; GFX900: ; %bb.0:1598; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1599; GFX900-NEXT: ;;#ASMSTART1600; GFX900-NEXT: ; def v[0:5]1601; GFX900-NEXT: ;;#ASMEND1602; GFX900-NEXT: ;;#ASMSTART1603; GFX900-NEXT: ; def v[4:9]1604; GFX900-NEXT: ;;#ASMEND1605; GFX900-NEXT: v_mov_b32_e32 v10, 01606; GFX900-NEXT: v_mov_b32_e32 v4, v61607; GFX900-NEXT: v_mov_b32_e32 v5, v71608; GFX900-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]1609; GFX900-NEXT: s_waitcnt vmcnt(0)1610; GFX900-NEXT: s_setpc_b64 s[30:31]1611;1612; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_4:1613; GFX90A: ; %bb.0:1614; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1615; GFX90A-NEXT: ;;#ASMSTART1616; GFX90A-NEXT: ; def v[0:5]1617; GFX90A-NEXT: ;;#ASMEND1618; GFX90A-NEXT: ;;#ASMSTART1619; GFX90A-NEXT: ; def v[4:9]1620; GFX90A-NEXT: ;;#ASMEND1621; GFX90A-NEXT: v_mov_b32_e32 v10, 01622; GFX90A-NEXT: v_mov_b32_e32 v4, v61623; GFX90A-NEXT: v_mov_b32_e32 v5, v71624; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]1625; GFX90A-NEXT: s_waitcnt vmcnt(0)1626; GFX90A-NEXT: s_setpc_b64 s[30:31]1627;1628; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_4:1629; GFX942: ; %bb.0:1630; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1631; GFX942-NEXT: ;;#ASMSTART1632; GFX942-NEXT: ; def v[0:5]1633; GFX942-NEXT: ;;#ASMEND1634; GFX942-NEXT: v_mov_b32_e32 v10, 01635; GFX942-NEXT: ;;#ASMSTART1636; GFX942-NEXT: ; def v[4:9]1637; GFX942-NEXT: ;;#ASMEND1638; GFX942-NEXT: s_nop 01639; GFX942-NEXT: v_mov_b32_e32 v4, v61640; GFX942-NEXT: v_mov_b32_e32 v5, v71641; GFX942-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1]1642; GFX942-NEXT: s_waitcnt vmcnt(0)1643; GFX942-NEXT: s_setpc_b64 s[30:31]1644 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1645 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1646 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 4>1647 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161648 ret void1649}1650 1651define void @v_shuffle_v2p0_v3p0__2_4(ptr addrspace(1) inreg %ptr) {1652; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_4:1653; GFX900: ; %bb.0:1654; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1655; GFX900-NEXT: ;;#ASMSTART1656; GFX900-NEXT: ; def v[6:11]1657; GFX900-NEXT: ;;#ASMEND1658; GFX900-NEXT: v_mov_b32_e32 v12, 01659; GFX900-NEXT: v_mov_b32_e32 v6, v81660; GFX900-NEXT: v_mov_b32_e32 v7, v91661; GFX900-NEXT: ;;#ASMSTART1662; GFX900-NEXT: ; def v[0:5]1663; GFX900-NEXT: ;;#ASMEND1664; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1665; GFX900-NEXT: s_waitcnt vmcnt(0)1666; GFX900-NEXT: s_setpc_b64 s[30:31]1667;1668; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_4:1669; GFX90A: ; %bb.0:1670; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1671; GFX90A-NEXT: ;;#ASMSTART1672; GFX90A-NEXT: ; def v[6:11]1673; GFX90A-NEXT: ;;#ASMEND1674; GFX90A-NEXT: v_mov_b32_e32 v12, 01675; GFX90A-NEXT: v_mov_b32_e32 v6, v81676; GFX90A-NEXT: v_mov_b32_e32 v7, v91677; GFX90A-NEXT: ;;#ASMSTART1678; GFX90A-NEXT: ; def v[0:5]1679; GFX90A-NEXT: ;;#ASMEND1680; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1681; GFX90A-NEXT: s_waitcnt vmcnt(0)1682; GFX90A-NEXT: s_setpc_b64 s[30:31]1683;1684; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_4:1685; GFX942: ; %bb.0:1686; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1687; GFX942-NEXT: ;;#ASMSTART1688; GFX942-NEXT: ; def v[6:11]1689; GFX942-NEXT: ;;#ASMEND1690; GFX942-NEXT: v_mov_b32_e32 v12, 01691; GFX942-NEXT: v_mov_b32_e32 v6, v81692; GFX942-NEXT: v_mov_b32_e32 v7, v91693; GFX942-NEXT: ;;#ASMSTART1694; GFX942-NEXT: ; def v[0:5]1695; GFX942-NEXT: ;;#ASMEND1696; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1697; GFX942-NEXT: s_waitcnt vmcnt(0)1698; GFX942-NEXT: s_setpc_b64 s[30:31]1699 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1700 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1701 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 4>1702 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161703 ret void1704}1705 1706define void @v_shuffle_v2p0_v3p0__3_4(ptr addrspace(1) inreg %ptr) {1707; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_4:1708; GFX900: ; %bb.0:1709; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1710; GFX900-NEXT: v_mov_b32_e32 v6, 01711; GFX900-NEXT: ;;#ASMSTART1712; GFX900-NEXT: ; def v[0:5]1713; GFX900-NEXT: ;;#ASMEND1714; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1715; GFX900-NEXT: s_waitcnt vmcnt(0)1716; GFX900-NEXT: s_setpc_b64 s[30:31]1717;1718; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_4:1719; GFX90A: ; %bb.0:1720; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1721; GFX90A-NEXT: v_mov_b32_e32 v6, 01722; GFX90A-NEXT: ;;#ASMSTART1723; GFX90A-NEXT: ; def v[0:5]1724; GFX90A-NEXT: ;;#ASMEND1725; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1726; GFX90A-NEXT: s_waitcnt vmcnt(0)1727; GFX90A-NEXT: s_setpc_b64 s[30:31]1728;1729; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_4:1730; GFX942: ; %bb.0:1731; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1732; GFX942-NEXT: v_mov_b32_e32 v6, 01733; GFX942-NEXT: ;;#ASMSTART1734; GFX942-NEXT: ; def v[0:5]1735; GFX942-NEXT: ;;#ASMEND1736; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1737; GFX942-NEXT: s_waitcnt vmcnt(0)1738; GFX942-NEXT: s_setpc_b64 s[30:31]1739 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1740 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1741 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 4>1742 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161743 ret void1744}1745 1746define void @v_shuffle_v2p0_v3p0__4_4(ptr addrspace(1) inreg %ptr) {1747; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_4:1748; GFX900: ; %bb.0:1749; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1750; GFX900-NEXT: ;;#ASMSTART1751; GFX900-NEXT: ; def v[0:5]1752; GFX900-NEXT: ;;#ASMEND1753; GFX900-NEXT: v_mov_b32_e32 v6, 01754; GFX900-NEXT: v_mov_b32_e32 v4, v21755; GFX900-NEXT: v_mov_b32_e32 v5, v31756; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1757; GFX900-NEXT: s_waitcnt vmcnt(0)1758; GFX900-NEXT: s_setpc_b64 s[30:31]1759;1760; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_4:1761; GFX90A: ; %bb.0:1762; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1763; GFX90A-NEXT: ;;#ASMSTART1764; GFX90A-NEXT: ; def v[0:5]1765; GFX90A-NEXT: ;;#ASMEND1766; GFX90A-NEXT: v_mov_b32_e32 v6, 01767; GFX90A-NEXT: v_mov_b32_e32 v4, v21768; GFX90A-NEXT: v_mov_b32_e32 v5, v31769; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1770; GFX90A-NEXT: s_waitcnt vmcnt(0)1771; GFX90A-NEXT: s_setpc_b64 s[30:31]1772;1773; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_4:1774; GFX942: ; %bb.0:1775; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1776; GFX942-NEXT: ;;#ASMSTART1777; GFX942-NEXT: ; def v[0:5]1778; GFX942-NEXT: ;;#ASMEND1779; GFX942-NEXT: v_mov_b32_e32 v6, 01780; GFX942-NEXT: v_mov_b32_e32 v4, v21781; GFX942-NEXT: v_mov_b32_e32 v5, v31782; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1783; GFX942-NEXT: s_waitcnt vmcnt(0)1784; GFX942-NEXT: s_setpc_b64 s[30:31]1785 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1786 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1787 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 4>1788 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161789 ret void1790}1791 1792define void @v_shuffle_v2p0_v3p0__u_5(ptr addrspace(1) inreg %ptr) {1793; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_5:1794; GFX900: ; %bb.0:1795; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1796; GFX900-NEXT: v_mov_b32_e32 v6, 01797; GFX900-NEXT: ;;#ASMSTART1798; GFX900-NEXT: ; def v[0:5]1799; GFX900-NEXT: ;;#ASMEND1800; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1801; GFX900-NEXT: s_waitcnt vmcnt(0)1802; GFX900-NEXT: s_setpc_b64 s[30:31]1803;1804; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_5:1805; GFX90A: ; %bb.0:1806; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1807; GFX90A-NEXT: v_mov_b32_e32 v6, 01808; GFX90A-NEXT: ;;#ASMSTART1809; GFX90A-NEXT: ; def v[0:5]1810; GFX90A-NEXT: ;;#ASMEND1811; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1812; GFX90A-NEXT: s_waitcnt vmcnt(0)1813; GFX90A-NEXT: s_setpc_b64 s[30:31]1814;1815; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_5:1816; GFX942: ; %bb.0:1817; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1818; GFX942-NEXT: v_mov_b32_e32 v6, 01819; GFX942-NEXT: ;;#ASMSTART1820; GFX942-NEXT: ; def v[0:5]1821; GFX942-NEXT: ;;#ASMEND1822; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1823; GFX942-NEXT: s_waitcnt vmcnt(0)1824; GFX942-NEXT: s_setpc_b64 s[30:31]1825 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1826 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1827 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>1828 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161829 ret void1830}1831 1832define void @v_shuffle_v2p0_v3p0__0_5(ptr addrspace(1) inreg %ptr) {1833; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_5:1834; GFX900: ; %bb.0:1835; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1836; GFX900-NEXT: ;;#ASMSTART1837; GFX900-NEXT: ; def v[0:5]1838; GFX900-NEXT: ;;#ASMEND1839; GFX900-NEXT: ;;#ASMSTART1840; GFX900-NEXT: ; def v[2:7]1841; GFX900-NEXT: ;;#ASMEND1842; GFX900-NEXT: v_mov_b32_e32 v8, 01843; GFX900-NEXT: v_mov_b32_e32 v2, v61844; GFX900-NEXT: v_mov_b32_e32 v3, v71845; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1846; GFX900-NEXT: s_waitcnt vmcnt(0)1847; GFX900-NEXT: s_setpc_b64 s[30:31]1848;1849; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_5:1850; GFX90A: ; %bb.0:1851; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1852; GFX90A-NEXT: ;;#ASMSTART1853; GFX90A-NEXT: ; def v[0:5]1854; GFX90A-NEXT: ;;#ASMEND1855; GFX90A-NEXT: ;;#ASMSTART1856; GFX90A-NEXT: ; def v[2:7]1857; GFX90A-NEXT: ;;#ASMEND1858; GFX90A-NEXT: v_mov_b32_e32 v8, 01859; GFX90A-NEXT: v_mov_b32_e32 v2, v61860; GFX90A-NEXT: v_mov_b32_e32 v3, v71861; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]1862; GFX90A-NEXT: s_waitcnt vmcnt(0)1863; GFX90A-NEXT: s_setpc_b64 s[30:31]1864;1865; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_5:1866; GFX942: ; %bb.0:1867; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1868; GFX942-NEXT: ;;#ASMSTART1869; GFX942-NEXT: ; def v[0:5]1870; GFX942-NEXT: ;;#ASMEND1871; GFX942-NEXT: v_mov_b32_e32 v8, 01872; GFX942-NEXT: ;;#ASMSTART1873; GFX942-NEXT: ; def v[2:7]1874; GFX942-NEXT: ;;#ASMEND1875; GFX942-NEXT: s_nop 01876; GFX942-NEXT: v_mov_b32_e32 v2, v61877; GFX942-NEXT: v_mov_b32_e32 v3, v71878; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]1879; GFX942-NEXT: s_waitcnt vmcnt(0)1880; GFX942-NEXT: s_setpc_b64 s[30:31]1881 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1882 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1883 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 5>1884 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161885 ret void1886}1887 1888define void @v_shuffle_v2p0_v3p0__1_5(ptr addrspace(1) inreg %ptr) {1889; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_5:1890; GFX900: ; %bb.0:1891; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1892; GFX900-NEXT: ;;#ASMSTART1893; GFX900-NEXT: ; def v[0:5]1894; GFX900-NEXT: ;;#ASMEND1895; GFX900-NEXT: ;;#ASMSTART1896; GFX900-NEXT: ; def v[4:9]1897; GFX900-NEXT: ;;#ASMEND1898; GFX900-NEXT: v_mov_b32_e32 v10, 01899; GFX900-NEXT: v_mov_b32_e32 v4, v81900; GFX900-NEXT: v_mov_b32_e32 v5, v91901; GFX900-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]1902; GFX900-NEXT: s_waitcnt vmcnt(0)1903; GFX900-NEXT: s_setpc_b64 s[30:31]1904;1905; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_5:1906; GFX90A: ; %bb.0:1907; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1908; GFX90A-NEXT: ;;#ASMSTART1909; GFX90A-NEXT: ; def v[0:5]1910; GFX90A-NEXT: ;;#ASMEND1911; GFX90A-NEXT: ;;#ASMSTART1912; GFX90A-NEXT: ; def v[4:9]1913; GFX90A-NEXT: ;;#ASMEND1914; GFX90A-NEXT: v_mov_b32_e32 v10, 01915; GFX90A-NEXT: v_mov_b32_e32 v4, v81916; GFX90A-NEXT: v_mov_b32_e32 v5, v91917; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]1918; GFX90A-NEXT: s_waitcnt vmcnt(0)1919; GFX90A-NEXT: s_setpc_b64 s[30:31]1920;1921; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_5:1922; GFX942: ; %bb.0:1923; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1924; GFX942-NEXT: ;;#ASMSTART1925; GFX942-NEXT: ; def v[0:5]1926; GFX942-NEXT: ;;#ASMEND1927; GFX942-NEXT: v_mov_b32_e32 v10, 01928; GFX942-NEXT: ;;#ASMSTART1929; GFX942-NEXT: ; def v[4:9]1930; GFX942-NEXT: ;;#ASMEND1931; GFX942-NEXT: s_nop 01932; GFX942-NEXT: v_mov_b32_e32 v4, v81933; GFX942-NEXT: v_mov_b32_e32 v5, v91934; GFX942-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1]1935; GFX942-NEXT: s_waitcnt vmcnt(0)1936; GFX942-NEXT: s_setpc_b64 s[30:31]1937 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1938 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1939 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 5>1940 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161941 ret void1942}1943 1944define void @v_shuffle_v2p0_v3p0__2_5(ptr addrspace(1) inreg %ptr) {1945; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_5:1946; GFX900: ; %bb.0:1947; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1948; GFX900-NEXT: ;;#ASMSTART1949; GFX900-NEXT: ; def v[6:11]1950; GFX900-NEXT: ;;#ASMEND1951; GFX900-NEXT: v_mov_b32_e32 v12, 01952; GFX900-NEXT: v_mov_b32_e32 v6, v101953; GFX900-NEXT: v_mov_b32_e32 v7, v111954; GFX900-NEXT: ;;#ASMSTART1955; GFX900-NEXT: ; def v[0:5]1956; GFX900-NEXT: ;;#ASMEND1957; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1958; GFX900-NEXT: s_waitcnt vmcnt(0)1959; GFX900-NEXT: s_setpc_b64 s[30:31]1960;1961; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_5:1962; GFX90A: ; %bb.0:1963; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1964; GFX90A-NEXT: ;;#ASMSTART1965; GFX90A-NEXT: ; def v[6:11]1966; GFX90A-NEXT: ;;#ASMEND1967; GFX90A-NEXT: v_mov_b32_e32 v12, 01968; GFX90A-NEXT: v_mov_b32_e32 v6, v101969; GFX90A-NEXT: v_mov_b32_e32 v7, v111970; GFX90A-NEXT: ;;#ASMSTART1971; GFX90A-NEXT: ; def v[0:5]1972; GFX90A-NEXT: ;;#ASMEND1973; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1974; GFX90A-NEXT: s_waitcnt vmcnt(0)1975; GFX90A-NEXT: s_setpc_b64 s[30:31]1976;1977; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_5:1978; GFX942: ; %bb.0:1979; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1980; GFX942-NEXT: ;;#ASMSTART1981; GFX942-NEXT: ; def v[6:11]1982; GFX942-NEXT: ;;#ASMEND1983; GFX942-NEXT: v_mov_b32_e32 v12, 01984; GFX942-NEXT: v_mov_b32_e32 v6, v101985; GFX942-NEXT: v_mov_b32_e32 v7, v111986; GFX942-NEXT: ;;#ASMSTART1987; GFX942-NEXT: ; def v[0:5]1988; GFX942-NEXT: ;;#ASMEND1989; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1990; GFX942-NEXT: s_waitcnt vmcnt(0)1991; GFX942-NEXT: s_setpc_b64 s[30:31]1992 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1993 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1994 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 5>1995 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161996 ret void1997}1998 1999define void @v_shuffle_v2p0_v3p0__3_5(ptr addrspace(1) inreg %ptr) {2000; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_5:2001; GFX900: ; %bb.0:2002; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2003; GFX900-NEXT: ;;#ASMSTART2004; GFX900-NEXT: ; def v[0:5]2005; GFX900-NEXT: ;;#ASMEND2006; GFX900-NEXT: v_mov_b32_e32 v6, 02007; GFX900-NEXT: v_mov_b32_e32 v2, v42008; GFX900-NEXT: v_mov_b32_e32 v3, v52009; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2010; GFX900-NEXT: s_waitcnt vmcnt(0)2011; GFX900-NEXT: s_setpc_b64 s[30:31]2012;2013; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_5:2014; GFX90A: ; %bb.0:2015; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2016; GFX90A-NEXT: ;;#ASMSTART2017; GFX90A-NEXT: ; def v[0:5]2018; GFX90A-NEXT: ;;#ASMEND2019; GFX90A-NEXT: v_mov_b32_e32 v6, 02020; GFX90A-NEXT: v_mov_b32_e32 v2, v42021; GFX90A-NEXT: v_mov_b32_e32 v3, v52022; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2023; GFX90A-NEXT: s_waitcnt vmcnt(0)2024; GFX90A-NEXT: s_setpc_b64 s[30:31]2025;2026; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_5:2027; GFX942: ; %bb.0:2028; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2029; GFX942-NEXT: ;;#ASMSTART2030; GFX942-NEXT: ; def v[0:5]2031; GFX942-NEXT: ;;#ASMEND2032; GFX942-NEXT: v_mov_b32_e32 v6, 02033; GFX942-NEXT: v_mov_b32_e32 v2, v42034; GFX942-NEXT: v_mov_b32_e32 v3, v52035; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]2036; GFX942-NEXT: s_waitcnt vmcnt(0)2037; GFX942-NEXT: s_setpc_b64 s[30:31]2038 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2039 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2040 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 5>2041 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162042 ret void2043}2044 2045define void @v_shuffle_v2p0_v3p0__4_5(ptr addrspace(1) inreg %ptr) {2046; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_5:2047; GFX900: ; %bb.0:2048; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2049; GFX900-NEXT: v_mov_b32_e32 v6, 02050; GFX900-NEXT: ;;#ASMSTART2051; GFX900-NEXT: ; def v[0:5]2052; GFX900-NEXT: ;;#ASMEND2053; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2054; GFX900-NEXT: s_waitcnt vmcnt(0)2055; GFX900-NEXT: s_setpc_b64 s[30:31]2056;2057; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_5:2058; GFX90A: ; %bb.0:2059; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2060; GFX90A-NEXT: v_mov_b32_e32 v6, 02061; GFX90A-NEXT: ;;#ASMSTART2062; GFX90A-NEXT: ; def v[0:5]2063; GFX90A-NEXT: ;;#ASMEND2064; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2065; GFX90A-NEXT: s_waitcnt vmcnt(0)2066; GFX90A-NEXT: s_setpc_b64 s[30:31]2067;2068; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_5:2069; GFX942: ; %bb.0:2070; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2071; GFX942-NEXT: v_mov_b32_e32 v6, 02072; GFX942-NEXT: ;;#ASMSTART2073; GFX942-NEXT: ; def v[0:5]2074; GFX942-NEXT: ;;#ASMEND2075; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2076; GFX942-NEXT: s_waitcnt vmcnt(0)2077; GFX942-NEXT: s_setpc_b64 s[30:31]2078 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2079 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2080 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 5>2081 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162082 ret void2083}2084 2085define void @s_shuffle_v2p0_v3p0__u_u() {2086; GFX9-LABEL: s_shuffle_v2p0_v3p0__u_u:2087; GFX9: ; %bb.0:2088; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2089; GFX9-NEXT: ;;#ASMSTART2090; GFX9-NEXT: ; use s[8:11]2091; GFX9-NEXT: ;;#ASMEND2092; GFX9-NEXT: s_setpc_b64 s[30:31]2093 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2094 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> poison2095 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2096 ret void2097}2098 2099define void @s_shuffle_v2p0_v3p0__0_u() {2100; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_u:2101; GFX900: ; %bb.0:2102; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2103; GFX900-NEXT: ;;#ASMSTART2104; GFX900-NEXT: ; def s[8:13]2105; GFX900-NEXT: ;;#ASMEND2106; GFX900-NEXT: ;;#ASMSTART2107; GFX900-NEXT: ; use s[8:11]2108; GFX900-NEXT: ;;#ASMEND2109; GFX900-NEXT: s_setpc_b64 s[30:31]2110;2111; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_u:2112; GFX90A: ; %bb.0:2113; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2114; GFX90A-NEXT: ;;#ASMSTART2115; GFX90A-NEXT: ; def s[8:13]2116; GFX90A-NEXT: ;;#ASMEND2117; GFX90A-NEXT: ;;#ASMSTART2118; GFX90A-NEXT: ; use s[8:11]2119; GFX90A-NEXT: ;;#ASMEND2120; GFX90A-NEXT: s_setpc_b64 s[30:31]2121;2122; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_u:2123; GFX942: ; %bb.0:2124; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2125; GFX942-NEXT: ;;#ASMSTART2126; GFX942-NEXT: ; def s[8:13]2127; GFX942-NEXT: ;;#ASMEND2128; GFX942-NEXT: s_nop 02129; GFX942-NEXT: ;;#ASMSTART2130; GFX942-NEXT: ; use s[8:11]2131; GFX942-NEXT: ;;#ASMEND2132; GFX942-NEXT: s_setpc_b64 s[30:31]2133 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2134 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 poison>2135 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2136 ret void2137}2138 2139define void @s_shuffle_v2p0_v3p0__1_u() {2140; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_u:2141; GFX900: ; %bb.0:2142; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2143; GFX900-NEXT: ;;#ASMSTART2144; GFX900-NEXT: ; def s[4:9]2145; GFX900-NEXT: ;;#ASMEND2146; GFX900-NEXT: s_mov_b32 s8, s62147; GFX900-NEXT: s_mov_b32 s9, s72148; GFX900-NEXT: ;;#ASMSTART2149; GFX900-NEXT: ; use s[8:11]2150; GFX900-NEXT: ;;#ASMEND2151; GFX900-NEXT: s_setpc_b64 s[30:31]2152;2153; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_u:2154; GFX90A: ; %bb.0:2155; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2156; GFX90A-NEXT: ;;#ASMSTART2157; GFX90A-NEXT: ; def s[4:9]2158; GFX90A-NEXT: ;;#ASMEND2159; GFX90A-NEXT: s_mov_b32 s8, s62160; GFX90A-NEXT: s_mov_b32 s9, s72161; GFX90A-NEXT: ;;#ASMSTART2162; GFX90A-NEXT: ; use s[8:11]2163; GFX90A-NEXT: ;;#ASMEND2164; GFX90A-NEXT: s_setpc_b64 s[30:31]2165;2166; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_u:2167; GFX942: ; %bb.0:2168; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2169; GFX942-NEXT: ;;#ASMSTART2170; GFX942-NEXT: ; def s[0:5]2171; GFX942-NEXT: ;;#ASMEND2172; GFX942-NEXT: s_mov_b32 s8, s22173; GFX942-NEXT: s_mov_b32 s9, s32174; GFX942-NEXT: ;;#ASMSTART2175; GFX942-NEXT: ; use s[8:11]2176; GFX942-NEXT: ;;#ASMEND2177; GFX942-NEXT: s_setpc_b64 s[30:31]2178 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2179 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 poison>2180 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2181 ret void2182}2183 2184define void @s_shuffle_v2p0_v3p0__2_u() {2185; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_u:2186; GFX900: ; %bb.0:2187; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2188; GFX900-NEXT: ;;#ASMSTART2189; GFX900-NEXT: ; def s[4:9]2190; GFX900-NEXT: ;;#ASMEND2191; GFX900-NEXT: ;;#ASMSTART2192; GFX900-NEXT: ; use s[8:11]2193; GFX900-NEXT: ;;#ASMEND2194; GFX900-NEXT: s_setpc_b64 s[30:31]2195;2196; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_u:2197; GFX90A: ; %bb.0:2198; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2199; GFX90A-NEXT: ;;#ASMSTART2200; GFX90A-NEXT: ; def s[4:9]2201; GFX90A-NEXT: ;;#ASMEND2202; GFX90A-NEXT: ;;#ASMSTART2203; GFX90A-NEXT: ; use s[8:11]2204; GFX90A-NEXT: ;;#ASMEND2205; GFX90A-NEXT: s_setpc_b64 s[30:31]2206;2207; GFX942-LABEL: s_shuffle_v2p0_v3p0__2_u:2208; GFX942: ; %bb.0:2209; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2210; GFX942-NEXT: ;;#ASMSTART2211; GFX942-NEXT: ; def s[4:9]2212; GFX942-NEXT: ;;#ASMEND2213; GFX942-NEXT: s_nop 02214; GFX942-NEXT: ;;#ASMSTART2215; GFX942-NEXT: ; use s[8:11]2216; GFX942-NEXT: ;;#ASMEND2217; GFX942-NEXT: s_setpc_b64 s[30:31]2218 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2219 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 poison>2220 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2221 ret void2222}2223 2224define void @s_shuffle_v2p0_v3p0__3_u() {2225; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_u:2226; GFX9: ; %bb.0:2227; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2228; GFX9-NEXT: ;;#ASMSTART2229; GFX9-NEXT: ; use s[8:11]2230; GFX9-NEXT: ;;#ASMEND2231; GFX9-NEXT: s_setpc_b64 s[30:31]2232 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2233 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 poison>2234 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2235 ret void2236}2237 2238define void @s_shuffle_v2p0_v3p0__4_u() {2239; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_u:2240; GFX900: ; %bb.0:2241; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2242; GFX900-NEXT: ;;#ASMSTART2243; GFX900-NEXT: ; def s[4:9]2244; GFX900-NEXT: ;;#ASMEND2245; GFX900-NEXT: s_mov_b32 s8, s62246; GFX900-NEXT: s_mov_b32 s9, s72247; GFX900-NEXT: ;;#ASMSTART2248; GFX900-NEXT: ; use s[8:11]2249; GFX900-NEXT: ;;#ASMEND2250; GFX900-NEXT: s_setpc_b64 s[30:31]2251;2252; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_u:2253; GFX90A: ; %bb.0:2254; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2255; GFX90A-NEXT: ;;#ASMSTART2256; GFX90A-NEXT: ; def s[4:9]2257; GFX90A-NEXT: ;;#ASMEND2258; GFX90A-NEXT: s_mov_b32 s8, s62259; GFX90A-NEXT: s_mov_b32 s9, s72260; GFX90A-NEXT: ;;#ASMSTART2261; GFX90A-NEXT: ; use s[8:11]2262; GFX90A-NEXT: ;;#ASMEND2263; GFX90A-NEXT: s_setpc_b64 s[30:31]2264;2265; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_u:2266; GFX942: ; %bb.0:2267; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2268; GFX942-NEXT: ;;#ASMSTART2269; GFX942-NEXT: ; def s[0:5]2270; GFX942-NEXT: ;;#ASMEND2271; GFX942-NEXT: s_mov_b32 s8, s22272; GFX942-NEXT: s_mov_b32 s9, s32273; GFX942-NEXT: ;;#ASMSTART2274; GFX942-NEXT: ; use s[8:11]2275; GFX942-NEXT: ;;#ASMEND2276; GFX942-NEXT: s_setpc_b64 s[30:31]2277 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2278 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2279 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 poison>2280 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2281 ret void2282}2283 2284define void @s_shuffle_v2p0_v3p0__5_u() {2285; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_u:2286; GFX900: ; %bb.0:2287; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2288; GFX900-NEXT: ;;#ASMSTART2289; GFX900-NEXT: ; def s[4:9]2290; GFX900-NEXT: ;;#ASMEND2291; GFX900-NEXT: ;;#ASMSTART2292; GFX900-NEXT: ; use s[8:11]2293; GFX900-NEXT: ;;#ASMEND2294; GFX900-NEXT: s_setpc_b64 s[30:31]2295;2296; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_u:2297; GFX90A: ; %bb.0:2298; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2299; GFX90A-NEXT: ;;#ASMSTART2300; GFX90A-NEXT: ; def s[4:9]2301; GFX90A-NEXT: ;;#ASMEND2302; GFX90A-NEXT: ;;#ASMSTART2303; GFX90A-NEXT: ; use s[8:11]2304; GFX90A-NEXT: ;;#ASMEND2305; GFX90A-NEXT: s_setpc_b64 s[30:31]2306;2307; GFX942-LABEL: s_shuffle_v2p0_v3p0__5_u:2308; GFX942: ; %bb.0:2309; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2310; GFX942-NEXT: ;;#ASMSTART2311; GFX942-NEXT: ; def s[4:9]2312; GFX942-NEXT: ;;#ASMEND2313; GFX942-NEXT: s_nop 02314; GFX942-NEXT: ;;#ASMSTART2315; GFX942-NEXT: ; use s[8:11]2316; GFX942-NEXT: ;;#ASMEND2317; GFX942-NEXT: s_setpc_b64 s[30:31]2318 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2319 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2320 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>2321 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2322 ret void2323}2324 2325define void @s_shuffle_v2p0_v3p0__5_0() {2326; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_0:2327; GFX900: ; %bb.0:2328; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2329; GFX900-NEXT: ;;#ASMSTART2330; GFX900-NEXT: ; def s[12:17]2331; GFX900-NEXT: ;;#ASMEND2332; GFX900-NEXT: ;;#ASMSTART2333; GFX900-NEXT: ; def s[4:9]2334; GFX900-NEXT: ;;#ASMEND2335; GFX900-NEXT: s_mov_b32 s10, s122336; GFX900-NEXT: s_mov_b32 s11, s132337; GFX900-NEXT: ;;#ASMSTART2338; GFX900-NEXT: ; use s[8:11]2339; GFX900-NEXT: ;;#ASMEND2340; GFX900-NEXT: s_setpc_b64 s[30:31]2341;2342; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_0:2343; GFX90A: ; %bb.0:2344; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2345; GFX90A-NEXT: ;;#ASMSTART2346; GFX90A-NEXT: ; def s[12:17]2347; GFX90A-NEXT: ;;#ASMEND2348; GFX90A-NEXT: ;;#ASMSTART2349; GFX90A-NEXT: ; def s[4:9]2350; GFX90A-NEXT: ;;#ASMEND2351; GFX90A-NEXT: s_mov_b32 s10, s122352; GFX90A-NEXT: s_mov_b32 s11, s132353; GFX90A-NEXT: ;;#ASMSTART2354; GFX90A-NEXT: ; use s[8:11]2355; GFX90A-NEXT: ;;#ASMEND2356; GFX90A-NEXT: s_setpc_b64 s[30:31]2357;2358; GFX942-LABEL: s_shuffle_v2p0_v3p0__5_0:2359; GFX942: ; %bb.0:2360; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2361; GFX942-NEXT: ;;#ASMSTART2362; GFX942-NEXT: ; def s[0:5]2363; GFX942-NEXT: ;;#ASMEND2364; GFX942-NEXT: s_mov_b32 s10, s02365; GFX942-NEXT: ;;#ASMSTART2366; GFX942-NEXT: ; def s[4:9]2367; GFX942-NEXT: ;;#ASMEND2368; GFX942-NEXT: s_mov_b32 s11, s12369; GFX942-NEXT: ;;#ASMSTART2370; GFX942-NEXT: ; use s[8:11]2371; GFX942-NEXT: ;;#ASMEND2372; GFX942-NEXT: s_setpc_b64 s[30:31]2373 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2374 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2375 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 0>2376 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2377 ret void2378}2379 2380define void @s_shuffle_v2p0_v3p0__5_1() {2381; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_1:2382; GFX900: ; %bb.0:2383; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2384; GFX900-NEXT: ;;#ASMSTART2385; GFX900-NEXT: ; def s[8:13]2386; GFX900-NEXT: ;;#ASMEND2387; GFX900-NEXT: ;;#ASMSTART2388; GFX900-NEXT: ; def s[4:9]2389; GFX900-NEXT: ;;#ASMEND2390; GFX900-NEXT: ;;#ASMSTART2391; GFX900-NEXT: ; use s[8:11]2392; GFX900-NEXT: ;;#ASMEND2393; GFX900-NEXT: s_setpc_b64 s[30:31]2394;2395; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_1:2396; GFX90A: ; %bb.0:2397; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2398; GFX90A-NEXT: ;;#ASMSTART2399; GFX90A-NEXT: ; def s[8:13]2400; GFX90A-NEXT: ;;#ASMEND2401; GFX90A-NEXT: ;;#ASMSTART2402; GFX90A-NEXT: ; def s[4:9]2403; GFX90A-NEXT: ;;#ASMEND2404; GFX90A-NEXT: ;;#ASMSTART2405; GFX90A-NEXT: ; use s[8:11]2406; GFX90A-NEXT: ;;#ASMEND2407; GFX90A-NEXT: s_setpc_b64 s[30:31]2408;2409; GFX942-LABEL: s_shuffle_v2p0_v3p0__5_1:2410; GFX942: ; %bb.0:2411; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2412; GFX942-NEXT: ;;#ASMSTART2413; GFX942-NEXT: ; def s[8:13]2414; GFX942-NEXT: ;;#ASMEND2415; GFX942-NEXT: s_nop 02416; GFX942-NEXT: ;;#ASMSTART2417; GFX942-NEXT: ; def s[4:9]2418; GFX942-NEXT: ;;#ASMEND2419; GFX942-NEXT: s_nop 02420; GFX942-NEXT: ;;#ASMSTART2421; GFX942-NEXT: ; use s[8:11]2422; GFX942-NEXT: ;;#ASMEND2423; GFX942-NEXT: s_setpc_b64 s[30:31]2424 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2425 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2426 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 1>2427 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2428 ret void2429}2430 2431define void @s_shuffle_v2p0_v3p0__5_2() {2432; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_2:2433; GFX900: ; %bb.0:2434; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2435; GFX900-NEXT: ;;#ASMSTART2436; GFX900-NEXT: ; def s[8:13]2437; GFX900-NEXT: ;;#ASMEND2438; GFX900-NEXT: ;;#ASMSTART2439; GFX900-NEXT: ; def s[4:9]2440; GFX900-NEXT: ;;#ASMEND2441; GFX900-NEXT: s_mov_b32 s10, s122442; GFX900-NEXT: s_mov_b32 s11, s132443; GFX900-NEXT: ;;#ASMSTART2444; GFX900-NEXT: ; use s[8:11]2445; GFX900-NEXT: ;;#ASMEND2446; GFX900-NEXT: s_setpc_b64 s[30:31]2447;2448; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_2:2449; GFX90A: ; %bb.0:2450; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2451; GFX90A-NEXT: ;;#ASMSTART2452; GFX90A-NEXT: ; def s[8:13]2453; GFX90A-NEXT: ;;#ASMEND2454; GFX90A-NEXT: ;;#ASMSTART2455; GFX90A-NEXT: ; def s[4:9]2456; GFX90A-NEXT: ;;#ASMEND2457; GFX90A-NEXT: s_mov_b32 s10, s122458; GFX90A-NEXT: s_mov_b32 s11, s132459; GFX90A-NEXT: ;;#ASMSTART2460; GFX90A-NEXT: ; use s[8:11]2461; GFX90A-NEXT: ;;#ASMEND2462; GFX90A-NEXT: s_setpc_b64 s[30:31]2463;2464; GFX942-LABEL: s_shuffle_v2p0_v3p0__5_2:2465; GFX942: ; %bb.0:2466; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2467; GFX942-NEXT: ;;#ASMSTART2468; GFX942-NEXT: ; def s[8:13]2469; GFX942-NEXT: ;;#ASMEND2470; GFX942-NEXT: s_mov_b32 s10, s122471; GFX942-NEXT: ;;#ASMSTART2472; GFX942-NEXT: ; def s[4:9]2473; GFX942-NEXT: ;;#ASMEND2474; GFX942-NEXT: s_mov_b32 s11, s132475; GFX942-NEXT: ;;#ASMSTART2476; GFX942-NEXT: ; use s[8:11]2477; GFX942-NEXT: ;;#ASMEND2478; GFX942-NEXT: s_setpc_b64 s[30:31]2479 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2480 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2481 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 2>2482 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2483 ret void2484}2485 2486define void @s_shuffle_v2p0_v3p0__5_3() {2487; GFX9-LABEL: s_shuffle_v2p0_v3p0__5_3:2488; GFX9: ; %bb.0:2489; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2490; GFX9-NEXT: ;;#ASMSTART2491; GFX9-NEXT: ; def s[4:9]2492; GFX9-NEXT: ;;#ASMEND2493; GFX9-NEXT: s_mov_b32 s10, s42494; GFX9-NEXT: s_mov_b32 s11, s52495; GFX9-NEXT: ;;#ASMSTART2496; GFX9-NEXT: ; use s[8:11]2497; GFX9-NEXT: ;;#ASMEND2498; GFX9-NEXT: s_setpc_b64 s[30:31]2499 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2500 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2501 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 3>2502 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2503 ret void2504}2505 2506define void @s_shuffle_v2p0_v3p0__5_4() {2507; GFX9-LABEL: s_shuffle_v2p0_v3p0__5_4:2508; GFX9: ; %bb.0:2509; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2510; GFX9-NEXT: ;;#ASMSTART2511; GFX9-NEXT: ; def s[4:9]2512; GFX9-NEXT: ;;#ASMEND2513; GFX9-NEXT: s_mov_b32 s10, s62514; GFX9-NEXT: s_mov_b32 s11, s72515; GFX9-NEXT: ;;#ASMSTART2516; GFX9-NEXT: ; use s[8:11]2517; GFX9-NEXT: ;;#ASMEND2518; GFX9-NEXT: s_setpc_b64 s[30:31]2519 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2520 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2521 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 4>2522 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2523 ret void2524}2525 2526define void @s_shuffle_v2p0_v3p0__5_5() {2527; GFX9-LABEL: s_shuffle_v2p0_v3p0__5_5:2528; GFX9: ; %bb.0:2529; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2530; GFX9-NEXT: ;;#ASMSTART2531; GFX9-NEXT: ; def s[4:9]2532; GFX9-NEXT: ;;#ASMEND2533; GFX9-NEXT: s_mov_b32 s10, s82534; GFX9-NEXT: s_mov_b32 s11, s92535; GFX9-NEXT: ;;#ASMSTART2536; GFX9-NEXT: ; use s[8:11]2537; GFX9-NEXT: ;;#ASMEND2538; GFX9-NEXT: s_setpc_b64 s[30:31]2539 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2540 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2541 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 5>2542 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2543 ret void2544}2545 2546define void @s_shuffle_v2p0_v3p0__u_0() {2547; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_0:2548; GFX900: ; %bb.0:2549; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2550; GFX900-NEXT: ;;#ASMSTART2551; GFX900-NEXT: ; def s[4:9]2552; GFX900-NEXT: ;;#ASMEND2553; GFX900-NEXT: s_mov_b32 s10, s42554; GFX900-NEXT: s_mov_b32 s11, s52555; GFX900-NEXT: ;;#ASMSTART2556; GFX900-NEXT: ; use s[8:11]2557; GFX900-NEXT: ;;#ASMEND2558; GFX900-NEXT: s_setpc_b64 s[30:31]2559;2560; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_0:2561; GFX90A: ; %bb.0:2562; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2563; GFX90A-NEXT: ;;#ASMSTART2564; GFX90A-NEXT: ; def s[4:9]2565; GFX90A-NEXT: ;;#ASMEND2566; GFX90A-NEXT: s_mov_b32 s10, s42567; GFX90A-NEXT: s_mov_b32 s11, s52568; GFX90A-NEXT: ;;#ASMSTART2569; GFX90A-NEXT: ; use s[8:11]2570; GFX90A-NEXT: ;;#ASMEND2571; GFX90A-NEXT: s_setpc_b64 s[30:31]2572;2573; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_0:2574; GFX942: ; %bb.0:2575; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2576; GFX942-NEXT: ;;#ASMSTART2577; GFX942-NEXT: ; def s[0:5]2578; GFX942-NEXT: ;;#ASMEND2579; GFX942-NEXT: s_mov_b32 s10, s02580; GFX942-NEXT: s_mov_b32 s11, s12581; GFX942-NEXT: ;;#ASMSTART2582; GFX942-NEXT: ; use s[8:11]2583; GFX942-NEXT: ;;#ASMEND2584; GFX942-NEXT: s_setpc_b64 s[30:31]2585 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2586 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 0>2587 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2588 ret void2589}2590 2591define void @s_shuffle_v2p0_v3p0__0_0() {2592; GFX9-LABEL: s_shuffle_v2p0_v3p0__0_0:2593; GFX9: ; %bb.0:2594; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2595; GFX9-NEXT: ;;#ASMSTART2596; GFX9-NEXT: ; def s[8:13]2597; GFX9-NEXT: ;;#ASMEND2598; GFX9-NEXT: s_mov_b32 s10, s82599; GFX9-NEXT: s_mov_b32 s11, s92600; GFX9-NEXT: ;;#ASMSTART2601; GFX9-NEXT: ; use s[8:11]2602; GFX9-NEXT: ;;#ASMEND2603; GFX9-NEXT: s_setpc_b64 s[30:31]2604 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2605 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> zeroinitializer2606 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2607 ret void2608}2609 2610define void @s_shuffle_v2p0_v3p0__1_0() {2611; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_0:2612; GFX900: ; %bb.0:2613; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2614; GFX900-NEXT: ;;#ASMSTART2615; GFX900-NEXT: ; def s[4:9]2616; GFX900-NEXT: ;;#ASMEND2617; GFX900-NEXT: s_mov_b32 s8, s62618; GFX900-NEXT: s_mov_b32 s9, s72619; GFX900-NEXT: s_mov_b32 s10, s42620; GFX900-NEXT: s_mov_b32 s11, s52621; GFX900-NEXT: ;;#ASMSTART2622; GFX900-NEXT: ; use s[8:11]2623; GFX900-NEXT: ;;#ASMEND2624; GFX900-NEXT: s_setpc_b64 s[30:31]2625;2626; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_0:2627; GFX90A: ; %bb.0:2628; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2629; GFX90A-NEXT: ;;#ASMSTART2630; GFX90A-NEXT: ; def s[4:9]2631; GFX90A-NEXT: ;;#ASMEND2632; GFX90A-NEXT: s_mov_b32 s8, s62633; GFX90A-NEXT: s_mov_b32 s9, s72634; GFX90A-NEXT: s_mov_b32 s10, s42635; GFX90A-NEXT: s_mov_b32 s11, s52636; GFX90A-NEXT: ;;#ASMSTART2637; GFX90A-NEXT: ; use s[8:11]2638; GFX90A-NEXT: ;;#ASMEND2639; GFX90A-NEXT: s_setpc_b64 s[30:31]2640;2641; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_0:2642; GFX942: ; %bb.0:2643; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2644; GFX942-NEXT: ;;#ASMSTART2645; GFX942-NEXT: ; def s[0:5]2646; GFX942-NEXT: ;;#ASMEND2647; GFX942-NEXT: s_mov_b32 s8, s22648; GFX942-NEXT: s_mov_b32 s9, s32649; GFX942-NEXT: s_mov_b32 s10, s02650; GFX942-NEXT: s_mov_b32 s11, s12651; GFX942-NEXT: ;;#ASMSTART2652; GFX942-NEXT: ; use s[8:11]2653; GFX942-NEXT: ;;#ASMEND2654; GFX942-NEXT: s_setpc_b64 s[30:31]2655 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2656 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 0>2657 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2658 ret void2659}2660 2661define void @s_shuffle_v2p0_v3p0__2_0() {2662; GFX9-LABEL: s_shuffle_v2p0_v3p0__2_0:2663; GFX9: ; %bb.0:2664; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2665; GFX9-NEXT: ;;#ASMSTART2666; GFX9-NEXT: ; def s[4:9]2667; GFX9-NEXT: ;;#ASMEND2668; GFX9-NEXT: s_mov_b32 s10, s42669; GFX9-NEXT: s_mov_b32 s11, s52670; GFX9-NEXT: ;;#ASMSTART2671; GFX9-NEXT: ; use s[8:11]2672; GFX9-NEXT: ;;#ASMEND2673; GFX9-NEXT: s_setpc_b64 s[30:31]2674 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2675 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 0>2676 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2677 ret void2678}2679 2680define void @s_shuffle_v2p0_v3p0__3_0() {2681; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_0:2682; GFX900: ; %bb.0:2683; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2684; GFX900-NEXT: ;;#ASMSTART2685; GFX900-NEXT: ; def s[4:9]2686; GFX900-NEXT: ;;#ASMEND2687; GFX900-NEXT: s_mov_b32 s10, s42688; GFX900-NEXT: s_mov_b32 s11, s52689; GFX900-NEXT: ;;#ASMSTART2690; GFX900-NEXT: ; use s[8:11]2691; GFX900-NEXT: ;;#ASMEND2692; GFX900-NEXT: s_setpc_b64 s[30:31]2693;2694; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_0:2695; GFX90A: ; %bb.0:2696; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2697; GFX90A-NEXT: ;;#ASMSTART2698; GFX90A-NEXT: ; def s[4:9]2699; GFX90A-NEXT: ;;#ASMEND2700; GFX90A-NEXT: s_mov_b32 s10, s42701; GFX90A-NEXT: s_mov_b32 s11, s52702; GFX90A-NEXT: ;;#ASMSTART2703; GFX90A-NEXT: ; use s[8:11]2704; GFX90A-NEXT: ;;#ASMEND2705; GFX90A-NEXT: s_setpc_b64 s[30:31]2706;2707; GFX942-LABEL: s_shuffle_v2p0_v3p0__3_0:2708; GFX942: ; %bb.0:2709; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2710; GFX942-NEXT: ;;#ASMSTART2711; GFX942-NEXT: ; def s[0:5]2712; GFX942-NEXT: ;;#ASMEND2713; GFX942-NEXT: s_mov_b32 s10, s02714; GFX942-NEXT: s_mov_b32 s11, s12715; GFX942-NEXT: ;;#ASMSTART2716; GFX942-NEXT: ; use s[8:11]2717; GFX942-NEXT: ;;#ASMEND2718; GFX942-NEXT: s_setpc_b64 s[30:31]2719 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2720 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 0>2721 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2722 ret void2723}2724 2725define void @s_shuffle_v2p0_v3p0__4_0() {2726; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_0:2727; GFX900: ; %bb.0:2728; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2729; GFX900-NEXT: ;;#ASMSTART2730; GFX900-NEXT: ; def s[4:9]2731; GFX900-NEXT: ;;#ASMEND2732; GFX900-NEXT: ;;#ASMSTART2733; GFX900-NEXT: ; def s[8:13]2734; GFX900-NEXT: ;;#ASMEND2735; GFX900-NEXT: s_mov_b32 s8, s102736; GFX900-NEXT: s_mov_b32 s9, s112737; GFX900-NEXT: s_mov_b32 s10, s42738; GFX900-NEXT: s_mov_b32 s11, s52739; GFX900-NEXT: ;;#ASMSTART2740; GFX900-NEXT: ; use s[8:11]2741; GFX900-NEXT: ;;#ASMEND2742; GFX900-NEXT: s_setpc_b64 s[30:31]2743;2744; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_0:2745; GFX90A: ; %bb.0:2746; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2747; GFX90A-NEXT: ;;#ASMSTART2748; GFX90A-NEXT: ; def s[4:9]2749; GFX90A-NEXT: ;;#ASMEND2750; GFX90A-NEXT: ;;#ASMSTART2751; GFX90A-NEXT: ; def s[8:13]2752; GFX90A-NEXT: ;;#ASMEND2753; GFX90A-NEXT: s_mov_b32 s8, s102754; GFX90A-NEXT: s_mov_b32 s9, s112755; GFX90A-NEXT: s_mov_b32 s10, s42756; GFX90A-NEXT: s_mov_b32 s11, s52757; GFX90A-NEXT: ;;#ASMSTART2758; GFX90A-NEXT: ; use s[8:11]2759; GFX90A-NEXT: ;;#ASMEND2760; GFX90A-NEXT: s_setpc_b64 s[30:31]2761;2762; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_0:2763; GFX942: ; %bb.0:2764; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2765; GFX942-NEXT: ;;#ASMSTART2766; GFX942-NEXT: ; def s[0:5]2767; GFX942-NEXT: ;;#ASMEND2768; GFX942-NEXT: s_mov_b32 s10, s02769; GFX942-NEXT: ;;#ASMSTART2770; GFX942-NEXT: ; def s[4:9]2771; GFX942-NEXT: ;;#ASMEND2772; GFX942-NEXT: s_mov_b32 s8, s62773; GFX942-NEXT: s_mov_b32 s9, s72774; GFX942-NEXT: s_mov_b32 s11, s12775; GFX942-NEXT: ;;#ASMSTART2776; GFX942-NEXT: ; use s[8:11]2777; GFX942-NEXT: ;;#ASMEND2778; GFX942-NEXT: s_setpc_b64 s[30:31]2779 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2780 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2781 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 0>2782 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2783 ret void2784}2785 2786define void @s_shuffle_v2p0_v3p0__u_1() {2787; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_1:2788; GFX900: ; %bb.0:2789; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2790; GFX900-NEXT: ;;#ASMSTART2791; GFX900-NEXT: ; def s[8:13]2792; GFX900-NEXT: ;;#ASMEND2793; GFX900-NEXT: ;;#ASMSTART2794; GFX900-NEXT: ; use s[8:11]2795; GFX900-NEXT: ;;#ASMEND2796; GFX900-NEXT: s_setpc_b64 s[30:31]2797;2798; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_1:2799; GFX90A: ; %bb.0:2800; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2801; GFX90A-NEXT: ;;#ASMSTART2802; GFX90A-NEXT: ; def s[8:13]2803; GFX90A-NEXT: ;;#ASMEND2804; GFX90A-NEXT: ;;#ASMSTART2805; GFX90A-NEXT: ; use s[8:11]2806; GFX90A-NEXT: ;;#ASMEND2807; GFX90A-NEXT: s_setpc_b64 s[30:31]2808;2809; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_1:2810; GFX942: ; %bb.0:2811; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2812; GFX942-NEXT: ;;#ASMSTART2813; GFX942-NEXT: ; def s[8:13]2814; GFX942-NEXT: ;;#ASMEND2815; GFX942-NEXT: s_nop 02816; GFX942-NEXT: ;;#ASMSTART2817; GFX942-NEXT: ; use s[8:11]2818; GFX942-NEXT: ;;#ASMEND2819; GFX942-NEXT: s_setpc_b64 s[30:31]2820 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2821 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 1>2822 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2823 ret void2824}2825 2826define void @s_shuffle_v2p0_v3p0__0_1() {2827; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_1:2828; GFX900: ; %bb.0:2829; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2830; GFX900-NEXT: ;;#ASMSTART2831; GFX900-NEXT: ; def s[8:13]2832; GFX900-NEXT: ;;#ASMEND2833; GFX900-NEXT: ;;#ASMSTART2834; GFX900-NEXT: ; use s[8:11]2835; GFX900-NEXT: ;;#ASMEND2836; GFX900-NEXT: s_setpc_b64 s[30:31]2837;2838; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_1:2839; GFX90A: ; %bb.0:2840; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2841; GFX90A-NEXT: ;;#ASMSTART2842; GFX90A-NEXT: ; def s[8:13]2843; GFX90A-NEXT: ;;#ASMEND2844; GFX90A-NEXT: ;;#ASMSTART2845; GFX90A-NEXT: ; use s[8:11]2846; GFX90A-NEXT: ;;#ASMEND2847; GFX90A-NEXT: s_setpc_b64 s[30:31]2848;2849; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_1:2850; GFX942: ; %bb.0:2851; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2852; GFX942-NEXT: ;;#ASMSTART2853; GFX942-NEXT: ; def s[8:13]2854; GFX942-NEXT: ;;#ASMEND2855; GFX942-NEXT: s_nop 02856; GFX942-NEXT: ;;#ASMSTART2857; GFX942-NEXT: ; use s[8:11]2858; GFX942-NEXT: ;;#ASMEND2859; GFX942-NEXT: s_setpc_b64 s[30:31]2860 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2861 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 1>2862 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2863 ret void2864}2865 2866define void @s_shuffle_v2p0_v3p0__1_1() {2867; GFX9-LABEL: s_shuffle_v2p0_v3p0__1_1:2868; GFX9: ; %bb.0:2869; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2870; GFX9-NEXT: ;;#ASMSTART2871; GFX9-NEXT: ; def s[8:13]2872; GFX9-NEXT: ;;#ASMEND2873; GFX9-NEXT: s_mov_b32 s8, s102874; GFX9-NEXT: s_mov_b32 s9, s112875; GFX9-NEXT: ;;#ASMSTART2876; GFX9-NEXT: ; use s[8:11]2877; GFX9-NEXT: ;;#ASMEND2878; GFX9-NEXT: s_setpc_b64 s[30:31]2879 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2880 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 1>2881 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2882 ret void2883}2884 2885define void @s_shuffle_v2p0_v3p0__2_1() {2886; GFX9-LABEL: s_shuffle_v2p0_v3p0__2_1:2887; GFX9: ; %bb.0:2888; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2889; GFX9-NEXT: ;;#ASMSTART2890; GFX9-NEXT: ; def s[4:9]2891; GFX9-NEXT: ;;#ASMEND2892; GFX9-NEXT: s_mov_b32 s10, s62893; GFX9-NEXT: s_mov_b32 s11, s72894; GFX9-NEXT: ;;#ASMSTART2895; GFX9-NEXT: ; use s[8:11]2896; GFX9-NEXT: ;;#ASMEND2897; GFX9-NEXT: s_setpc_b64 s[30:31]2898 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2899 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 1>2900 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2901 ret void2902}2903 2904define void @s_shuffle_v2p0_v3p0__3_1() {2905; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_1:2906; GFX900: ; %bb.0:2907; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2908; GFX900-NEXT: ;;#ASMSTART2909; GFX900-NEXT: ; def s[8:13]2910; GFX900-NEXT: ;;#ASMEND2911; GFX900-NEXT: ;;#ASMSTART2912; GFX900-NEXT: ; use s[8:11]2913; GFX900-NEXT: ;;#ASMEND2914; GFX900-NEXT: s_setpc_b64 s[30:31]2915;2916; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_1:2917; GFX90A: ; %bb.0:2918; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2919; GFX90A-NEXT: ;;#ASMSTART2920; GFX90A-NEXT: ; def s[8:13]2921; GFX90A-NEXT: ;;#ASMEND2922; GFX90A-NEXT: ;;#ASMSTART2923; GFX90A-NEXT: ; use s[8:11]2924; GFX90A-NEXT: ;;#ASMEND2925; GFX90A-NEXT: s_setpc_b64 s[30:31]2926;2927; GFX942-LABEL: s_shuffle_v2p0_v3p0__3_1:2928; GFX942: ; %bb.0:2929; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2930; GFX942-NEXT: ;;#ASMSTART2931; GFX942-NEXT: ; def s[8:13]2932; GFX942-NEXT: ;;#ASMEND2933; GFX942-NEXT: s_nop 02934; GFX942-NEXT: ;;#ASMSTART2935; GFX942-NEXT: ; use s[8:11]2936; GFX942-NEXT: ;;#ASMEND2937; GFX942-NEXT: s_setpc_b64 s[30:31]2938 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2939 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 1>2940 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2941 ret void2942}2943 2944define void @s_shuffle_v2p0_v3p0__4_1() {2945; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_1:2946; GFX900: ; %bb.0:2947; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2948; GFX900-NEXT: ;;#ASMSTART2949; GFX900-NEXT: ; def s[8:13]2950; GFX900-NEXT: ;;#ASMEND2951; GFX900-NEXT: ;;#ASMSTART2952; GFX900-NEXT: ; def s[4:9]2953; GFX900-NEXT: ;;#ASMEND2954; GFX900-NEXT: s_mov_b32 s8, s62955; GFX900-NEXT: s_mov_b32 s9, s72956; GFX900-NEXT: ;;#ASMSTART2957; GFX900-NEXT: ; use s[8:11]2958; GFX900-NEXT: ;;#ASMEND2959; GFX900-NEXT: s_setpc_b64 s[30:31]2960;2961; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_1:2962; GFX90A: ; %bb.0:2963; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2964; GFX90A-NEXT: ;;#ASMSTART2965; GFX90A-NEXT: ; def s[8:13]2966; GFX90A-NEXT: ;;#ASMEND2967; GFX90A-NEXT: ;;#ASMSTART2968; GFX90A-NEXT: ; def s[4:9]2969; GFX90A-NEXT: ;;#ASMEND2970; GFX90A-NEXT: s_mov_b32 s8, s62971; GFX90A-NEXT: s_mov_b32 s9, s72972; GFX90A-NEXT: ;;#ASMSTART2973; GFX90A-NEXT: ; use s[8:11]2974; GFX90A-NEXT: ;;#ASMEND2975; GFX90A-NEXT: s_setpc_b64 s[30:31]2976;2977; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_1:2978; GFX942: ; %bb.0:2979; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2980; GFX942-NEXT: ;;#ASMSTART2981; GFX942-NEXT: ; def s[8:13]2982; GFX942-NEXT: ;;#ASMEND2983; GFX942-NEXT: ;;#ASMSTART2984; GFX942-NEXT: ; def s[0:5]2985; GFX942-NEXT: ;;#ASMEND2986; GFX942-NEXT: s_mov_b32 s8, s22987; GFX942-NEXT: s_mov_b32 s9, s32988; GFX942-NEXT: ;;#ASMSTART2989; GFX942-NEXT: ; use s[8:11]2990; GFX942-NEXT: ;;#ASMEND2991; GFX942-NEXT: s_setpc_b64 s[30:31]2992 %vec0 = call <3 x ptr> asm "; def $0", "=s"()2993 %vec1 = call <3 x ptr> asm "; def $0", "=s"()2994 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 1>2995 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2996 ret void2997}2998 2999define void @s_shuffle_v2p0_v3p0__u_2() {3000; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_2:3001; GFX900: ; %bb.0:3002; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3003; GFX900-NEXT: ;;#ASMSTART3004; GFX900-NEXT: ; def s[4:9]3005; GFX900-NEXT: ;;#ASMEND3006; GFX900-NEXT: s_mov_b32 s10, s83007; GFX900-NEXT: s_mov_b32 s11, s93008; GFX900-NEXT: ;;#ASMSTART3009; GFX900-NEXT: ; use s[8:11]3010; GFX900-NEXT: ;;#ASMEND3011; GFX900-NEXT: s_setpc_b64 s[30:31]3012;3013; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_2:3014; GFX90A: ; %bb.0:3015; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3016; GFX90A-NEXT: ;;#ASMSTART3017; GFX90A-NEXT: ; def s[4:9]3018; GFX90A-NEXT: ;;#ASMEND3019; GFX90A-NEXT: s_mov_b32 s10, s83020; GFX90A-NEXT: s_mov_b32 s11, s93021; GFX90A-NEXT: ;;#ASMSTART3022; GFX90A-NEXT: ; use s[8:11]3023; GFX90A-NEXT: ;;#ASMEND3024; GFX90A-NEXT: s_setpc_b64 s[30:31]3025;3026; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_2:3027; GFX942: ; %bb.0:3028; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3029; GFX942-NEXT: ;;#ASMSTART3030; GFX942-NEXT: ; def s[0:5]3031; GFX942-NEXT: ;;#ASMEND3032; GFX942-NEXT: s_mov_b32 s10, s43033; GFX942-NEXT: s_mov_b32 s11, s53034; GFX942-NEXT: ;;#ASMSTART3035; GFX942-NEXT: ; use s[8:11]3036; GFX942-NEXT: ;;#ASMEND3037; GFX942-NEXT: s_setpc_b64 s[30:31]3038 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3039 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 2>3040 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3041 ret void3042}3043 3044define void @s_shuffle_v2p0_v3p0__0_2() {3045; GFX9-LABEL: s_shuffle_v2p0_v3p0__0_2:3046; GFX9: ; %bb.0:3047; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3048; GFX9-NEXT: ;;#ASMSTART3049; GFX9-NEXT: ; def s[8:13]3050; GFX9-NEXT: ;;#ASMEND3051; GFX9-NEXT: s_mov_b32 s10, s123052; GFX9-NEXT: s_mov_b32 s11, s133053; GFX9-NEXT: ;;#ASMSTART3054; GFX9-NEXT: ; use s[8:11]3055; GFX9-NEXT: ;;#ASMEND3056; GFX9-NEXT: s_setpc_b64 s[30:31]3057 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3058 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 2>3059 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3060 ret void3061}3062 3063define void @s_shuffle_v2p0_v3p0__1_2() {3064; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_2:3065; GFX900: ; %bb.0:3066; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3067; GFX900-NEXT: ;;#ASMSTART3068; GFX900-NEXT: ; def s[8:13]3069; GFX900-NEXT: ;;#ASMEND3070; GFX900-NEXT: s_mov_b32 s8, s103071; GFX900-NEXT: s_mov_b32 s9, s113072; GFX900-NEXT: s_mov_b32 s10, s123073; GFX900-NEXT: s_mov_b32 s11, s133074; GFX900-NEXT: ;;#ASMSTART3075; GFX900-NEXT: ; use s[8:11]3076; GFX900-NEXT: ;;#ASMEND3077; GFX900-NEXT: s_setpc_b64 s[30:31]3078;3079; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_2:3080; GFX90A: ; %bb.0:3081; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3082; GFX90A-NEXT: ;;#ASMSTART3083; GFX90A-NEXT: ; def s[8:13]3084; GFX90A-NEXT: ;;#ASMEND3085; GFX90A-NEXT: s_mov_b32 s8, s103086; GFX90A-NEXT: s_mov_b32 s9, s113087; GFX90A-NEXT: s_mov_b32 s10, s123088; GFX90A-NEXT: s_mov_b32 s11, s133089; GFX90A-NEXT: ;;#ASMSTART3090; GFX90A-NEXT: ; use s[8:11]3091; GFX90A-NEXT: ;;#ASMEND3092; GFX90A-NEXT: s_setpc_b64 s[30:31]3093;3094; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_2:3095; GFX942: ; %bb.0:3096; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3097; GFX942-NEXT: ;;#ASMSTART3098; GFX942-NEXT: ; def s[0:5]3099; GFX942-NEXT: ;;#ASMEND3100; GFX942-NEXT: s_mov_b32 s8, s23101; GFX942-NEXT: s_mov_b32 s9, s33102; GFX942-NEXT: s_mov_b32 s10, s43103; GFX942-NEXT: s_mov_b32 s11, s53104; GFX942-NEXT: ;;#ASMSTART3105; GFX942-NEXT: ; use s[8:11]3106; GFX942-NEXT: ;;#ASMEND3107; GFX942-NEXT: s_setpc_b64 s[30:31]3108 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3109 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 2>3110 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3111 ret void3112}3113 3114define void @s_shuffle_v2p0_v3p0__2_2() {3115; GFX9-LABEL: s_shuffle_v2p0_v3p0__2_2:3116; GFX9: ; %bb.0:3117; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3118; GFX9-NEXT: ;;#ASMSTART3119; GFX9-NEXT: ; def s[4:9]3120; GFX9-NEXT: ;;#ASMEND3121; GFX9-NEXT: s_mov_b32 s10, s83122; GFX9-NEXT: s_mov_b32 s11, s93123; GFX9-NEXT: ;;#ASMSTART3124; GFX9-NEXT: ; use s[8:11]3125; GFX9-NEXT: ;;#ASMEND3126; GFX9-NEXT: s_setpc_b64 s[30:31]3127 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3128 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 2>3129 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3130 ret void3131}3132 3133define void @s_shuffle_v2p0_v3p0__3_2() {3134; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_2:3135; GFX900: ; %bb.0:3136; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3137; GFX900-NEXT: ;;#ASMSTART3138; GFX900-NEXT: ; def s[4:9]3139; GFX900-NEXT: ;;#ASMEND3140; GFX900-NEXT: s_mov_b32 s10, s83141; GFX900-NEXT: s_mov_b32 s11, s93142; GFX900-NEXT: ;;#ASMSTART3143; GFX900-NEXT: ; use s[8:11]3144; GFX900-NEXT: ;;#ASMEND3145; GFX900-NEXT: s_setpc_b64 s[30:31]3146;3147; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_2:3148; GFX90A: ; %bb.0:3149; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3150; GFX90A-NEXT: ;;#ASMSTART3151; GFX90A-NEXT: ; def s[4:9]3152; GFX90A-NEXT: ;;#ASMEND3153; GFX90A-NEXT: s_mov_b32 s10, s83154; GFX90A-NEXT: s_mov_b32 s11, s93155; GFX90A-NEXT: ;;#ASMSTART3156; GFX90A-NEXT: ; use s[8:11]3157; GFX90A-NEXT: ;;#ASMEND3158; GFX90A-NEXT: s_setpc_b64 s[30:31]3159;3160; GFX942-LABEL: s_shuffle_v2p0_v3p0__3_2:3161; GFX942: ; %bb.0:3162; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3163; GFX942-NEXT: ;;#ASMSTART3164; GFX942-NEXT: ; def s[0:5]3165; GFX942-NEXT: ;;#ASMEND3166; GFX942-NEXT: s_mov_b32 s10, s43167; GFX942-NEXT: s_mov_b32 s11, s53168; GFX942-NEXT: ;;#ASMSTART3169; GFX942-NEXT: ; use s[8:11]3170; GFX942-NEXT: ;;#ASMEND3171; GFX942-NEXT: s_setpc_b64 s[30:31]3172 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3173 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 2>3174 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3175 ret void3176}3177 3178define void @s_shuffle_v2p0_v3p0__4_2() {3179; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_2:3180; GFX900: ; %bb.0:3181; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3182; GFX900-NEXT: ;;#ASMSTART3183; GFX900-NEXT: ; def s[8:13]3184; GFX900-NEXT: ;;#ASMEND3185; GFX900-NEXT: ;;#ASMSTART3186; GFX900-NEXT: ; def s[4:9]3187; GFX900-NEXT: ;;#ASMEND3188; GFX900-NEXT: s_mov_b32 s8, s63189; GFX900-NEXT: s_mov_b32 s9, s73190; GFX900-NEXT: s_mov_b32 s10, s123191; GFX900-NEXT: s_mov_b32 s11, s133192; GFX900-NEXT: ;;#ASMSTART3193; GFX900-NEXT: ; use s[8:11]3194; GFX900-NEXT: ;;#ASMEND3195; GFX900-NEXT: s_setpc_b64 s[30:31]3196;3197; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_2:3198; GFX90A: ; %bb.0:3199; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3200; GFX90A-NEXT: ;;#ASMSTART3201; GFX90A-NEXT: ; def s[8:13]3202; GFX90A-NEXT: ;;#ASMEND3203; GFX90A-NEXT: ;;#ASMSTART3204; GFX90A-NEXT: ; def s[4:9]3205; GFX90A-NEXT: ;;#ASMEND3206; GFX90A-NEXT: s_mov_b32 s8, s63207; GFX90A-NEXT: s_mov_b32 s9, s73208; GFX90A-NEXT: s_mov_b32 s10, s123209; GFX90A-NEXT: s_mov_b32 s11, s133210; GFX90A-NEXT: ;;#ASMSTART3211; GFX90A-NEXT: ; use s[8:11]3212; GFX90A-NEXT: ;;#ASMEND3213; GFX90A-NEXT: s_setpc_b64 s[30:31]3214;3215; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_2:3216; GFX942: ; %bb.0:3217; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3218; GFX942-NEXT: ;;#ASMSTART3219; GFX942-NEXT: ; def s[8:13]3220; GFX942-NEXT: ;;#ASMEND3221; GFX942-NEXT: ;;#ASMSTART3222; GFX942-NEXT: ; def s[0:5]3223; GFX942-NEXT: ;;#ASMEND3224; GFX942-NEXT: s_mov_b32 s8, s103225; GFX942-NEXT: s_mov_b32 s9, s113226; GFX942-NEXT: s_mov_b32 s10, s43227; GFX942-NEXT: s_mov_b32 s11, s53228; GFX942-NEXT: ;;#ASMSTART3229; GFX942-NEXT: ; use s[8:11]3230; GFX942-NEXT: ;;#ASMEND3231; GFX942-NEXT: s_setpc_b64 s[30:31]3232 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3233 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3234 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 2>3235 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3236 ret void3237}3238 3239define void @s_shuffle_v2p0_v3p0__u_3() {3240; GFX9-LABEL: s_shuffle_v2p0_v3p0__u_3:3241; GFX9: ; %bb.0:3242; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3243; GFX9-NEXT: ;;#ASMSTART3244; GFX9-NEXT: ; use s[8:11]3245; GFX9-NEXT: ;;#ASMEND3246; GFX9-NEXT: s_setpc_b64 s[30:31]3247 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3248 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 3>3249 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3250 ret void3251}3252 3253define void @s_shuffle_v2p0_v3p0__0_3() {3254; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_3:3255; GFX900: ; %bb.0:3256; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3257; GFX900-NEXT: ;;#ASMSTART3258; GFX900-NEXT: ; def s[8:13]3259; GFX900-NEXT: ;;#ASMEND3260; GFX900-NEXT: ;;#ASMSTART3261; GFX900-NEXT: ; use s[8:11]3262; GFX900-NEXT: ;;#ASMEND3263; GFX900-NEXT: s_setpc_b64 s[30:31]3264;3265; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_3:3266; GFX90A: ; %bb.0:3267; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3268; GFX90A-NEXT: ;;#ASMSTART3269; GFX90A-NEXT: ; def s[8:13]3270; GFX90A-NEXT: ;;#ASMEND3271; GFX90A-NEXT: ;;#ASMSTART3272; GFX90A-NEXT: ; use s[8:11]3273; GFX90A-NEXT: ;;#ASMEND3274; GFX90A-NEXT: s_setpc_b64 s[30:31]3275;3276; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_3:3277; GFX942: ; %bb.0:3278; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3279; GFX942-NEXT: ;;#ASMSTART3280; GFX942-NEXT: ; def s[8:13]3281; GFX942-NEXT: ;;#ASMEND3282; GFX942-NEXT: s_nop 03283; GFX942-NEXT: ;;#ASMSTART3284; GFX942-NEXT: ; use s[8:11]3285; GFX942-NEXT: ;;#ASMEND3286; GFX942-NEXT: s_setpc_b64 s[30:31]3287 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3288 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 3>3289 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3290 ret void3291}3292 3293define void @s_shuffle_v2p0_v3p0__1_3() {3294; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_3:3295; GFX900: ; %bb.0:3296; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3297; GFX900-NEXT: ;;#ASMSTART3298; GFX900-NEXT: ; def s[4:9]3299; GFX900-NEXT: ;;#ASMEND3300; GFX900-NEXT: s_mov_b32 s8, s63301; GFX900-NEXT: s_mov_b32 s9, s73302; GFX900-NEXT: ;;#ASMSTART3303; GFX900-NEXT: ; use s[8:11]3304; GFX900-NEXT: ;;#ASMEND3305; GFX900-NEXT: s_setpc_b64 s[30:31]3306;3307; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_3:3308; GFX90A: ; %bb.0:3309; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3310; GFX90A-NEXT: ;;#ASMSTART3311; GFX90A-NEXT: ; def s[4:9]3312; GFX90A-NEXT: ;;#ASMEND3313; GFX90A-NEXT: s_mov_b32 s8, s63314; GFX90A-NEXT: s_mov_b32 s9, s73315; GFX90A-NEXT: ;;#ASMSTART3316; GFX90A-NEXT: ; use s[8:11]3317; GFX90A-NEXT: ;;#ASMEND3318; GFX90A-NEXT: s_setpc_b64 s[30:31]3319;3320; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_3:3321; GFX942: ; %bb.0:3322; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3323; GFX942-NEXT: ;;#ASMSTART3324; GFX942-NEXT: ; def s[0:5]3325; GFX942-NEXT: ;;#ASMEND3326; GFX942-NEXT: s_mov_b32 s8, s23327; GFX942-NEXT: s_mov_b32 s9, s33328; GFX942-NEXT: ;;#ASMSTART3329; GFX942-NEXT: ; use s[8:11]3330; GFX942-NEXT: ;;#ASMEND3331; GFX942-NEXT: s_setpc_b64 s[30:31]3332 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3333 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 3>3334 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3335 ret void3336}3337 3338define void @s_shuffle_v2p0_v3p0__2_3() {3339; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_3:3340; GFX900: ; %bb.0:3341; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3342; GFX900-NEXT: ;;#ASMSTART3343; GFX900-NEXT: ; def s[4:9]3344; GFX900-NEXT: ;;#ASMEND3345; GFX900-NEXT: ;;#ASMSTART3346; GFX900-NEXT: ; use s[8:11]3347; GFX900-NEXT: ;;#ASMEND3348; GFX900-NEXT: s_setpc_b64 s[30:31]3349;3350; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_3:3351; GFX90A: ; %bb.0:3352; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3353; GFX90A-NEXT: ;;#ASMSTART3354; GFX90A-NEXT: ; def s[4:9]3355; GFX90A-NEXT: ;;#ASMEND3356; GFX90A-NEXT: ;;#ASMSTART3357; GFX90A-NEXT: ; use s[8:11]3358; GFX90A-NEXT: ;;#ASMEND3359; GFX90A-NEXT: s_setpc_b64 s[30:31]3360;3361; GFX942-LABEL: s_shuffle_v2p0_v3p0__2_3:3362; GFX942: ; %bb.0:3363; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3364; GFX942-NEXT: ;;#ASMSTART3365; GFX942-NEXT: ; def s[4:9]3366; GFX942-NEXT: ;;#ASMEND3367; GFX942-NEXT: s_nop 03368; GFX942-NEXT: ;;#ASMSTART3369; GFX942-NEXT: ; use s[8:11]3370; GFX942-NEXT: ;;#ASMEND3371; GFX942-NEXT: s_setpc_b64 s[30:31]3372 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3373 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 3>3374 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3375 ret void3376}3377 3378define void @s_shuffle_v2p0_v3p0__3_3() {3379; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_3:3380; GFX9: ; %bb.0:3381; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3382; GFX9-NEXT: ;;#ASMSTART3383; GFX9-NEXT: ; use s[8:11]3384; GFX9-NEXT: ;;#ASMEND3385; GFX9-NEXT: s_setpc_b64 s[30:31]3386 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3387 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 3>3388 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3389 ret void3390}3391 3392define void @s_shuffle_v2p0_v3p0__4_3() {3393; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_3:3394; GFX900: ; %bb.0:3395; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3396; GFX900-NEXT: ;;#ASMSTART3397; GFX900-NEXT: ; def s[4:9]3398; GFX900-NEXT: ;;#ASMEND3399; GFX900-NEXT: s_mov_b32 s8, s63400; GFX900-NEXT: s_mov_b32 s9, s73401; GFX900-NEXT: s_mov_b32 s10, s43402; GFX900-NEXT: s_mov_b32 s11, s53403; GFX900-NEXT: ;;#ASMSTART3404; GFX900-NEXT: ; use s[8:11]3405; GFX900-NEXT: ;;#ASMEND3406; GFX900-NEXT: s_setpc_b64 s[30:31]3407;3408; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_3:3409; GFX90A: ; %bb.0:3410; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3411; GFX90A-NEXT: ;;#ASMSTART3412; GFX90A-NEXT: ; def s[4:9]3413; GFX90A-NEXT: ;;#ASMEND3414; GFX90A-NEXT: s_mov_b32 s8, s63415; GFX90A-NEXT: s_mov_b32 s9, s73416; GFX90A-NEXT: s_mov_b32 s10, s43417; GFX90A-NEXT: s_mov_b32 s11, s53418; GFX90A-NEXT: ;;#ASMSTART3419; GFX90A-NEXT: ; use s[8:11]3420; GFX90A-NEXT: ;;#ASMEND3421; GFX90A-NEXT: s_setpc_b64 s[30:31]3422;3423; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_3:3424; GFX942: ; %bb.0:3425; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3426; GFX942-NEXT: ;;#ASMSTART3427; GFX942-NEXT: ; def s[0:5]3428; GFX942-NEXT: ;;#ASMEND3429; GFX942-NEXT: s_mov_b32 s8, s23430; GFX942-NEXT: s_mov_b32 s9, s33431; GFX942-NEXT: s_mov_b32 s10, s03432; GFX942-NEXT: s_mov_b32 s11, s13433; GFX942-NEXT: ;;#ASMSTART3434; GFX942-NEXT: ; use s[8:11]3435; GFX942-NEXT: ;;#ASMEND3436; GFX942-NEXT: s_setpc_b64 s[30:31]3437 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3438 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3439 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 3>3440 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3441 ret void3442}3443 3444define void @s_shuffle_v2p0_v3p0__u_4() {3445; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_4:3446; GFX900: ; %bb.0:3447; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3448; GFX900-NEXT: ;;#ASMSTART3449; GFX900-NEXT: ; def s[8:13]3450; GFX900-NEXT: ;;#ASMEND3451; GFX900-NEXT: ;;#ASMSTART3452; GFX900-NEXT: ; use s[8:11]3453; GFX900-NEXT: ;;#ASMEND3454; GFX900-NEXT: s_setpc_b64 s[30:31]3455;3456; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_4:3457; GFX90A: ; %bb.0:3458; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3459; GFX90A-NEXT: ;;#ASMSTART3460; GFX90A-NEXT: ; def s[8:13]3461; GFX90A-NEXT: ;;#ASMEND3462; GFX90A-NEXT: ;;#ASMSTART3463; GFX90A-NEXT: ; use s[8:11]3464; GFX90A-NEXT: ;;#ASMEND3465; GFX90A-NEXT: s_setpc_b64 s[30:31]3466;3467; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_4:3468; GFX942: ; %bb.0:3469; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3470; GFX942-NEXT: ;;#ASMSTART3471; GFX942-NEXT: ; def s[8:13]3472; GFX942-NEXT: ;;#ASMEND3473; GFX942-NEXT: s_nop 03474; GFX942-NEXT: ;;#ASMSTART3475; GFX942-NEXT: ; use s[8:11]3476; GFX942-NEXT: ;;#ASMEND3477; GFX942-NEXT: s_setpc_b64 s[30:31]3478 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3479 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3480 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 4>3481 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3482 ret void3483}3484 3485define void @s_shuffle_v2p0_v3p0__0_4() {3486; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_4:3487; GFX900: ; %bb.0:3488; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3489; GFX900-NEXT: ;;#ASMSTART3490; GFX900-NEXT: ; def s[8:13]3491; GFX900-NEXT: ;;#ASMEND3492; GFX900-NEXT: ;;#ASMSTART3493; GFX900-NEXT: ; def s[12:17]3494; GFX900-NEXT: ;;#ASMEND3495; GFX900-NEXT: s_mov_b32 s10, s143496; GFX900-NEXT: s_mov_b32 s11, s153497; GFX900-NEXT: ;;#ASMSTART3498; GFX900-NEXT: ; use s[8:11]3499; GFX900-NEXT: ;;#ASMEND3500; GFX900-NEXT: s_setpc_b64 s[30:31]3501;3502; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_4:3503; GFX90A: ; %bb.0:3504; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3505; GFX90A-NEXT: ;;#ASMSTART3506; GFX90A-NEXT: ; def s[8:13]3507; GFX90A-NEXT: ;;#ASMEND3508; GFX90A-NEXT: ;;#ASMSTART3509; GFX90A-NEXT: ; def s[12:17]3510; GFX90A-NEXT: ;;#ASMEND3511; GFX90A-NEXT: s_mov_b32 s10, s143512; GFX90A-NEXT: s_mov_b32 s11, s153513; GFX90A-NEXT: ;;#ASMSTART3514; GFX90A-NEXT: ; use s[8:11]3515; GFX90A-NEXT: ;;#ASMEND3516; GFX90A-NEXT: s_setpc_b64 s[30:31]3517;3518; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_4:3519; GFX942: ; %bb.0:3520; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3521; GFX942-NEXT: ;;#ASMSTART3522; GFX942-NEXT: ; def s[8:13]3523; GFX942-NEXT: ;;#ASMEND3524; GFX942-NEXT: ;;#ASMSTART3525; GFX942-NEXT: ; def s[0:5]3526; GFX942-NEXT: ;;#ASMEND3527; GFX942-NEXT: s_mov_b32 s10, s23528; GFX942-NEXT: s_mov_b32 s11, s33529; GFX942-NEXT: ;;#ASMSTART3530; GFX942-NEXT: ; use s[8:11]3531; GFX942-NEXT: ;;#ASMEND3532; GFX942-NEXT: s_setpc_b64 s[30:31]3533 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3534 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3535 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 4>3536 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3537 ret void3538}3539 3540define void @s_shuffle_v2p0_v3p0__1_4() {3541; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_4:3542; GFX900: ; %bb.0:3543; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3544; GFX900-NEXT: ;;#ASMSTART3545; GFX900-NEXT: ; def s[4:9]3546; GFX900-NEXT: ;;#ASMEND3547; GFX900-NEXT: ;;#ASMSTART3548; GFX900-NEXT: ; def s[8:13]3549; GFX900-NEXT: ;;#ASMEND3550; GFX900-NEXT: s_mov_b32 s8, s63551; GFX900-NEXT: s_mov_b32 s9, s73552; GFX900-NEXT: ;;#ASMSTART3553; GFX900-NEXT: ; use s[8:11]3554; GFX900-NEXT: ;;#ASMEND3555; GFX900-NEXT: s_setpc_b64 s[30:31]3556;3557; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_4:3558; GFX90A: ; %bb.0:3559; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3560; GFX90A-NEXT: ;;#ASMSTART3561; GFX90A-NEXT: ; def s[4:9]3562; GFX90A-NEXT: ;;#ASMEND3563; GFX90A-NEXT: ;;#ASMSTART3564; GFX90A-NEXT: ; def s[8:13]3565; GFX90A-NEXT: ;;#ASMEND3566; GFX90A-NEXT: s_mov_b32 s8, s63567; GFX90A-NEXT: s_mov_b32 s9, s73568; GFX90A-NEXT: ;;#ASMSTART3569; GFX90A-NEXT: ; use s[8:11]3570; GFX90A-NEXT: ;;#ASMEND3571; GFX90A-NEXT: s_setpc_b64 s[30:31]3572;3573; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_4:3574; GFX942: ; %bb.0:3575; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3576; GFX942-NEXT: ;;#ASMSTART3577; GFX942-NEXT: ; def s[8:13]3578; GFX942-NEXT: ;;#ASMEND3579; GFX942-NEXT: ;;#ASMSTART3580; GFX942-NEXT: ; def s[0:5]3581; GFX942-NEXT: ;;#ASMEND3582; GFX942-NEXT: s_mov_b32 s8, s23583; GFX942-NEXT: s_mov_b32 s9, s33584; GFX942-NEXT: ;;#ASMSTART3585; GFX942-NEXT: ; use s[8:11]3586; GFX942-NEXT: ;;#ASMEND3587; GFX942-NEXT: s_setpc_b64 s[30:31]3588 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3589 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3590 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 4>3591 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3592 ret void3593}3594 3595define void @s_shuffle_v2p0_v3p0__2_4() {3596; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_4:3597; GFX900: ; %bb.0:3598; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3599; GFX900-NEXT: ;;#ASMSTART3600; GFX900-NEXT: ; def s[4:9]3601; GFX900-NEXT: ;;#ASMEND3602; GFX900-NEXT: ;;#ASMSTART3603; GFX900-NEXT: ; def s[12:17]3604; GFX900-NEXT: ;;#ASMEND3605; GFX900-NEXT: s_mov_b32 s10, s143606; GFX900-NEXT: s_mov_b32 s11, s153607; GFX900-NEXT: ;;#ASMSTART3608; GFX900-NEXT: ; use s[8:11]3609; GFX900-NEXT: ;;#ASMEND3610; GFX900-NEXT: s_setpc_b64 s[30:31]3611;3612; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_4:3613; GFX90A: ; %bb.0:3614; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3615; GFX90A-NEXT: ;;#ASMSTART3616; GFX90A-NEXT: ; def s[4:9]3617; GFX90A-NEXT: ;;#ASMEND3618; GFX90A-NEXT: ;;#ASMSTART3619; GFX90A-NEXT: ; def s[12:17]3620; GFX90A-NEXT: ;;#ASMEND3621; GFX90A-NEXT: s_mov_b32 s10, s143622; GFX90A-NEXT: s_mov_b32 s11, s153623; GFX90A-NEXT: ;;#ASMSTART3624; GFX90A-NEXT: ; use s[8:11]3625; GFX90A-NEXT: ;;#ASMEND3626; GFX90A-NEXT: s_setpc_b64 s[30:31]3627;3628; GFX942-LABEL: s_shuffle_v2p0_v3p0__2_4:3629; GFX942: ; %bb.0:3630; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3631; GFX942-NEXT: ;;#ASMSTART3632; GFX942-NEXT: ; def s[4:9]3633; GFX942-NEXT: ;;#ASMEND3634; GFX942-NEXT: s_nop 03635; GFX942-NEXT: ;;#ASMSTART3636; GFX942-NEXT: ; def s[0:5]3637; GFX942-NEXT: ;;#ASMEND3638; GFX942-NEXT: s_mov_b32 s10, s23639; GFX942-NEXT: s_mov_b32 s11, s33640; GFX942-NEXT: ;;#ASMSTART3641; GFX942-NEXT: ; use s[8:11]3642; GFX942-NEXT: ;;#ASMEND3643; GFX942-NEXT: s_setpc_b64 s[30:31]3644 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3645 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3646 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 4>3647 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3648 ret void3649}3650 3651define void @s_shuffle_v2p0_v3p0__3_4() {3652; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_4:3653; GFX900: ; %bb.0:3654; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3655; GFX900-NEXT: ;;#ASMSTART3656; GFX900-NEXT: ; def s[8:13]3657; GFX900-NEXT: ;;#ASMEND3658; GFX900-NEXT: ;;#ASMSTART3659; GFX900-NEXT: ; use s[8:11]3660; GFX900-NEXT: ;;#ASMEND3661; GFX900-NEXT: s_setpc_b64 s[30:31]3662;3663; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_4:3664; GFX90A: ; %bb.0:3665; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3666; GFX90A-NEXT: ;;#ASMSTART3667; GFX90A-NEXT: ; def s[8:13]3668; GFX90A-NEXT: ;;#ASMEND3669; GFX90A-NEXT: ;;#ASMSTART3670; GFX90A-NEXT: ; use s[8:11]3671; GFX90A-NEXT: ;;#ASMEND3672; GFX90A-NEXT: s_setpc_b64 s[30:31]3673;3674; GFX942-LABEL: s_shuffle_v2p0_v3p0__3_4:3675; GFX942: ; %bb.0:3676; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3677; GFX942-NEXT: ;;#ASMSTART3678; GFX942-NEXT: ; def s[8:13]3679; GFX942-NEXT: ;;#ASMEND3680; GFX942-NEXT: s_nop 03681; GFX942-NEXT: ;;#ASMSTART3682; GFX942-NEXT: ; use s[8:11]3683; GFX942-NEXT: ;;#ASMEND3684; GFX942-NEXT: s_setpc_b64 s[30:31]3685 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3686 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3687 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 4>3688 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3689 ret void3690}3691 3692define void @s_shuffle_v2p0_v3p0__4_4() {3693; GFX9-LABEL: s_shuffle_v2p0_v3p0__4_4:3694; GFX9: ; %bb.0:3695; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3696; GFX9-NEXT: ;;#ASMSTART3697; GFX9-NEXT: ; def s[8:13]3698; GFX9-NEXT: ;;#ASMEND3699; GFX9-NEXT: s_mov_b32 s8, s103700; GFX9-NEXT: s_mov_b32 s9, s113701; GFX9-NEXT: ;;#ASMSTART3702; GFX9-NEXT: ; use s[8:11]3703; GFX9-NEXT: ;;#ASMEND3704; GFX9-NEXT: s_setpc_b64 s[30:31]3705 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3706 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3707 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 4>3708 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3709 ret void3710}3711 3712define void @s_shuffle_v2p0_v3p0__u_5() {3713; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_5:3714; GFX900: ; %bb.0:3715; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3716; GFX900-NEXT: ;;#ASMSTART3717; GFX900-NEXT: ; def s[4:9]3718; GFX900-NEXT: ;;#ASMEND3719; GFX900-NEXT: s_mov_b32 s10, s83720; GFX900-NEXT: s_mov_b32 s11, s93721; GFX900-NEXT: ;;#ASMSTART3722; GFX900-NEXT: ; use s[8:11]3723; GFX900-NEXT: ;;#ASMEND3724; GFX900-NEXT: s_setpc_b64 s[30:31]3725;3726; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_5:3727; GFX90A: ; %bb.0:3728; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3729; GFX90A-NEXT: ;;#ASMSTART3730; GFX90A-NEXT: ; def s[4:9]3731; GFX90A-NEXT: ;;#ASMEND3732; GFX90A-NEXT: s_mov_b32 s10, s83733; GFX90A-NEXT: s_mov_b32 s11, s93734; GFX90A-NEXT: ;;#ASMSTART3735; GFX90A-NEXT: ; use s[8:11]3736; GFX90A-NEXT: ;;#ASMEND3737; GFX90A-NEXT: s_setpc_b64 s[30:31]3738;3739; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_5:3740; GFX942: ; %bb.0:3741; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3742; GFX942-NEXT: ;;#ASMSTART3743; GFX942-NEXT: ; def s[0:5]3744; GFX942-NEXT: ;;#ASMEND3745; GFX942-NEXT: s_mov_b32 s10, s43746; GFX942-NEXT: s_mov_b32 s11, s53747; GFX942-NEXT: ;;#ASMSTART3748; GFX942-NEXT: ; use s[8:11]3749; GFX942-NEXT: ;;#ASMEND3750; GFX942-NEXT: s_setpc_b64 s[30:31]3751 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3752 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3753 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>3754 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3755 ret void3756}3757 3758define void @s_shuffle_v2p0_v3p0__0_5() {3759; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_5:3760; GFX900: ; %bb.0:3761; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3762; GFX900-NEXT: ;;#ASMSTART3763; GFX900-NEXT: ; def s[8:13]3764; GFX900-NEXT: ;;#ASMEND3765; GFX900-NEXT: ;;#ASMSTART3766; GFX900-NEXT: ; def s[12:17]3767; GFX900-NEXT: ;;#ASMEND3768; GFX900-NEXT: s_mov_b32 s10, s163769; GFX900-NEXT: s_mov_b32 s11, s173770; GFX900-NEXT: ;;#ASMSTART3771; GFX900-NEXT: ; use s[8:11]3772; GFX900-NEXT: ;;#ASMEND3773; GFX900-NEXT: s_setpc_b64 s[30:31]3774;3775; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_5:3776; GFX90A: ; %bb.0:3777; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3778; GFX90A-NEXT: ;;#ASMSTART3779; GFX90A-NEXT: ; def s[8:13]3780; GFX90A-NEXT: ;;#ASMEND3781; GFX90A-NEXT: ;;#ASMSTART3782; GFX90A-NEXT: ; def s[12:17]3783; GFX90A-NEXT: ;;#ASMEND3784; GFX90A-NEXT: s_mov_b32 s10, s163785; GFX90A-NEXT: s_mov_b32 s11, s173786; GFX90A-NEXT: ;;#ASMSTART3787; GFX90A-NEXT: ; use s[8:11]3788; GFX90A-NEXT: ;;#ASMEND3789; GFX90A-NEXT: s_setpc_b64 s[30:31]3790;3791; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_5:3792; GFX942: ; %bb.0:3793; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3794; GFX942-NEXT: ;;#ASMSTART3795; GFX942-NEXT: ; def s[8:13]3796; GFX942-NEXT: ;;#ASMEND3797; GFX942-NEXT: ;;#ASMSTART3798; GFX942-NEXT: ; def s[0:5]3799; GFX942-NEXT: ;;#ASMEND3800; GFX942-NEXT: s_mov_b32 s10, s43801; GFX942-NEXT: s_mov_b32 s11, s53802; GFX942-NEXT: ;;#ASMSTART3803; GFX942-NEXT: ; use s[8:11]3804; GFX942-NEXT: ;;#ASMEND3805; GFX942-NEXT: s_setpc_b64 s[30:31]3806 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3807 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3808 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 5>3809 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3810 ret void3811}3812 3813define void @s_shuffle_v2p0_v3p0__1_5() {3814; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_5:3815; GFX900: ; %bb.0:3816; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3817; GFX900-NEXT: ;;#ASMSTART3818; GFX900-NEXT: ; def s[4:9]3819; GFX900-NEXT: ;;#ASMEND3820; GFX900-NEXT: ;;#ASMSTART3821; GFX900-NEXT: ; def s[8:13]3822; GFX900-NEXT: ;;#ASMEND3823; GFX900-NEXT: s_mov_b32 s8, s63824; GFX900-NEXT: s_mov_b32 s9, s73825; GFX900-NEXT: s_mov_b32 s10, s123826; GFX900-NEXT: s_mov_b32 s11, s133827; GFX900-NEXT: ;;#ASMSTART3828; GFX900-NEXT: ; use s[8:11]3829; GFX900-NEXT: ;;#ASMEND3830; GFX900-NEXT: s_setpc_b64 s[30:31]3831;3832; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_5:3833; GFX90A: ; %bb.0:3834; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3835; GFX90A-NEXT: ;;#ASMSTART3836; GFX90A-NEXT: ; def s[4:9]3837; GFX90A-NEXT: ;;#ASMEND3838; GFX90A-NEXT: ;;#ASMSTART3839; GFX90A-NEXT: ; def s[8:13]3840; GFX90A-NEXT: ;;#ASMEND3841; GFX90A-NEXT: s_mov_b32 s8, s63842; GFX90A-NEXT: s_mov_b32 s9, s73843; GFX90A-NEXT: s_mov_b32 s10, s123844; GFX90A-NEXT: s_mov_b32 s11, s133845; GFX90A-NEXT: ;;#ASMSTART3846; GFX90A-NEXT: ; use s[8:11]3847; GFX90A-NEXT: ;;#ASMEND3848; GFX90A-NEXT: s_setpc_b64 s[30:31]3849;3850; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_5:3851; GFX942: ; %bb.0:3852; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3853; GFX942-NEXT: ;;#ASMSTART3854; GFX942-NEXT: ; def s[8:13]3855; GFX942-NEXT: ;;#ASMEND3856; GFX942-NEXT: ;;#ASMSTART3857; GFX942-NEXT: ; def s[0:5]3858; GFX942-NEXT: ;;#ASMEND3859; GFX942-NEXT: s_mov_b32 s8, s23860; GFX942-NEXT: s_mov_b32 s9, s33861; GFX942-NEXT: s_mov_b32 s10, s123862; GFX942-NEXT: s_mov_b32 s11, s133863; GFX942-NEXT: ;;#ASMSTART3864; GFX942-NEXT: ; use s[8:11]3865; GFX942-NEXT: ;;#ASMEND3866; GFX942-NEXT: s_setpc_b64 s[30:31]3867 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3868 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3869 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 5>3870 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3871 ret void3872}3873 3874define void @s_shuffle_v2p0_v3p0__2_5() {3875; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_5:3876; GFX900: ; %bb.0:3877; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3878; GFX900-NEXT: ;;#ASMSTART3879; GFX900-NEXT: ; def s[4:9]3880; GFX900-NEXT: ;;#ASMEND3881; GFX900-NEXT: ;;#ASMSTART3882; GFX900-NEXT: ; def s[12:17]3883; GFX900-NEXT: ;;#ASMEND3884; GFX900-NEXT: s_mov_b32 s10, s163885; GFX900-NEXT: s_mov_b32 s11, s173886; GFX900-NEXT: ;;#ASMSTART3887; GFX900-NEXT: ; use s[8:11]3888; GFX900-NEXT: ;;#ASMEND3889; GFX900-NEXT: s_setpc_b64 s[30:31]3890;3891; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_5:3892; GFX90A: ; %bb.0:3893; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3894; GFX90A-NEXT: ;;#ASMSTART3895; GFX90A-NEXT: ; def s[4:9]3896; GFX90A-NEXT: ;;#ASMEND3897; GFX90A-NEXT: ;;#ASMSTART3898; GFX90A-NEXT: ; def s[12:17]3899; GFX90A-NEXT: ;;#ASMEND3900; GFX90A-NEXT: s_mov_b32 s10, s163901; GFX90A-NEXT: s_mov_b32 s11, s173902; GFX90A-NEXT: ;;#ASMSTART3903; GFX90A-NEXT: ; use s[8:11]3904; GFX90A-NEXT: ;;#ASMEND3905; GFX90A-NEXT: s_setpc_b64 s[30:31]3906;3907; GFX942-LABEL: s_shuffle_v2p0_v3p0__2_5:3908; GFX942: ; %bb.0:3909; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3910; GFX942-NEXT: ;;#ASMSTART3911; GFX942-NEXT: ; def s[4:9]3912; GFX942-NEXT: ;;#ASMEND3913; GFX942-NEXT: s_nop 03914; GFX942-NEXT: ;;#ASMSTART3915; GFX942-NEXT: ; def s[0:5]3916; GFX942-NEXT: ;;#ASMEND3917; GFX942-NEXT: s_mov_b32 s10, s43918; GFX942-NEXT: s_mov_b32 s11, s53919; GFX942-NEXT: ;;#ASMSTART3920; GFX942-NEXT: ; use s[8:11]3921; GFX942-NEXT: ;;#ASMEND3922; GFX942-NEXT: s_setpc_b64 s[30:31]3923 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3924 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3925 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 5>3926 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3927 ret void3928}3929 3930define void @s_shuffle_v2p0_v3p0__3_5() {3931; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_5:3932; GFX9: ; %bb.0:3933; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3934; GFX9-NEXT: ;;#ASMSTART3935; GFX9-NEXT: ; def s[8:13]3936; GFX9-NEXT: ;;#ASMEND3937; GFX9-NEXT: s_mov_b32 s10, s123938; GFX9-NEXT: s_mov_b32 s11, s133939; GFX9-NEXT: ;;#ASMSTART3940; GFX9-NEXT: ; use s[8:11]3941; GFX9-NEXT: ;;#ASMEND3942; GFX9-NEXT: s_setpc_b64 s[30:31]3943 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3944 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3945 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 5>3946 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3947 ret void3948}3949 3950define void @s_shuffle_v2p0_v3p0__4_5() {3951; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_5:3952; GFX900: ; %bb.0:3953; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3954; GFX900-NEXT: ;;#ASMSTART3955; GFX900-NEXT: ; def s[8:13]3956; GFX900-NEXT: ;;#ASMEND3957; GFX900-NEXT: s_mov_b32 s8, s103958; GFX900-NEXT: s_mov_b32 s9, s113959; GFX900-NEXT: s_mov_b32 s10, s123960; GFX900-NEXT: s_mov_b32 s11, s133961; GFX900-NEXT: ;;#ASMSTART3962; GFX900-NEXT: ; use s[8:11]3963; GFX900-NEXT: ;;#ASMEND3964; GFX900-NEXT: s_setpc_b64 s[30:31]3965;3966; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_5:3967; GFX90A: ; %bb.0:3968; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3969; GFX90A-NEXT: ;;#ASMSTART3970; GFX90A-NEXT: ; def s[8:13]3971; GFX90A-NEXT: ;;#ASMEND3972; GFX90A-NEXT: s_mov_b32 s8, s103973; GFX90A-NEXT: s_mov_b32 s9, s113974; GFX90A-NEXT: s_mov_b32 s10, s123975; GFX90A-NEXT: s_mov_b32 s11, s133976; 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_v3p0__4_5:3982; GFX942: ; %bb.0:3983; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3984; GFX942-NEXT: ;;#ASMSTART3985; GFX942-NEXT: ; def s[0:5]3986; GFX942-NEXT: ;;#ASMEND3987; GFX942-NEXT: s_mov_b32 s8, s23988; GFX942-NEXT: s_mov_b32 s9, s33989; GFX942-NEXT: s_mov_b32 s10, s43990; GFX942-NEXT: s_mov_b32 s11, s53991; GFX942-NEXT: ;;#ASMSTART3992; GFX942-NEXT: ; use s[8:11]3993; GFX942-NEXT: ;;#ASMEND3994; GFX942-NEXT: s_setpc_b64 s[30:31]3995 %vec0 = call <3 x ptr> asm "; def $0", "=s"()3996 %vec1 = call <3 x ptr> asm "; def $0", "=s"()3997 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 5>3998 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3999 ret void4000}4001;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4002; GFX90APLUS: {{.*}}4003