brintos

brintos / llvm-project-archived public Read only

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