brintos

brintos / llvm-project-archived public Read only

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