1e1094dd8SFabian Ritter; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2e1094dd8SFabian Ritter 3e1094dd8SFabian Ritter; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 %s -o - | FileCheck %s 4e1094dd8SFabian Ritter 5e1094dd8SFabian Ritter; Testing codegen for memcpy with vector operands for all combinations of the following parameters: 6e1094dd8SFabian Ritter; destination address space: 0, 1, 3, 5 7e1094dd8SFabian Ritter; source address space: 0, 1, 3, 4, 5 8e1094dd8SFabian Ritter; alignment: 1, 2, 8, 16 9e1094dd8SFabian Ritter; sizes: 16, 31, 32 10e1094dd8SFabian Ritter 11e1094dd8SFabian Ritter 12e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 13e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz16_align_1_1: 14e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 15e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 16*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 17*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 18*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 19e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 20e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 21e1094dd8SFabian Ritterentry: 22e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 16, i1 false) 23e1094dd8SFabian Ritter ret void 24e1094dd8SFabian Ritter} 25e1094dd8SFabian Ritter 26e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 27e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz31_align_1_1: 28e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 29e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 30*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 31*173c6823SFabian Ritter; CHECK-NEXT: flat_load_ubyte v9, v[2:3] offset:30 32*173c6823SFabian Ritter; CHECK-NEXT: flat_load_ushort v10, v[2:3] offset:28 33*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx3 v[6:8], v[2:3] offset:16 34*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 35*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) lgkmcnt(3) 36*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v9 offset:30 37*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) lgkmcnt(3) 38*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v10 offset:28 39*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(3) 40*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx3 v[0:1], v[6:8] offset:16 41*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(3) 42*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 43e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 44e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 45e1094dd8SFabian Ritterentry: 46e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 31, i1 false) 47e1094dd8SFabian Ritter ret void 48e1094dd8SFabian Ritter} 49e1094dd8SFabian Ritter 50e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 51e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz32_align_1_1: 52e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 53e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 54*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 55*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:16 56*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 57*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 58*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:16 59*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 60*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 61e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 62e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 63e1094dd8SFabian Ritterentry: 64e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 32, i1 false) 65e1094dd8SFabian Ritter ret void 66e1094dd8SFabian Ritter} 67e1094dd8SFabian Ritter 68e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 69e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz16_align_2_2: 70e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 71e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 72*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 73*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 74*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 75e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 76e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 77e1094dd8SFabian Ritterentry: 78e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 16, i1 false) 79e1094dd8SFabian Ritter ret void 80e1094dd8SFabian Ritter} 81e1094dd8SFabian Ritter 82e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 83e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz31_align_2_2: 84e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 85e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 86*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 87*173c6823SFabian Ritter; CHECK-NEXT: flat_load_ubyte v9, v[2:3] offset:30 88*173c6823SFabian Ritter; CHECK-NEXT: flat_load_ushort v10, v[2:3] offset:28 89*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx3 v[6:8], v[2:3] offset:16 90*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 91*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) lgkmcnt(3) 92*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v9 offset:30 93*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) lgkmcnt(3) 94*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v10 offset:28 95*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(3) 96*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx3 v[0:1], v[6:8] offset:16 97*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(3) 98*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 99e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 100e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 101e1094dd8SFabian Ritterentry: 102e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 31, i1 false) 103e1094dd8SFabian Ritter ret void 104e1094dd8SFabian Ritter} 105e1094dd8SFabian Ritter 106e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 107e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz32_align_2_2: 108e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 109e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 110*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 111*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:16 112*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 113*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 114*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:16 115*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 116*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 117e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 118e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 119e1094dd8SFabian Ritterentry: 120e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 32, i1 false) 121e1094dd8SFabian Ritter ret void 122e1094dd8SFabian Ritter} 123e1094dd8SFabian Ritter 124e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 125e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz16_align_8_8: 126e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 127e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 128e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 129e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 130e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 131e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 132e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 133e1094dd8SFabian Ritterentry: 134e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 16, i1 false) 135e1094dd8SFabian Ritter ret void 136e1094dd8SFabian Ritter} 137e1094dd8SFabian Ritter 138e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 139e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz31_align_8_8: 140e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 141e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 142*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 143*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:15 144*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 145*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 146*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:15 147*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 148*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 149e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 150e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 151e1094dd8SFabian Ritterentry: 152e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 31, i1 false) 153e1094dd8SFabian Ritter ret void 154e1094dd8SFabian Ritter} 155e1094dd8SFabian Ritter 156e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 157e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz32_align_8_8: 158e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 159e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 160e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 161e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:16 162e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 163e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 164e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:16 165e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 166e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 167e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 168e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 169e1094dd8SFabian Ritterentry: 170e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 32, i1 false) 171e1094dd8SFabian Ritter ret void 172e1094dd8SFabian Ritter} 173e1094dd8SFabian Ritter 174e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 175e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz16_align_16_16: 176e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 177e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 178e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 179e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 180e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 181e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 182e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 183e1094dd8SFabian Ritterentry: 184e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 16, i1 false) 185e1094dd8SFabian Ritter ret void 186e1094dd8SFabian Ritter} 187e1094dd8SFabian Ritter 188e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 189e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz31_align_16_16: 190e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 191e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 192*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 193*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:15 194*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 195*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 196*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:15 197*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 198*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 199e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 200e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 201e1094dd8SFabian Ritterentry: 202e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 31, i1 false) 203e1094dd8SFabian Ritter ret void 204e1094dd8SFabian Ritter} 205e1094dd8SFabian Ritter 206e1094dd8SFabian Ritterdefine void @memcpy_p0_p0_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 207e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p0_sz32_align_16_16: 208e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 209e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 210e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 211e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:16 212e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 213e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 214e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:16 215e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 216e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 217e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 218e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 219e1094dd8SFabian Ritterentry: 220e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 32, i1 false) 221e1094dd8SFabian Ritter ret void 222e1094dd8SFabian Ritter} 223e1094dd8SFabian Ritter 224e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 225e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz16_align_1_1: 226e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 227e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 228*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 229e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 230*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 231e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 232e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 233e1094dd8SFabian Ritterentry: 234e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 16, i1 false) 235e1094dd8SFabian Ritter ret void 236e1094dd8SFabian Ritter} 237e1094dd8SFabian Ritter 238e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 239e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz31_align_1_1: 240e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 241e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 242*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 243*173c6823SFabian Ritter; CHECK-NEXT: global_load_ubyte v9, v[2:3], off offset:30 244*173c6823SFabian Ritter; CHECK-NEXT: global_load_ushort v10, v[2:3], off offset:28 245*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx3 v[6:8], v[2:3], off offset:16 246*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 247e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 248*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v9 offset:30 249e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 250*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v10 offset:28 251e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 252*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx3 v[0:1], v[6:8] offset:16 253e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 254*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 255e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 256e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 257e1094dd8SFabian Ritterentry: 258e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 31, i1 false) 259e1094dd8SFabian Ritter ret void 260e1094dd8SFabian Ritter} 261e1094dd8SFabian Ritter 262e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 263e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz32_align_1_1: 264e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 265e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 266*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 267*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:16 268*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 269e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 270*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:16 271e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 272*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 273e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 274e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 275e1094dd8SFabian Ritterentry: 276e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 32, i1 false) 277e1094dd8SFabian Ritter ret void 278e1094dd8SFabian Ritter} 279e1094dd8SFabian Ritter 280e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 281e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz16_align_2_2: 282e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 283e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 284*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 285e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 286*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 287e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 288e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 289e1094dd8SFabian Ritterentry: 290e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 16, i1 false) 291e1094dd8SFabian Ritter ret void 292e1094dd8SFabian Ritter} 293e1094dd8SFabian Ritter 294e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 295e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz31_align_2_2: 296e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 297e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 298*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 299*173c6823SFabian Ritter; CHECK-NEXT: global_load_ubyte v9, v[2:3], off offset:30 300*173c6823SFabian Ritter; CHECK-NEXT: global_load_ushort v10, v[2:3], off offset:28 301*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx3 v[6:8], v[2:3], off offset:16 302*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 303e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 304*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v9 offset:30 305e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 306*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v10 offset:28 307e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 308*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx3 v[0:1], v[6:8] offset:16 309e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 310*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 311e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 312e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 313e1094dd8SFabian Ritterentry: 314e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 31, i1 false) 315e1094dd8SFabian Ritter ret void 316e1094dd8SFabian Ritter} 317e1094dd8SFabian Ritter 318e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 319e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz32_align_2_2: 320e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 321e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 322*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 323*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:16 324*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 325e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 326*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:16 327e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 328*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 329e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 330e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 331e1094dd8SFabian Ritterentry: 332e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 32, i1 false) 333e1094dd8SFabian Ritter ret void 334e1094dd8SFabian Ritter} 335e1094dd8SFabian Ritter 336e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 337e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz16_align_8_8: 338e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 339e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 340e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 341e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 342e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 343e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 344e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 345e1094dd8SFabian Ritterentry: 346e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 16, i1 false) 347e1094dd8SFabian Ritter ret void 348e1094dd8SFabian Ritter} 349e1094dd8SFabian Ritter 350e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 351e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz31_align_8_8: 352e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 353e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 354e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 355*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:15 356*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 357e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 358*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:15 359e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 360*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 361e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 362e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 363e1094dd8SFabian Ritterentry: 364e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 31, i1 false) 365e1094dd8SFabian Ritter ret void 366e1094dd8SFabian Ritter} 367e1094dd8SFabian Ritter 368e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 369e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz32_align_8_8: 370e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 371e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 372e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 373e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:16 374e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 375e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 376e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:16 377e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 378e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 379e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 380e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 381e1094dd8SFabian Ritterentry: 382e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 32, i1 false) 383e1094dd8SFabian Ritter ret void 384e1094dd8SFabian Ritter} 385e1094dd8SFabian Ritter 386e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 387e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz16_align_16_16: 388e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 389e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 390e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 391e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 392e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 393e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 394e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 395e1094dd8SFabian Ritterentry: 396e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 16, i1 false) 397e1094dd8SFabian Ritter ret void 398e1094dd8SFabian Ritter} 399e1094dd8SFabian Ritter 400e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 401e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz31_align_16_16: 402e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 403e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 404e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 405*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:15 406*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 407e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 408*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:15 409e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 410*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 411e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 412e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 413e1094dd8SFabian Ritterentry: 414e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 31, i1 false) 415e1094dd8SFabian Ritter ret void 416e1094dd8SFabian Ritter} 417e1094dd8SFabian Ritter 418e1094dd8SFabian Ritterdefine void @memcpy_p0_p1_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 419e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p1_sz32_align_16_16: 420e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 421e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 422e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 423e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:16 424e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 425e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 426e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] offset:16 427e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 428e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[8:11] 429e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 430e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 431e1094dd8SFabian Ritterentry: 432e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 32, i1 false) 433e1094dd8SFabian Ritter ret void 434e1094dd8SFabian Ritter} 435e1094dd8SFabian Ritter 436e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 437e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz16_align_1_1: 438e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 439e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 440*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v2 offset1:1 441*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 442*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 443e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 444e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 445e1094dd8SFabian Ritterentry: 446e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 16, i1 false) 447e1094dd8SFabian Ritter ret void 448e1094dd8SFabian Ritter} 449e1094dd8SFabian Ritter 450e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 451e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz31_align_1_1: 452e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 453e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 454*173c6823SFabian Ritter; CHECK-NEXT: ds_read_u8 v9, v2 offset:30 455*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b32 v8, v2 offset:24 456*173c6823SFabian Ritter; CHECK-NEXT: ds_read_u16 v10, v2 offset:28 457*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b64 v[6:7], v2 offset:16 458*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v2 offset1:1 459*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(4) 460*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v9 offset:30 461*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(3) 462*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v10 offset:28 463*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(3) 464*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx3 v[0:1], v[6:8] offset:16 465*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(3) 466*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 467e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 468e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 469e1094dd8SFabian Ritterentry: 470e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 31, i1 false) 471e1094dd8SFabian Ritter ret void 472e1094dd8SFabian Ritter} 473e1094dd8SFabian Ritter 474e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 475e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz32_align_1_1: 476e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 477e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 478*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[3:6], v2 offset0:2 offset1:3 479*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[7:10], v2 offset1:1 480*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 481*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] offset:16 482*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 483*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 484e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 485e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 486e1094dd8SFabian Ritterentry: 487e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 32, i1 false) 488e1094dd8SFabian Ritter ret void 489e1094dd8SFabian Ritter} 490e1094dd8SFabian Ritter 491e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 492e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz16_align_2_2: 493e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 494e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 495*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v2 offset1:1 496*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 497*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 498e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 499e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 500e1094dd8SFabian Ritterentry: 501e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 16, i1 false) 502e1094dd8SFabian Ritter ret void 503e1094dd8SFabian Ritter} 504e1094dd8SFabian Ritter 505e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 506e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz31_align_2_2: 507e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 508e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 509*173c6823SFabian Ritter; CHECK-NEXT: ds_read_u8 v9, v2 offset:30 510*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b32 v8, v2 offset:24 511*173c6823SFabian Ritter; CHECK-NEXT: ds_read_u16 v10, v2 offset:28 512*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b64 v[6:7], v2 offset:16 513*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v2 offset1:1 514*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(4) 515*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v9 offset:30 516*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(3) 517*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v10 offset:28 518*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(3) 519*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx3 v[0:1], v[6:8] offset:16 520*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(3) 521*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 522e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 523e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 524e1094dd8SFabian Ritterentry: 525e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 31, i1 false) 526e1094dd8SFabian Ritter ret void 527e1094dd8SFabian Ritter} 528e1094dd8SFabian Ritter 529e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 530e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz32_align_2_2: 531e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 532e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 533*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[3:6], v2 offset0:2 offset1:3 534*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[7:10], v2 offset1:1 535*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 536*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] offset:16 537*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 538*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 539e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 540e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 541e1094dd8SFabian Ritterentry: 542e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 32, i1 false) 543e1094dd8SFabian Ritter ret void 544e1094dd8SFabian Ritter} 545e1094dd8SFabian Ritter 546e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 547e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz16_align_8_8: 548e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 549e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 550e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v2 offset1:1 551e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 552e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 553e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 554e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 555e1094dd8SFabian Ritterentry: 556e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 16, i1 false) 557e1094dd8SFabian Ritter ret void 558e1094dd8SFabian Ritter} 559e1094dd8SFabian Ritter 560e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 561e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz31_align_8_8: 562e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 563e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 564*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b128 v[3:6], v2 offset:15 565*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[7:10], v2 offset1:1 566e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 567*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] offset:15 568e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 569*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 570e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 571e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 572e1094dd8SFabian Ritterentry: 573e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 31, i1 false) 574e1094dd8SFabian Ritter ret void 575e1094dd8SFabian Ritter} 576e1094dd8SFabian Ritter 577e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 578e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz32_align_8_8: 579e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 580e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 581e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[3:6], v2 offset0:2 offset1:3 582e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[7:10], v2 offset1:1 583e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 584e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] offset:16 585e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 586e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 587e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 588e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 589e1094dd8SFabian Ritterentry: 590e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 32, i1 false) 591e1094dd8SFabian Ritter ret void 592e1094dd8SFabian Ritter} 593e1094dd8SFabian Ritter 594e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 595e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz16_align_16_16: 596e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 597e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 598e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[2:5], v2 599e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 600e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 601e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 602e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 603e1094dd8SFabian Ritterentry: 604e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 16, i1 false) 605e1094dd8SFabian Ritter ret void 606e1094dd8SFabian Ritter} 607e1094dd8SFabian Ritter 608e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 609e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz31_align_16_16: 610e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 611e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 612*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b128 v[3:6], v2 offset:15 613*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b128 v[7:10], v2 614e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 615*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] offset:15 616e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 617*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 618e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 619e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 620e1094dd8SFabian Ritterentry: 621e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 31, i1 false) 622e1094dd8SFabian Ritter ret void 623e1094dd8SFabian Ritter} 624e1094dd8SFabian Ritter 625e1094dd8SFabian Ritterdefine void @memcpy_p0_p3_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 626e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p3_sz32_align_16_16: 627e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 628e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 629e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[3:6], v2 offset:16 630e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[7:10], v2 631e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 632e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] offset:16 633e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 634e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 635e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 636e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 637e1094dd8SFabian Ritterentry: 638e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 32, i1 false) 639e1094dd8SFabian Ritter ret void 640e1094dd8SFabian Ritter} 641e1094dd8SFabian Ritter 642e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 643e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz16_align_1_1: 644e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 645e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 646*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off 647e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 648*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] 649*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:8 650*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 651*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[2:3] offset:8 652e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 653e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 654e1094dd8SFabian Ritterentry: 655e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 16, i1 false) 656e1094dd8SFabian Ritter ret void 657e1094dd8SFabian Ritter} 658e1094dd8SFabian Ritter 659e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 660e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz31_align_1_1: 661e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 662e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 663*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off 664e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 665*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] 666*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off offset:8 667e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 668*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] offset:8 669*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off offset:16 670e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 671*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] offset:16 672*173c6823SFabian Ritter; CHECK-NEXT: global_load_dword v4, v[2:3], off offset:24 673e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 674*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dword v[0:1], v4 offset:24 675*173c6823SFabian Ritter; CHECK-NEXT: global_load_ushort v4, v[2:3], off offset:28 676e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 677*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v4 offset:28 678*173c6823SFabian Ritter; CHECK-NEXT: global_load_ubyte v2, v[2:3], off offset:30 679e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 680*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v2 offset:30 681e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 682e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 683e1094dd8SFabian Ritterentry: 684e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 31, i1 false) 685e1094dd8SFabian Ritter ret void 686e1094dd8SFabian Ritter} 687e1094dd8SFabian Ritter 688e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 689e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz32_align_1_1: 690e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 691e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 692*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off 693e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 694*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] 695*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off offset:8 696e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 697*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] offset:8 698*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off offset:16 699*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 700*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] offset:16 701*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:24 702*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 703*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[2:3] offset:24 704e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 705e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 706e1094dd8SFabian Ritterentry: 707e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 32, i1 false) 708e1094dd8SFabian Ritter ret void 709e1094dd8SFabian Ritter} 710e1094dd8SFabian Ritter 711e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 712e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz16_align_2_2: 713e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 714e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 715*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off 716e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 717*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] 718*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:8 719e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 720*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[2:3] offset:8 721e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 722e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 723e1094dd8SFabian Ritterentry: 724e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 16, i1 false) 725e1094dd8SFabian Ritter ret void 726e1094dd8SFabian Ritter} 727e1094dd8SFabian Ritter 728e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 729e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz31_align_2_2: 730e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 731e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 732*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off 733e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 734*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] 735*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off offset:8 736*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 737*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] offset:8 738*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off offset:16 739*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 740*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] offset:16 741*173c6823SFabian Ritter; CHECK-NEXT: global_load_dword v4, v[2:3], off offset:24 742*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 743*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dword v[0:1], v4 offset:24 744*173c6823SFabian Ritter; CHECK-NEXT: global_load_ushort v4, v[2:3], off offset:28 745*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 746*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v4 offset:28 747*173c6823SFabian Ritter; CHECK-NEXT: global_load_ubyte v2, v[2:3], off offset:30 748*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 749*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v2 offset:30 750e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 751e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 752e1094dd8SFabian Ritterentry: 753e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 31, i1 false) 754e1094dd8SFabian Ritter ret void 755e1094dd8SFabian Ritter} 756e1094dd8SFabian Ritter 757e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 758e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz32_align_2_2: 759e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 760e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 761*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off 762e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 763*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] 764*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off offset:8 765*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 766*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] offset:8 767*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[4:5], v[2:3], off offset:16 768*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 769*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[4:5] offset:16 770*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:24 771*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 772*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx2 v[0:1], v[2:3] offset:24 773e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 774e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 775e1094dd8SFabian Ritterentry: 776e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 32, i1 false) 777e1094dd8SFabian Ritter ret void 778e1094dd8SFabian Ritter} 779e1094dd8SFabian Ritter 780e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 781e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz16_align_8_8: 782e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 783e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 784e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 785e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 786e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 787e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 788e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 789e1094dd8SFabian Ritterentry: 790e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 16, i1 false) 791e1094dd8SFabian Ritter ret void 792e1094dd8SFabian Ritter} 793e1094dd8SFabian Ritter 794e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 795e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz31_align_8_8: 796e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 797e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 798e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 799e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 800e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] 801e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off offset:15 802e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 803*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] offset:15 804e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 805e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 806e1094dd8SFabian Ritterentry: 807e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 31, i1 false) 808e1094dd8SFabian Ritter ret void 809e1094dd8SFabian Ritter} 810e1094dd8SFabian Ritter 811e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 812e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz32_align_8_8: 813e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 814e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 815e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 816e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 817e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] 818e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off offset:16 819e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 820e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] offset:16 821e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 822e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 823e1094dd8SFabian Ritterentry: 824e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 32, i1 false) 825e1094dd8SFabian Ritter ret void 826e1094dd8SFabian Ritter} 827e1094dd8SFabian Ritter 828e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 829e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz16_align_16_16: 830e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 831e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 832e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 833e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 834e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] 835e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 836e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 837e1094dd8SFabian Ritterentry: 838e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 16, i1 false) 839e1094dd8SFabian Ritter ret void 840e1094dd8SFabian Ritter} 841e1094dd8SFabian Ritter 842e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 843e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz31_align_16_16: 844e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 845e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 846e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 847e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 848e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] 849e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off offset:15 850e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 851*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] offset:15 852e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 853e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 854e1094dd8SFabian Ritterentry: 855e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 31, i1 false) 856e1094dd8SFabian Ritter ret void 857e1094dd8SFabian Ritter} 858e1094dd8SFabian Ritter 859e1094dd8SFabian Ritterdefine void @memcpy_p0_p4_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 860e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p4_sz32_align_16_16: 861e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 862e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 863e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 864e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 865e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[4:7] 866e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off offset:16 867e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 868e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[2:5] offset:16 869e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 870e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 871e1094dd8SFabian Ritterentry: 872e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 32, i1 false) 873e1094dd8SFabian Ritter ret void 874e1094dd8SFabian Ritter} 875e1094dd8SFabian Ritter 876e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz16_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 877e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz16_align_1_1: 878e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 879e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 880*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 881*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 882*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 883*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 884*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 885e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 886*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 887e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 888e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 889e1094dd8SFabian Ritterentry: 890e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 16, i1 false) 891e1094dd8SFabian Ritter ret void 892e1094dd8SFabian Ritter} 893e1094dd8SFabian Ritter 894e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz31_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 895e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz31_align_1_1: 896e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 897e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 898*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x8 899*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 900*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 901*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:24 902*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_ushort v10, v2, s[0:3], 0 offen offset:28 903*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_ubyte v11, v2, s[0:3], 0 offen offset:30 904*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 905*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 906*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 907*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 908e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 909*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v10 offset:28 910e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 911*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v11 offset:30 912*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx3 v[0:1], v[7:9] offset:16 913e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 914*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 915e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 916e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 917e1094dd8SFabian Ritterentry: 918e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 31, i1 false) 919e1094dd8SFabian Ritter ret void 920e1094dd8SFabian Ritter} 921e1094dd8SFabian Ritter 922e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz32_align_1_1(ptr addrspace(0) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 923e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz32_align_1_1: 924e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 925e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 926*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 927*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen offset:16 928*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:20 929*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:24 930*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:28 931*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen 932*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:4 933*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:8 934*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:12 935e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 936*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] offset:16 937e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 938*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 939e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 940e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 941e1094dd8SFabian Ritterentry: 942e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 32, i1 false) 943e1094dd8SFabian Ritter ret void 944e1094dd8SFabian Ritter} 945e1094dd8SFabian Ritter 946e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz16_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 947e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz16_align_2_2: 948e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 949e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 950*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 951*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 952*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 953*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 954*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 955e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 956*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 957e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 958e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 959e1094dd8SFabian Ritterentry: 960e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 16, i1 false) 961e1094dd8SFabian Ritter ret void 962e1094dd8SFabian Ritter} 963e1094dd8SFabian Ritter 964e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz31_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 965e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz31_align_2_2: 966e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 967e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 968*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x8 969*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 970*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 971*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:24 972*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_ushort v10, v2, s[0:3], 0 offen offset:28 973*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_ubyte v11, v2, s[0:3], 0 offen offset:30 974*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 975*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 976*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 977*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 978e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 979*173c6823SFabian Ritter; CHECK-NEXT: flat_store_short v[0:1], v10 offset:28 980e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 981*173c6823SFabian Ritter; CHECK-NEXT: flat_store_byte v[0:1], v11 offset:30 982*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx3 v[0:1], v[7:9] offset:16 983e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 984*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 985e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 986e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 987e1094dd8SFabian Ritterentry: 988e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 31, i1 false) 989e1094dd8SFabian Ritter ret void 990e1094dd8SFabian Ritter} 991e1094dd8SFabian Ritter 992e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz32_align_2_2(ptr addrspace(0) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 993e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz32_align_2_2: 994e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 995e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 996*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 997*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen offset:16 998*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:20 999*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:24 1000*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:28 1001*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen 1002*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:4 1003*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:8 1004*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:12 1005e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 1006*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] offset:16 1007e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1008*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] 1009e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1010e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1011e1094dd8SFabian Ritterentry: 1012e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 32, i1 false) 1013e1094dd8SFabian Ritter ret void 1014e1094dd8SFabian Ritter} 1015e1094dd8SFabian Ritter 1016e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz16_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 1017e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz16_align_8_8: 1018e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1019e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1020e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x3 1021e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1022e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1023e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1024e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1025e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1026e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 1027e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1028e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1029e1094dd8SFabian Ritterentry: 1030e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 16, i1 false) 1031e1094dd8SFabian Ritter ret void 1032e1094dd8SFabian Ritter} 1033e1094dd8SFabian Ritter 1034e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz31_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 1035e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz31_align_8_8: 1036e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1037e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1038*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 1039e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1040e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1041e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1042e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1043*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:15 1044*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:19 1045*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:23 1046*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:27 1047e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 1048e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 1049*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1050*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] offset:15 1051e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1052e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1053e1094dd8SFabian Ritterentry: 1054e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 31, i1 false) 1055e1094dd8SFabian Ritter ret void 1056e1094dd8SFabian Ritter} 1057e1094dd8SFabian Ritter 1058e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz32_align_8_8(ptr addrspace(0) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 1059e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz32_align_8_8: 1060e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1061e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1062e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x7 1063e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1064e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1065e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1066e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1067e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 1068e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 1069e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:24 1070e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:28 1071e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 1072e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 1073e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1074e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] offset:16 1075e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1076e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1077e1094dd8SFabian Ritterentry: 1078e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 32, i1 false) 1079e1094dd8SFabian Ritter ret void 1080e1094dd8SFabian Ritter} 1081e1094dd8SFabian Ritter 1082e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz16_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 1083e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz16_align_16_16: 1084e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1085e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1086e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x3 1087e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1088e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1089e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1090e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1091e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1092e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 1093e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1094e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1095e1094dd8SFabian Ritterentry: 1096e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 16, i1 false) 1097e1094dd8SFabian Ritter ret void 1098e1094dd8SFabian Ritter} 1099e1094dd8SFabian Ritter 1100e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz31_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 1101e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz31_align_16_16: 1102e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1103e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1104*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 1105e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1106e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1107e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1108e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1109*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:15 1110*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:19 1111*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:23 1112*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:27 1113e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 1114e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 1115*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1116*173c6823SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] offset:15 1117e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1118e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1119e1094dd8SFabian Ritterentry: 1120e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 31, i1 false) 1121e1094dd8SFabian Ritter ret void 1122e1094dd8SFabian Ritter} 1123e1094dd8SFabian Ritter 1124e1094dd8SFabian Ritterdefine void @memcpy_p0_p5_sz32_align_16_16(ptr addrspace(0) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 1125e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p0_p5_sz32_align_16_16: 1126e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1127e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1128e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x7 1129e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1130e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1131e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1132e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1133e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 1134e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 1135e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:24 1136e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:28 1137e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 1138e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[3:6] 1139e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1140e1094dd8SFabian Ritter; CHECK-NEXT: flat_store_dwordx4 v[0:1], v[7:10] offset:16 1141e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1142e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1143e1094dd8SFabian Ritterentry: 1144e1094dd8SFabian Ritter tail call void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 32, i1 false) 1145e1094dd8SFabian Ritter ret void 1146e1094dd8SFabian Ritter} 1147e1094dd8SFabian Ritter 1148e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 1149e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz16_align_1_1: 1150e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1151e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1152*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 1153e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1154e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1155e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1156e1094dd8SFabian Ritterentry: 1157e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 16, i1 false) 1158e1094dd8SFabian Ritter ret void 1159e1094dd8SFabian Ritter} 1160e1094dd8SFabian Ritter 1161e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 1162e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz31_align_1_1: 1163e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1164e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1165*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x2 1166*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx2 v[6:7], v[2:3] offset:23 1167*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx2 v[8:9], v[2:3] offset:16 1168*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 1169e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) lgkmcnt(2) 1170e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[6:7], off offset:23 1171*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 1172e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[8:9], off offset:16 1173*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1174e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1175e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1176e1094dd8SFabian Ritterentry: 1177e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 31, i1 false) 1178e1094dd8SFabian Ritter ret void 1179e1094dd8SFabian Ritter} 1180e1094dd8SFabian Ritter 1181e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 1182e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz32_align_1_1: 1183e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1184e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1185*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 1186*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:16 1187*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 1188*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 1189*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:16 1190e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1191*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1192e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1193e1094dd8SFabian Ritterentry: 1194e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 32, i1 false) 1195e1094dd8SFabian Ritter ret void 1196e1094dd8SFabian Ritter} 1197e1094dd8SFabian Ritter 1198e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 1199e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz16_align_2_2: 1200e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1201e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1202*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 1203e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1204e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1205e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1206e1094dd8SFabian Ritterentry: 1207e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 16, i1 false) 1208e1094dd8SFabian Ritter ret void 1209e1094dd8SFabian Ritter} 1210e1094dd8SFabian Ritter 1211e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 1212e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz31_align_2_2: 1213e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1214e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1215*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x2 1216*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx2 v[6:7], v[2:3] offset:23 1217*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx2 v[8:9], v[2:3] offset:16 1218*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 1219e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) lgkmcnt(2) 1220*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[6:7], off offset:23 1221*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 1222*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[8:9], off offset:16 1223e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1224e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1225e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1226e1094dd8SFabian Ritterentry: 1227e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 31, i1 false) 1228e1094dd8SFabian Ritter ret void 1229e1094dd8SFabian Ritter} 1230e1094dd8SFabian Ritter 1231e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 1232e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz32_align_2_2: 1233e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1234e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1235*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 1236*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:16 1237*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 1238*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 1239*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:16 1240e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1241*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1242e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1243e1094dd8SFabian Ritterentry: 1244e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 32, i1 false) 1245e1094dd8SFabian Ritter ret void 1246e1094dd8SFabian Ritter} 1247e1094dd8SFabian Ritter 1248e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 1249e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz16_align_8_8: 1250e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1251e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1252e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 1253e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1254e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1255e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1256e1094dd8SFabian Ritterentry: 1257e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 16, i1 false) 1258e1094dd8SFabian Ritter ret void 1259e1094dd8SFabian Ritter} 1260e1094dd8SFabian Ritter 1261e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 1262e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz31_align_8_8: 1263e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1264e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1265*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 1266*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:15 1267*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 1268e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 1269*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:15 1270e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1271*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1272e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1273e1094dd8SFabian Ritterentry: 1274e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 31, i1 false) 1275e1094dd8SFabian Ritter ret void 1276e1094dd8SFabian Ritter} 1277e1094dd8SFabian Ritter 1278e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 1279e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz32_align_8_8: 1280e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1281e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1282e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1283e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:16 1284e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 1285e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 1286e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:16 1287e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1288e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1289e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1290e1094dd8SFabian Ritterentry: 1291e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 32, i1 false) 1292e1094dd8SFabian Ritter ret void 1293e1094dd8SFabian Ritter} 1294e1094dd8SFabian Ritter 1295e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 1296e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz16_align_16_16: 1297e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1298e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1299e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[2:5], v[2:3] 1300e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1301e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1302e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1303e1094dd8SFabian Ritterentry: 1304e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 16, i1 false) 1305e1094dd8SFabian Ritter ret void 1306e1094dd8SFabian Ritter} 1307e1094dd8SFabian Ritter 1308e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 1309e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz31_align_16_16: 1310e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1311e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1312*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 1313*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:15 1314*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 1315e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 1316*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:15 1317e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1318*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1319e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1320e1094dd8SFabian Ritterentry: 1321e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 31, i1 false) 1322e1094dd8SFabian Ritter ret void 1323e1094dd8SFabian Ritter} 1324e1094dd8SFabian Ritter 1325e1094dd8SFabian Ritterdefine void @memcpy_p1_p0_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 1326e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p0_sz32_align_16_16: 1327e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1328e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1329e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1330e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[2:3] offset:16 1331e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[8:11], v[2:3] 1332e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 1333e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:16 1334e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 1335e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1336e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1337e1094dd8SFabian Ritterentry: 1338e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 32, i1 false) 1339e1094dd8SFabian Ritter ret void 1340e1094dd8SFabian Ritter} 1341e1094dd8SFabian Ritter 1342e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 1343e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz16_align_1_1: 1344e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1345e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1346e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 1347e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1348e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1349e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1350e1094dd8SFabian Ritterentry: 1351e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 16, i1 false) 1352e1094dd8SFabian Ritter ret void 1353e1094dd8SFabian Ritter} 1354e1094dd8SFabian Ritter 1355e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 1356e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz31_align_1_1: 1357e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1358e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1359e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x2 1360e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[8:9], v[2:3], off offset:23 1361e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 1362e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:16 1363e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 1364e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[8:9], off offset:23 1365e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1366e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off 1367e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1368e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[2:3], off offset:16 1369e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1370e1094dd8SFabian Ritterentry: 1371e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 31, i1 false) 1372e1094dd8SFabian Ritter ret void 1373e1094dd8SFabian Ritter} 1374e1094dd8SFabian Ritter 1375e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 1376e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz32_align_1_1: 1377e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1378e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1379e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1380e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:16 1381e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 1382e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1383e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:16 1384e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1385e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1386e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1387e1094dd8SFabian Ritterentry: 1388e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 32, i1 false) 1389e1094dd8SFabian Ritter ret void 1390e1094dd8SFabian Ritter} 1391e1094dd8SFabian Ritter 1392e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 1393e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz16_align_2_2: 1394e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1395e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1396e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 1397e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1398e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1399e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1400e1094dd8SFabian Ritterentry: 1401e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 16, i1 false) 1402e1094dd8SFabian Ritter ret void 1403e1094dd8SFabian Ritter} 1404e1094dd8SFabian Ritter 1405e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 1406e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz31_align_2_2: 1407e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1408e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1409e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x2 1410e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[8:9], v[2:3], off offset:23 1411e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 1412e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:16 1413e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 1414e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[8:9], off offset:23 1415e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1416e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off 1417e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1418e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[2:3], off offset:16 1419e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1420e1094dd8SFabian Ritterentry: 1421e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 31, i1 false) 1422e1094dd8SFabian Ritter ret void 1423e1094dd8SFabian Ritter} 1424e1094dd8SFabian Ritter 1425e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 1426e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz32_align_2_2: 1427e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1428e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1429e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1430e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:16 1431e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 1432e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1433e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:16 1434e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1435e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1436e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1437e1094dd8SFabian Ritterentry: 1438e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 32, i1 false) 1439e1094dd8SFabian Ritter ret void 1440e1094dd8SFabian Ritter} 1441e1094dd8SFabian Ritter 1442e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 1443e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz16_align_8_8: 1444e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1445e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1446e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 1447e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1448e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1449e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1450e1094dd8SFabian Ritterentry: 1451e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 16, i1 false) 1452e1094dd8SFabian Ritter ret void 1453e1094dd8SFabian Ritter} 1454e1094dd8SFabian Ritter 1455e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 1456e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz31_align_8_8: 1457e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1458e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1459e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1460e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:15 1461e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 1462e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1463e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:15 1464e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1465e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1466e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1467e1094dd8SFabian Ritterentry: 1468e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 31, i1 false) 1469e1094dd8SFabian Ritter ret void 1470e1094dd8SFabian Ritter} 1471e1094dd8SFabian Ritter 1472e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 1473e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz32_align_8_8: 1474e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1475e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1476e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1477e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:16 1478e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 1479e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1480e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:16 1481e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1482e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1483e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1484e1094dd8SFabian Ritterentry: 1485e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 32, i1 false) 1486e1094dd8SFabian Ritter ret void 1487e1094dd8SFabian Ritter} 1488e1094dd8SFabian Ritter 1489e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 1490e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz16_align_16_16: 1491e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1492e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1493e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 1494e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1495e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1496e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1497e1094dd8SFabian Ritterentry: 1498e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 16, i1 false) 1499e1094dd8SFabian Ritter ret void 1500e1094dd8SFabian Ritter} 1501e1094dd8SFabian Ritter 1502e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 1503e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz31_align_16_16: 1504e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1505e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1506e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1507e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:15 1508e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 1509e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1510e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:15 1511e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1512e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1513e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1514e1094dd8SFabian Ritterentry: 1515e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 31, i1 false) 1516e1094dd8SFabian Ritter ret void 1517e1094dd8SFabian Ritter} 1518e1094dd8SFabian Ritter 1519e1094dd8SFabian Ritterdefine void @memcpy_p1_p1_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 1520e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p1_sz32_align_16_16: 1521e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1522e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1523e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1524e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:16 1525e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off 1526e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1527e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:16 1528e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1529e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off 1530e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1531e1094dd8SFabian Ritterentry: 1532e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 32, i1 false) 1533e1094dd8SFabian Ritter ret void 1534e1094dd8SFabian Ritter} 1535e1094dd8SFabian Ritter 1536e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 1537e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz16_align_1_1: 1538e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1539e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1540e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[2:5], v2 1541e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1542e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1543e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1544e1094dd8SFabian Ritterentry: 1545e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 16, i1 false) 1546e1094dd8SFabian Ritter ret void 1547e1094dd8SFabian Ritter} 1548e1094dd8SFabian Ritter 1549e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 1550e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz31_align_1_1: 1551e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1552e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1553e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b64 v[7:8], v2 1554e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[3:6], v2 offset:8 1555e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b64 v[9:10], v2 offset:23 1556e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 1557e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[7:8], off 1558e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 1559e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off offset:8 1560e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1561e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[9:10], off offset:23 1562e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1563e1094dd8SFabian Ritterentry: 1564e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 31, i1 false) 1565e1094dd8SFabian Ritter ret void 1566e1094dd8SFabian Ritter} 1567e1094dd8SFabian Ritter 1568e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 1569e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz32_align_1_1: 1570e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1571e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1572e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[3:6], v2 1573e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[7:10], v2 offset:16 1574e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 1575e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1576e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1577e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:16 1578e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1579e1094dd8SFabian Ritterentry: 1580e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 32, i1 false) 1581e1094dd8SFabian Ritter ret void 1582e1094dd8SFabian Ritter} 1583e1094dd8SFabian Ritter 1584e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 1585e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz16_align_2_2: 1586e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1587e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1588e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[2:5], v2 1589e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1590e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1591e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1592e1094dd8SFabian Ritterentry: 1593e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 16, i1 false) 1594e1094dd8SFabian Ritter ret void 1595e1094dd8SFabian Ritter} 1596e1094dd8SFabian Ritter 1597e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 1598e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz31_align_2_2: 1599e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1600e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1601e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b64 v[7:8], v2 1602e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[3:6], v2 offset:8 1603e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b64 v[9:10], v2 offset:23 1604e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 1605e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[7:8], off 1606e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 1607e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off offset:8 1608e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1609e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[9:10], off offset:23 1610e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1611e1094dd8SFabian Ritterentry: 1612e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 31, i1 false) 1613e1094dd8SFabian Ritter ret void 1614e1094dd8SFabian Ritter} 1615e1094dd8SFabian Ritter 1616e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 1617e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz32_align_2_2: 1618e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1619e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1620e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[3:6], v2 1621e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[7:10], v2 offset:16 1622e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 1623e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1624e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1625e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:16 1626e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1627e1094dd8SFabian Ritterentry: 1628e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 32, i1 false) 1629e1094dd8SFabian Ritter ret void 1630e1094dd8SFabian Ritter} 1631e1094dd8SFabian Ritter 1632e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 1633e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz16_align_8_8: 1634e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1635e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1636e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v2 offset1:1 1637e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1638e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1639e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1640e1094dd8SFabian Ritterentry: 1641e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 16, i1 false) 1642e1094dd8SFabian Ritter ret void 1643e1094dd8SFabian Ritter} 1644e1094dd8SFabian Ritter 1645e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 1646e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz31_align_8_8: 1647e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1648e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1649e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[3:6], v2 offset1:1 1650e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[7:10], v2 offset:15 1651e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 1652e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1653e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1654e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:15 1655e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1656e1094dd8SFabian Ritterentry: 1657e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 31, i1 false) 1658e1094dd8SFabian Ritter ret void 1659e1094dd8SFabian Ritter} 1660e1094dd8SFabian Ritter 1661e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 1662e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz32_align_8_8: 1663e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1664e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1665e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[3:6], v2 offset1:1 1666e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[7:10], v2 offset0:2 offset1:3 1667e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 1668e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1669e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1670e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:16 1671e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1672e1094dd8SFabian Ritterentry: 1673e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 32, i1 false) 1674e1094dd8SFabian Ritter ret void 1675e1094dd8SFabian Ritter} 1676e1094dd8SFabian Ritter 1677e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 1678e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz16_align_16_16: 1679e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1680e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1681e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[2:5], v2 1682e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1683e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1684e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1685e1094dd8SFabian Ritterentry: 1686e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 16, i1 false) 1687e1094dd8SFabian Ritter ret void 1688e1094dd8SFabian Ritter} 1689e1094dd8SFabian Ritter 1690e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 1691e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz31_align_16_16: 1692e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1693e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1694e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[3:6], v2 1695e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[7:10], v2 offset:15 1696e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 1697e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1698e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1699e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:15 1700e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1701e1094dd8SFabian Ritterentry: 1702e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 31, i1 false) 1703e1094dd8SFabian Ritter ret void 1704e1094dd8SFabian Ritter} 1705e1094dd8SFabian Ritter 1706e1094dd8SFabian Ritterdefine void @memcpy_p1_p3_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 1707e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p3_sz32_align_16_16: 1708e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1709e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1710e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[3:6], v2 1711e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[7:10], v2 offset:16 1712e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 1713e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1714e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 1715e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:16 1716e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1717e1094dd8SFabian Ritterentry: 1718e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 32, i1 false) 1719e1094dd8SFabian Ritter ret void 1720e1094dd8SFabian Ritter} 1721e1094dd8SFabian Ritter 1722e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 1723e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz16_align_1_1: 1724e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1725e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1726e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 1727e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1728e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1729e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1730e1094dd8SFabian Ritterentry: 1731e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 16, i1 false) 1732e1094dd8SFabian Ritter ret void 1733e1094dd8SFabian Ritter} 1734e1094dd8SFabian Ritter 1735e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 1736e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz31_align_1_1: 1737e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1738e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1739e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1740e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[8:9], v[2:3], off 1741e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:8 1742e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1743e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[8:9], off 1744e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1745e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:8 1746e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:23 1747e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1748e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[2:3], off offset:23 1749e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1750e1094dd8SFabian Ritterentry: 1751e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 31, i1 false) 1752e1094dd8SFabian Ritter ret void 1753e1094dd8SFabian Ritter} 1754e1094dd8SFabian Ritter 1755e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 1756e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz32_align_1_1: 1757e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1758e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1759e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1760e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 1761e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off offset:16 1762e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1763e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off 1764e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1765e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off offset:16 1766e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1767e1094dd8SFabian Ritterentry: 1768e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 32, i1 false) 1769e1094dd8SFabian Ritter ret void 1770e1094dd8SFabian Ritter} 1771e1094dd8SFabian Ritter 1772e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 1773e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz16_align_2_2: 1774e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1775e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1776e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 1777e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1778e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1779e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1780e1094dd8SFabian Ritterentry: 1781e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 16, i1 false) 1782e1094dd8SFabian Ritter ret void 1783e1094dd8SFabian Ritter} 1784e1094dd8SFabian Ritter 1785e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 1786e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz31_align_2_2: 1787e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1788e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1789e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1790e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[8:9], v[2:3], off 1791e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off offset:8 1792e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1793e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[8:9], off 1794e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1795e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off offset:8 1796e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[2:3], v[2:3], off offset:23 1797e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1798e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[2:3], off offset:23 1799e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1800e1094dd8SFabian Ritterentry: 1801e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 31, i1 false) 1802e1094dd8SFabian Ritter ret void 1803e1094dd8SFabian Ritter} 1804e1094dd8SFabian Ritter 1805e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 1806e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz32_align_2_2: 1807e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1808e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1809e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 1810e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 1811e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[8:11], v[2:3], off offset:16 1812e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 1813e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off 1814e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1815e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[8:11], off offset:16 1816e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1817e1094dd8SFabian Ritterentry: 1818e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 32, i1 false) 1819e1094dd8SFabian Ritter ret void 1820e1094dd8SFabian Ritter} 1821e1094dd8SFabian Ritter 1822e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 1823e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz16_align_8_8: 1824e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1825e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1826e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 1827e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1828e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1829e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1830e1094dd8SFabian Ritterentry: 1831e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 16, i1 false) 1832e1094dd8SFabian Ritter ret void 1833e1094dd8SFabian Ritter} 1834e1094dd8SFabian Ritter 1835e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 1836e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz31_align_8_8: 1837e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1838e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1839e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 1840e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1841e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off 1842e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off offset:15 1843e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1844e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off offset:15 1845e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1846e1094dd8SFabian Ritterentry: 1847e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 31, i1 false) 1848e1094dd8SFabian Ritter ret void 1849e1094dd8SFabian Ritter} 1850e1094dd8SFabian Ritter 1851e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 1852e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz32_align_8_8: 1853e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1854e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1855e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 1856e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1857e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off 1858e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off offset:16 1859e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1860e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off offset:16 1861e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1862e1094dd8SFabian Ritterentry: 1863e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 32, i1 false) 1864e1094dd8SFabian Ritter ret void 1865e1094dd8SFabian Ritter} 1866e1094dd8SFabian Ritter 1867e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 1868e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz16_align_16_16: 1869e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1870e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1871e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off 1872e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1873e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off 1874e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1875e1094dd8SFabian Ritterentry: 1876e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 16, i1 false) 1877e1094dd8SFabian Ritter ret void 1878e1094dd8SFabian Ritter} 1879e1094dd8SFabian Ritter 1880e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 1881e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz31_align_16_16: 1882e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1883e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1884e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 1885e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1886e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off 1887e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off offset:15 1888e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1889e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off offset:15 1890e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1891e1094dd8SFabian Ritterentry: 1892e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 31, i1 false) 1893e1094dd8SFabian Ritter ret void 1894e1094dd8SFabian Ritter} 1895e1094dd8SFabian Ritter 1896e1094dd8SFabian Ritterdefine void @memcpy_p1_p4_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 1897e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p4_sz32_align_16_16: 1898e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1899e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1900e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[4:7], v[2:3], off 1901e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1902e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[4:7], off 1903e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[2:5], v[2:3], off offset:16 1904e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1905e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[2:5], off offset:16 1906e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1907e1094dd8SFabian Ritterentry: 1908e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 32, i1 false) 1909e1094dd8SFabian Ritter ret void 1910e1094dd8SFabian Ritter} 1911e1094dd8SFabian Ritter 1912e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz16_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 1913e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz16_align_1_1: 1914e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1915e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1916*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 1917*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1918*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1919*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1920*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1921e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1922*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1923e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1924e1094dd8SFabian Ritterentry: 1925e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 16, i1 false) 1926e1094dd8SFabian Ritter ret void 1927e1094dd8SFabian Ritter} 1928e1094dd8SFabian Ritter 1929e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz31_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 1930e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz31_align_1_1: 1931e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1932e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1933*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 1934*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1935*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1936*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1937*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1938*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 1939*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 1940*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:23 1941*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:27 1942*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 1943*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1944e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 1945*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[7:8], off offset:16 1946e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1947*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[9:10], off offset:23 1948e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1949e1094dd8SFabian Ritterentry: 1950e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 31, i1 false) 1951e1094dd8SFabian Ritter ret void 1952e1094dd8SFabian Ritter} 1953e1094dd8SFabian Ritter 1954e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz32_align_1_1(ptr addrspace(1) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 1955e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz32_align_1_1: 1956e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1957e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1958*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 1959*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1960*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1961*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1962*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1963*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 1964*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 1965*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:24 1966*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:28 1967e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 1968*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1969e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1970*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:16 1971e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1972e1094dd8SFabian Ritterentry: 1973e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 32, i1 false) 1974e1094dd8SFabian Ritter ret void 1975e1094dd8SFabian Ritter} 1976e1094dd8SFabian Ritter 1977e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz16_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 1978e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz16_align_2_2: 1979e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1980e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1981*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 1982*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 1983*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 1984*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 1985*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 1986e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 1987*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 1988e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 1989e1094dd8SFabian Ritterentry: 1990e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 16, i1 false) 1991e1094dd8SFabian Ritter ret void 1992e1094dd8SFabian Ritter} 1993e1094dd8SFabian Ritter 1994e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz31_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 1995e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz31_align_2_2: 1996e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 1997e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 1998*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 1999*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 2000*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 2001*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 2002*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 2003*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 2004*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 2005*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:23 2006*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:27 2007e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 2008*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 2009e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 2010*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[7:8], off offset:16 2011e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2012*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx2 v[0:1], v[9:10], off offset:23 2013e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2014e1094dd8SFabian Ritterentry: 2015e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 31, i1 false) 2016e1094dd8SFabian Ritter ret void 2017e1094dd8SFabian Ritter} 2018e1094dd8SFabian Ritter 2019e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz32_align_2_2(ptr addrspace(1) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 2020e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz32_align_2_2: 2021e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2022e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2023*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 2024*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 2025*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 2026*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 2027*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 2028*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 2029*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 2030*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:24 2031*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:28 2032e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 2033*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 2034e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2035*173c6823SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:16 2036e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2037e1094dd8SFabian Ritterentry: 2038e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 32, i1 false) 2039e1094dd8SFabian Ritter ret void 2040e1094dd8SFabian Ritter} 2041e1094dd8SFabian Ritter 2042e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz16_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 2043e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz16_align_8_8: 2044e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2045e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2046e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x3 2047e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 2048e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 2049e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 2050e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 2051e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2052e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 2053e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2054e1094dd8SFabian Ritterentry: 2055e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 16, i1 false) 2056e1094dd8SFabian Ritter ret void 2057e1094dd8SFabian Ritter} 2058e1094dd8SFabian Ritter 2059e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz31_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 2060e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz31_align_8_8: 2061e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2062e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2063*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 2064e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 2065e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 2066e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 2067e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 2068*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:15 2069*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:19 2070*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:23 2071*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:27 2072e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 2073e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 2074*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2075e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:15 2076e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2077e1094dd8SFabian Ritterentry: 2078e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 31, i1 false) 2079e1094dd8SFabian Ritter ret void 2080e1094dd8SFabian Ritter} 2081e1094dd8SFabian Ritter 2082e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz32_align_8_8(ptr addrspace(1) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 2083e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz32_align_8_8: 2084e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2085e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2086e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x7 2087e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 2088e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 2089e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 2090e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 2091e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 2092e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 2093e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:24 2094e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:28 2095e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 2096e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 2097e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2098e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:16 2099e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2100e1094dd8SFabian Ritterentry: 2101e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 32, i1 false) 2102e1094dd8SFabian Ritter ret void 2103e1094dd8SFabian Ritter} 2104e1094dd8SFabian Ritter 2105e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz16_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 2106e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz16_align_16_16: 2107e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2108e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2109e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x3 2110e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 2111e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 2112e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 2113e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 2114e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2115e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 2116e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2117e1094dd8SFabian Ritterentry: 2118e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 16, i1 false) 2119e1094dd8SFabian Ritter ret void 2120e1094dd8SFabian Ritter} 2121e1094dd8SFabian Ritter 2122e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz31_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 2123e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz31_align_16_16: 2124e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2125e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2126*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 2127e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 2128e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 2129e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 2130e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 2131*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:15 2132*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:19 2133*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:23 2134*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:27 2135e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 2136e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 2137*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2138e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:15 2139e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2140e1094dd8SFabian Ritterentry: 2141e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 31, i1 false) 2142e1094dd8SFabian Ritter ret void 2143e1094dd8SFabian Ritter} 2144e1094dd8SFabian Ritter 2145e1094dd8SFabian Ritterdefine void @memcpy_p1_p5_sz32_align_16_16(ptr addrspace(1) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 2146e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p1_p5_sz32_align_16_16: 2147e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2148e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2149e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x7 2150e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v2, s[0:3], 0 offen 2151e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v2, s[0:3], 0 offen offset:4 2152e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v2, s[0:3], 0 offen offset:8 2153e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v2, s[0:3], 0 offen offset:12 2154e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v2, s[0:3], 0 offen offset:16 2155e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v2, s[0:3], 0 offen offset:20 2156e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v2, s[0:3], 0 offen offset:24 2157e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v10, v2, s[0:3], 0 offen offset:28 2158e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 2159e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[3:6], off 2160e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2161e1094dd8SFabian Ritter; CHECK-NEXT: global_store_dwordx4 v[0:1], v[7:10], off offset:16 2162e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2163e1094dd8SFabian Ritterentry: 2164e1094dd8SFabian Ritter tail call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 32, i1 false) 2165e1094dd8SFabian Ritter ret void 2166e1094dd8SFabian Ritter} 2167e1094dd8SFabian Ritter 2168e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 2169e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz16_align_1_1: 2170e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2171e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2172*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 2173e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 2174e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2175e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2176e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2177e1094dd8SFabian Ritterentry: 2178e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 16, i1 false) 2179e1094dd8SFabian Ritter ret void 2180e1094dd8SFabian Ritter} 2181e1094dd8SFabian Ritter 2182e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 2183e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz31_align_1_1: 2184e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2185e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2186*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x2 2187*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx2 v[5:6], v[1:2] offset:23 2188*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx2 v[7:8], v[1:2] offset:16 2189*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 2190e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) lgkmcnt(2) 2191*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[5:6] offset:23 2192*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(2) 2193*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[7:8] offset:16 2194*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(2) 2195*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2196e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2197e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2198e1094dd8SFabian Ritterentry: 2199e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 31, i1 false) 2200e1094dd8SFabian Ritter ret void 2201e1094dd8SFabian Ritter} 2202e1094dd8SFabian Ritter 2203e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 2204e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz32_align_1_1: 2205e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2206e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2207*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 2208*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:16 2209*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 2210*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 2211*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset0:2 offset1:3 2212*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 2213*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[7:8], v[9:10] offset1:1 2214e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2215e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2216e1094dd8SFabian Ritterentry: 2217e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 32, i1 false) 2218e1094dd8SFabian Ritter ret void 2219e1094dd8SFabian Ritter} 2220e1094dd8SFabian Ritter 2221e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 2222e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz16_align_2_2: 2223e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2224e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2225*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 2226e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 2227e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2228e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2229e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2230e1094dd8SFabian Ritterentry: 2231e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 16, i1 false) 2232e1094dd8SFabian Ritter ret void 2233e1094dd8SFabian Ritter} 2234e1094dd8SFabian Ritter 2235e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 2236e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz31_align_2_2: 2237e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2238e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2239*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x2 2240*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx2 v[5:6], v[1:2] offset:23 2241*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx2 v[7:8], v[1:2] offset:16 2242*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 2243e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) lgkmcnt(2) 2244*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[5:6] offset:23 2245*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(2) 2246*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[7:8] offset:16 2247*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(2) 2248*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2249e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2250e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2251e1094dd8SFabian Ritterentry: 2252e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 31, i1 false) 2253e1094dd8SFabian Ritter ret void 2254e1094dd8SFabian Ritter} 2255e1094dd8SFabian Ritter 2256e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 2257e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz32_align_2_2: 2258e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2259e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2260*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 2261*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:16 2262*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 2263*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 2264*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset0:2 offset1:3 2265*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 2266*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[7:8], v[9:10] offset1:1 2267e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2268e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2269e1094dd8SFabian Ritterentry: 2270e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 32, i1 false) 2271e1094dd8SFabian Ritter ret void 2272e1094dd8SFabian Ritter} 2273e1094dd8SFabian Ritter 2274e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 2275e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz16_align_8_8: 2276e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2277e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2278e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 2279e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 2280e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2281e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2282e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2283e1094dd8SFabian Ritterentry: 2284e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 16, i1 false) 2285e1094dd8SFabian Ritter ret void 2286e1094dd8SFabian Ritter} 2287e1094dd8SFabian Ritter 2288e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 2289e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz31_align_8_8: 2290e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2291e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2292*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 2293*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] 2294*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] offset:15 2295e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 2296*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2297*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 2298*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[7:10] offset:15 2299e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2300e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2301e1094dd8SFabian Ritterentry: 2302e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 31, i1 false) 2303e1094dd8SFabian Ritter ret void 2304e1094dd8SFabian Ritter} 2305e1094dd8SFabian Ritter 2306e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 2307e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz32_align_8_8: 2308e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2309e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2310e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2311e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:16 2312e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 2313e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 2314e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset0:2 offset1:3 2315e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 2316e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[7:8], v[9:10] offset1:1 2317e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2318e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2319e1094dd8SFabian Ritterentry: 2320e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 32, i1 false) 2321e1094dd8SFabian Ritter ret void 2322e1094dd8SFabian Ritter} 2323e1094dd8SFabian Ritter 2324e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 2325e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz16_align_16_16: 2326e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2327e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2328e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 2329e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 2330e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[1:4] 2331e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2332e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2333e1094dd8SFabian Ritterentry: 2334e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 16, i1 false) 2335e1094dd8SFabian Ritter ret void 2336e1094dd8SFabian Ritter} 2337e1094dd8SFabian Ritter 2338e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 2339e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz31_align_16_16: 2340e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2341e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2342*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 2343*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:15 2344*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 2345e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 2346*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[3:6] offset:15 2347*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 2348*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[7:10] 2349e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2350e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2351e1094dd8SFabian Ritterentry: 2352e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 31, i1 false) 2353e1094dd8SFabian Ritter ret void 2354e1094dd8SFabian Ritter} 2355e1094dd8SFabian Ritter 2356e1094dd8SFabian Ritterdefine void @memcpy_p3_p0_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 2357e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p0_sz32_align_16_16: 2358e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2359e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2360e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2361e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:16 2362e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 2363e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 2364e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[3:6] offset:16 2365e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(1) 2366e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[7:10] 2367e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2368e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2369e1094dd8SFabian Ritterentry: 2370e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 32, i1 false) 2371e1094dd8SFabian Ritter ret void 2372e1094dd8SFabian Ritter} 2373e1094dd8SFabian Ritter 2374e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 2375e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz16_align_1_1: 2376e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2377e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2378e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 2379e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2380e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2381e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2382e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2383e1094dd8SFabian Ritterentry: 2384e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 16, i1 false) 2385e1094dd8SFabian Ritter ret void 2386e1094dd8SFabian Ritter} 2387e1094dd8SFabian Ritter 2388e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 2389e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz31_align_1_1: 2390e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2391e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2392e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x2 2393e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2394e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[7:8], v[1:2], off offset:16 2395e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[1:2], v[1:2], off offset:23 2396e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 2397e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2398e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2399e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[7:8] offset:16 2400e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2401e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[1:2] offset:23 2402e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2403e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2404e1094dd8SFabian Ritterentry: 2405e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 31, i1 false) 2406e1094dd8SFabian Ritter ret void 2407e1094dd8SFabian Ritter} 2408e1094dd8SFabian Ritter 2409e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 2410e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz32_align_1_1: 2411e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2412e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2413e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2414e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2415e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 2416e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2417e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2418e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2419e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:3 2420e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2421e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2422e1094dd8SFabian Ritterentry: 2423e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 32, i1 false) 2424e1094dd8SFabian Ritter ret void 2425e1094dd8SFabian Ritter} 2426e1094dd8SFabian Ritter 2427e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 2428e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz16_align_2_2: 2429e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2430e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2431e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 2432e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2433e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2434e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2435e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2436e1094dd8SFabian Ritterentry: 2437e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 16, i1 false) 2438e1094dd8SFabian Ritter ret void 2439e1094dd8SFabian Ritter} 2440e1094dd8SFabian Ritter 2441e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 2442e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz31_align_2_2: 2443e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2444e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2445e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x2 2446e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2447e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[7:8], v[1:2], off offset:16 2448e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[1:2], v[1:2], off offset:23 2449e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 2450e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2451e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2452e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[7:8] offset:16 2453e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2454e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[1:2] offset:23 2455e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2456e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2457e1094dd8SFabian Ritterentry: 2458e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 31, i1 false) 2459e1094dd8SFabian Ritter ret void 2460e1094dd8SFabian Ritter} 2461e1094dd8SFabian Ritter 2462e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 2463e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz32_align_2_2: 2464e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2465e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2466e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2467e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2468e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 2469e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2470e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2471e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2472e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:3 2473e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2474e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2475e1094dd8SFabian Ritterentry: 2476e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 32, i1 false) 2477e1094dd8SFabian Ritter ret void 2478e1094dd8SFabian Ritter} 2479e1094dd8SFabian Ritter 2480e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 2481e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz16_align_8_8: 2482e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2483e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2484e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 2485e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2486e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2487e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2488e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2489e1094dd8SFabian Ritterentry: 2490e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 16, i1 false) 2491e1094dd8SFabian Ritter ret void 2492e1094dd8SFabian Ritter} 2493e1094dd8SFabian Ritter 2494e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 2495e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz31_align_8_8: 2496e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2497e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2498e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2499e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2500e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:15 2501e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2502e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2503e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2504e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[7:10] offset:15 2505e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2506e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2507e1094dd8SFabian Ritterentry: 2508e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 31, i1 false) 2509e1094dd8SFabian Ritter ret void 2510e1094dd8SFabian Ritter} 2511e1094dd8SFabian Ritter 2512e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 2513e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz32_align_8_8: 2514e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2515e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2516e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2517e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2518e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 2519e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2520e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2521e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2522e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:3 2523e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2524e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2525e1094dd8SFabian Ritterentry: 2526e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 32, i1 false) 2527e1094dd8SFabian Ritter ret void 2528e1094dd8SFabian Ritter} 2529e1094dd8SFabian Ritter 2530e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 2531e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz16_align_16_16: 2532e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2533e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2534e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 2535e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2536e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[1:4] 2537e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2538e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2539e1094dd8SFabian Ritterentry: 2540e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 16, i1 false) 2541e1094dd8SFabian Ritter ret void 2542e1094dd8SFabian Ritter} 2543e1094dd8SFabian Ritter 2544e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 2545e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz31_align_16_16: 2546e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2547e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2548e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2549e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2550e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:15 2551e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2552e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[3:6] 2553e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2554e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[7:10] offset:15 2555e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2556e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2557e1094dd8SFabian Ritterentry: 2558e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 31, i1 false) 2559e1094dd8SFabian Ritter ret void 2560e1094dd8SFabian Ritter} 2561e1094dd8SFabian Ritter 2562e1094dd8SFabian Ritterdefine void @memcpy_p3_p1_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 2563e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p1_sz32_align_16_16: 2564e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2565e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2566e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2567e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2568e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 2569e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2570e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[3:6] 2571e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2572e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[7:10] offset:16 2573e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2574e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2575e1094dd8SFabian Ritterentry: 2576e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 32, i1 false) 2577e1094dd8SFabian Ritter ret void 2578e1094dd8SFabian Ritter} 2579e1094dd8SFabian Ritter 2580e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 2581e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz16_align_1_1: 2582e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2583e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2584e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[1:4], v1 offset1:1 2585e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2586e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2587e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2588e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2589e1094dd8SFabian Ritterentry: 2590e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 16, i1 false) 2591e1094dd8SFabian Ritter ret void 2592e1094dd8SFabian Ritter} 2593e1094dd8SFabian Ritter 2594e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 2595e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz31_align_1_1: 2596e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2597e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2598e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b64 v[5:6], v1 offset:23 2599e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b64 v[7:8], v1 offset:16 2600e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[1:4], v1 offset1:1 2601e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 2602e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[5:6] offset:23 2603e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 2604e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[7:8] offset:16 2605e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 2606e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2607e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2608e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2609e1094dd8SFabian Ritterentry: 2610e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 31, i1 false) 2611e1094dd8SFabian Ritter ret void 2612e1094dd8SFabian Ritter} 2613e1094dd8SFabian Ritter 2614e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 2615e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz32_align_1_1: 2616e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2617e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2618e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset0:2 offset1:3 2619e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[6:9], v1 offset1:1 2620e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2621e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset0:2 offset1:3 2622e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2623e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[6:7], v[8:9] offset1:1 2624e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2625e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2626e1094dd8SFabian Ritterentry: 2627e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 32, i1 false) 2628e1094dd8SFabian Ritter ret void 2629e1094dd8SFabian Ritter} 2630e1094dd8SFabian Ritter 2631e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 2632e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz16_align_2_2: 2633e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2634e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2635e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[1:4], v1 offset1:1 2636e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2637e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2638e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2639e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2640e1094dd8SFabian Ritterentry: 2641e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 16, i1 false) 2642e1094dd8SFabian Ritter ret void 2643e1094dd8SFabian Ritter} 2644e1094dd8SFabian Ritter 2645e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 2646e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz31_align_2_2: 2647e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2648e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2649e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b64 v[5:6], v1 offset:23 2650e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b64 v[7:8], v1 offset:16 2651e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[1:4], v1 offset1:1 2652e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 2653e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[5:6] offset:23 2654e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 2655e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[7:8] offset:16 2656e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 2657e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2658e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2659e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2660e1094dd8SFabian Ritterentry: 2661e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 31, i1 false) 2662e1094dd8SFabian Ritter ret void 2663e1094dd8SFabian Ritter} 2664e1094dd8SFabian Ritter 2665e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 2666e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz32_align_2_2: 2667e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2668e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2669e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset0:2 offset1:3 2670e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[6:9], v1 offset1:1 2671e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2672e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset0:2 offset1:3 2673e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2674e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[6:7], v[8:9] offset1:1 2675e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2676e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2677e1094dd8SFabian Ritterentry: 2678e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 32, i1 false) 2679e1094dd8SFabian Ritter ret void 2680e1094dd8SFabian Ritter} 2681e1094dd8SFabian Ritter 2682e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 2683e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz16_align_8_8: 2684e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2685e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2686e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[1:4], v1 offset1:1 2687e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2688e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2689e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2690e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2691e1094dd8SFabian Ritterentry: 2692e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 16, i1 false) 2693e1094dd8SFabian Ritter ret void 2694e1094dd8SFabian Ritter} 2695e1094dd8SFabian Ritter 2696e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 2697e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz31_align_8_8: 2698e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2699e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2700e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset1:1 2701e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[6:9], v1 offset:15 2702e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2703e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset1:1 2704e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2705e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[6:9] offset:15 2706e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2707e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2708e1094dd8SFabian Ritterentry: 2709e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 31, i1 false) 2710e1094dd8SFabian Ritter ret void 2711e1094dd8SFabian Ritter} 2712e1094dd8SFabian Ritter 2713e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 2714e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz32_align_8_8: 2715e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2716e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2717e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset0:2 offset1:3 2718e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[6:9], v1 offset1:1 2719e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2720e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset0:2 offset1:3 2721e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2722e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[6:7], v[8:9] offset1:1 2723e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2724e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2725e1094dd8SFabian Ritterentry: 2726e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 32, i1 false) 2727e1094dd8SFabian Ritter ret void 2728e1094dd8SFabian Ritter} 2729e1094dd8SFabian Ritter 2730e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 2731e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz16_align_16_16: 2732e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2733e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2734e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[1:4], v1 2735e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2736e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[1:4] 2737e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2738e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2739e1094dd8SFabian Ritterentry: 2740e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 16, i1 false) 2741e1094dd8SFabian Ritter ret void 2742e1094dd8SFabian Ritter} 2743e1094dd8SFabian Ritter 2744e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 2745e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz31_align_16_16: 2746e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2747e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2748e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[2:5], v1 offset:15 2749e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[6:9], v1 2750e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2751e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[2:5] offset:15 2752e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2753e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[6:9] 2754e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2755e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2756e1094dd8SFabian Ritterentry: 2757e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 31, i1 false) 2758e1094dd8SFabian Ritter ret void 2759e1094dd8SFabian Ritter} 2760e1094dd8SFabian Ritter 2761e1094dd8SFabian Ritterdefine void @memcpy_p3_p3_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 2762e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p3_sz32_align_16_16: 2763e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2764e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2765e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[2:5], v1 offset:16 2766e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[6:9], v1 2767e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2768e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[2:5] offset:16 2769e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 2770e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[6:9] 2771e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2772e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2773e1094dd8SFabian Ritterentry: 2774e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 32, i1 false) 2775e1094dd8SFabian Ritter ret void 2776e1094dd8SFabian Ritter} 2777e1094dd8SFabian Ritter 2778e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 2779e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz16_align_1_1: 2780e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2781e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2782e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 2783e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2784e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2785e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2786e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2787e1094dd8SFabian Ritterentry: 2788e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 16, i1 false) 2789e1094dd8SFabian Ritter ret void 2790e1094dd8SFabian Ritter} 2791e1094dd8SFabian Ritter 2792e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 2793e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz31_align_1_1: 2794e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2795e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2796e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x2 2797e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2798e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[7:8], v[1:2], off offset:16 2799e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[1:2], v[1:2], off offset:23 2800e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 2801e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2802e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2803e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[7:8] offset:16 2804e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2805e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[1:2] offset:23 2806e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2807e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2808e1094dd8SFabian Ritterentry: 2809e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 31, i1 false) 2810e1094dd8SFabian Ritter ret void 2811e1094dd8SFabian Ritter} 2812e1094dd8SFabian Ritter 2813e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 2814e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz32_align_1_1: 2815e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2816e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2817e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2818e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2819e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 2820e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2821e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2822e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2823e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:3 2824e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2825e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2826e1094dd8SFabian Ritterentry: 2827e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 32, i1 false) 2828e1094dd8SFabian Ritter ret void 2829e1094dd8SFabian Ritter} 2830e1094dd8SFabian Ritter 2831e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 2832e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz16_align_2_2: 2833e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2834e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2835e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 2836e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2837e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2838e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2839e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2840e1094dd8SFabian Ritterentry: 2841e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 16, i1 false) 2842e1094dd8SFabian Ritter ret void 2843e1094dd8SFabian Ritter} 2844e1094dd8SFabian Ritter 2845e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 2846e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz31_align_2_2: 2847e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2848e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2849e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x2 2850e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2851e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[7:8], v[1:2], off offset:16 2852e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx2 v[1:2], v[1:2], off offset:23 2853e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 2854e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2855e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2856e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[7:8] offset:16 2857e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2858e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[1:2] offset:23 2859e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2860e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2861e1094dd8SFabian Ritterentry: 2862e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 31, i1 false) 2863e1094dd8SFabian Ritter ret void 2864e1094dd8SFabian Ritter} 2865e1094dd8SFabian Ritter 2866e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 2867e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz32_align_2_2: 2868e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2869e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2870e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2871e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2872e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 2873e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2874e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2875e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2876e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:3 2877e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2878e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2879e1094dd8SFabian Ritterentry: 2880e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 32, i1 false) 2881e1094dd8SFabian Ritter ret void 2882e1094dd8SFabian Ritter} 2883e1094dd8SFabian Ritter 2884e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 2885e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz16_align_8_8: 2886e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2887e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2888e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 2889e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2890e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[1:2], v[3:4] offset1:1 2891e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2892e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2893e1094dd8SFabian Ritterentry: 2894e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 16, i1 false) 2895e1094dd8SFabian Ritter ret void 2896e1094dd8SFabian Ritter} 2897e1094dd8SFabian Ritter 2898e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 2899e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz31_align_8_8: 2900e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2901e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2902e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2903e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2904e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:15 2905e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2906e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2907e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2908e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[7:10] offset:15 2909e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2910e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2911e1094dd8SFabian Ritterentry: 2912e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 31, i1 false) 2913e1094dd8SFabian Ritter ret void 2914e1094dd8SFabian Ritter} 2915e1094dd8SFabian Ritter 2916e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 2917e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz32_align_8_8: 2918e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2919e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2920e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2921e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2922e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 2923e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2924e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[3:4], v[5:6] offset1:1 2925e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2926e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[7:8], v[9:10] offset0:2 offset1:3 2927e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2928e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2929e1094dd8SFabian Ritterentry: 2930e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 32, i1 false) 2931e1094dd8SFabian Ritter ret void 2932e1094dd8SFabian Ritter} 2933e1094dd8SFabian Ritter 2934e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 2935e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz16_align_16_16: 2936e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2937e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2938e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 2939e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2940e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[1:4] 2941e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2942e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2943e1094dd8SFabian Ritterentry: 2944e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 16, i1 false) 2945e1094dd8SFabian Ritter ret void 2946e1094dd8SFabian Ritter} 2947e1094dd8SFabian Ritter 2948e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 2949e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz31_align_16_16: 2950e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2951e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2952e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2953e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2954e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:15 2955e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2956e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[3:6] 2957e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2958e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[7:10] offset:15 2959e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2960e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2961e1094dd8SFabian Ritterentry: 2962e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 31, i1 false) 2963e1094dd8SFabian Ritter ret void 2964e1094dd8SFabian Ritter} 2965e1094dd8SFabian Ritter 2966e1094dd8SFabian Ritterdefine void @memcpy_p3_p4_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 2967e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p4_sz32_align_16_16: 2968e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2969e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2970e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 2971e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 2972e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 2973e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 2974e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[3:6] 2975e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2976e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[7:10] offset:16 2977e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2978e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2979e1094dd8SFabian Ritterentry: 2980e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 32, i1 false) 2981e1094dd8SFabian Ritter ret void 2982e1094dd8SFabian Ritter} 2983e1094dd8SFabian Ritter 2984e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz16_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 2985e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz16_align_1_1: 2986e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 2987e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 2988*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 2989*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 2990*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 2991*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 2992*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 2993e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 2994*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset1:1 2995e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 2996e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 2997e1094dd8SFabian Ritterentry: 2998e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 16, i1 false) 2999e1094dd8SFabian Ritter ret void 3000e1094dd8SFabian Ritter} 3001e1094dd8SFabian Ritter 3002e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz31_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 3003e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz31_align_1_1: 3004e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3005e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3006*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 3007*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3008*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3009*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3010*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3011*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:16 3012*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:20 3013*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:23 3014*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:27 3015*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 3016*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset1:1 3017e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 3018*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[6:7] offset:16 3019e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3020*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[8:9] offset:23 3021e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3022e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3023e1094dd8SFabian Ritterentry: 3024e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 31, i1 false) 3025e1094dd8SFabian Ritter ret void 3026e1094dd8SFabian Ritter} 3027e1094dd8SFabian Ritter 3028e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz32_align_1_1(ptr addrspace(3) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 3029e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz32_align_1_1: 3030e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3031e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3032*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 3033*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3034*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3035*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3036*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3037*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:16 3038*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:20 3039*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:24 3040*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:28 3041e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 3042*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset1:1 3043e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3044*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[6:7], v[8:9] offset0:2 offset1:3 3045e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3046e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3047e1094dd8SFabian Ritterentry: 3048e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 32, i1 false) 3049e1094dd8SFabian Ritter ret void 3050e1094dd8SFabian Ritter} 3051e1094dd8SFabian Ritter 3052e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz16_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 3053e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz16_align_2_2: 3054e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3055e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3056*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 3057*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3058*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3059*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3060*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3061e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3062*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset1:1 3063e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3064e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3065e1094dd8SFabian Ritterentry: 3066e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 16, i1 false) 3067e1094dd8SFabian Ritter ret void 3068e1094dd8SFabian Ritter} 3069e1094dd8SFabian Ritter 3070e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz31_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 3071e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz31_align_2_2: 3072e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3073e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3074*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 3075*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3076*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3077*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3078*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3079*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:16 3080*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:20 3081*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:23 3082*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:27 3083e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 3084*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset1:1 3085e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 3086*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[6:7] offset:16 3087e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3088*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b64 v0, v[8:9] offset:23 3089e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3090e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3091e1094dd8SFabian Ritterentry: 3092e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 31, i1 false) 3093e1094dd8SFabian Ritter ret void 3094e1094dd8SFabian Ritter} 3095e1094dd8SFabian Ritter 3096e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz32_align_2_2(ptr addrspace(3) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 3097e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz32_align_2_2: 3098e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3099e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3100*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 3101*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3102*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3103*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3104*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3105*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:16 3106*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:20 3107*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:24 3108*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:28 3109e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 3110*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset1:1 3111e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3112*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[6:7], v[8:9] offset0:2 offset1:3 3113e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3114e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3115e1094dd8SFabian Ritterentry: 3116e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 32, i1 false) 3117e1094dd8SFabian Ritter ret void 3118e1094dd8SFabian Ritter} 3119e1094dd8SFabian Ritter 3120e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz16_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 3121e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz16_align_8_8: 3122e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3123e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3124e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x3 3125e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3126e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3127e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3128e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3129e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3130e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset1:1 3131e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3132e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3133e1094dd8SFabian Ritterentry: 3134e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 16, i1 false) 3135e1094dd8SFabian Ritter ret void 3136e1094dd8SFabian Ritter} 3137e1094dd8SFabian Ritter 3138e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz31_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 3139e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz31_align_8_8: 3140e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3141e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3142*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 3143*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen 3144*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:4 3145*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:8 3146*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:12 3147*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen offset:15 3148*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:19 3149*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:23 3150*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:27 3151e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 3152*173c6823SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[6:7], v[8:9] offset1:1 3153e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3154*173c6823SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[2:5] offset:15 3155e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3156e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3157e1094dd8SFabian Ritterentry: 3158e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 31, i1 false) 3159e1094dd8SFabian Ritter ret void 3160e1094dd8SFabian Ritter} 3161e1094dd8SFabian Ritter 3162e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz32_align_8_8(ptr addrspace(3) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 3163e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz32_align_8_8: 3164e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3165e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3166e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x7 3167e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3168e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3169e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3170e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3171e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:16 3172e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:20 3173e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:24 3174e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:28 3175e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 3176e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[2:3], v[4:5] offset1:1 3177e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3178e1094dd8SFabian Ritter; CHECK-NEXT: ds_write2_b64 v0, v[6:7], v[8:9] offset0:2 offset1:3 3179e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3180e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3181e1094dd8SFabian Ritterentry: 3182e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 32, i1 false) 3183e1094dd8SFabian Ritter ret void 3184e1094dd8SFabian Ritter} 3185e1094dd8SFabian Ritter 3186e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz16_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 3187e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz16_align_16_16: 3188e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3189e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3190e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x3 3191e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3192e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3193e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3194e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3195e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3196e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[2:5] 3197e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3198e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3199e1094dd8SFabian Ritterentry: 3200e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 16, i1 false) 3201e1094dd8SFabian Ritter ret void 3202e1094dd8SFabian Ritter} 3203e1094dd8SFabian Ritter 3204e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz31_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 3205e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz31_align_16_16: 3206e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3207e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3208*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 3209e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3210e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3211e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3212e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3213*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:15 3214*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:19 3215*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:23 3216*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:27 3217e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 3218e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[2:5] 3219*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3220e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[6:9] offset:15 3221e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3222e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3223e1094dd8SFabian Ritterentry: 3224e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 31, i1 false) 3225e1094dd8SFabian Ritter ret void 3226e1094dd8SFabian Ritter} 3227e1094dd8SFabian Ritter 3228e1094dd8SFabian Ritterdefine void @memcpy_p3_p5_sz32_align_16_16(ptr addrspace(3) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 3229e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p3_p5_sz32_align_16_16: 3230e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3231e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3232e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x7 3233e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 3234e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 3235e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 3236e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:12 3237e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:16 3238e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:20 3239e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:24 3240e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:28 3241e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 3242e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[2:5] 3243e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3244e1094dd8SFabian Ritter; CHECK-NEXT: ds_write_b128 v0, v[6:9] offset:16 3245e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3246e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3247e1094dd8SFabian Ritterentry: 3248e1094dd8SFabian Ritter tail call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 32, i1 false) 3249e1094dd8SFabian Ritter ret void 3250e1094dd8SFabian Ritter} 3251e1094dd8SFabian Ritter 3252e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 3253e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz16_align_1_1: 3254e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3255e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3256*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 3257e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3258*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3259*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3260*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3261*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3262e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3263e1094dd8SFabian Ritterentry: 3264e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 16, i1 false) 3265e1094dd8SFabian Ritter ret void 3266e1094dd8SFabian Ritter} 3267e1094dd8SFabian Ritter 3268e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 3269e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz31_align_1_1: 3270e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3271e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3272*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 3273*173c6823SFabian Ritter; CHECK-NEXT: flat_load_ubyte v8, v[1:2] offset:30 3274*173c6823SFabian Ritter; CHECK-NEXT: flat_load_ushort v9, v[1:2] offset:28 3275*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx3 v[5:7], v[1:2] offset:16 3276*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 3277e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) lgkmcnt(3) 3278*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v8, v0, s[0:3], 0 offen offset:30 3279e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) lgkmcnt(2) 3280*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v9, v0, s[0:3], 0 offen offset:28 3281e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 3282*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:24 3283*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:20 3284*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:16 3285e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3286*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3287*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3288*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3289*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3290e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3291e1094dd8SFabian Ritterentry: 3292e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 31, i1 false) 3293e1094dd8SFabian Ritter ret void 3294e1094dd8SFabian Ritter} 3295e1094dd8SFabian Ritter 3296e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(0) align 1 readonly %src) { 3297e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz32_align_1_1: 3298e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3299e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3300*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 3301*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:16 3302*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 3303e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 3304*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:28 3305*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:24 3306*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:20 3307*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:16 3308e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3309*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:12 3310*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:8 3311*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:4 3312*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen 3313e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3314e1094dd8SFabian Ritterentry: 3315e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(0) noundef nonnull align 1 %src, i64 32, i1 false) 3316e1094dd8SFabian Ritter ret void 3317e1094dd8SFabian Ritter} 3318e1094dd8SFabian Ritter 3319e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 3320e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz16_align_2_2: 3321e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3322e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3323*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 3324e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3325*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3326*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3327*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3328*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3329e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3330e1094dd8SFabian Ritterentry: 3331e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 16, i1 false) 3332e1094dd8SFabian Ritter ret void 3333e1094dd8SFabian Ritter} 3334e1094dd8SFabian Ritter 3335e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 3336e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz31_align_2_2: 3337e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3338e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3339*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 3340*173c6823SFabian Ritter; CHECK-NEXT: flat_load_ubyte v8, v[1:2] offset:30 3341*173c6823SFabian Ritter; CHECK-NEXT: flat_load_ushort v9, v[1:2] offset:28 3342*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx3 v[5:7], v[1:2] offset:16 3343*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 3344e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) lgkmcnt(3) 3345*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v8, v0, s[0:3], 0 offen offset:30 3346e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) lgkmcnt(2) 3347*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v9, v0, s[0:3], 0 offen offset:28 3348e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 3349*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:24 3350*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:20 3351*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:16 3352e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3353*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3354*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3355*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3356*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3357e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3358e1094dd8SFabian Ritterentry: 3359e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 31, i1 false) 3360e1094dd8SFabian Ritter ret void 3361e1094dd8SFabian Ritter} 3362e1094dd8SFabian Ritter 3363e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(0) align 2 readonly %src) { 3364e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz32_align_2_2: 3365e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3366e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3367*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 3368*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:16 3369*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 3370e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 3371*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:28 3372*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:24 3373*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:20 3374*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:16 3375e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3376*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:12 3377*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:8 3378*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:4 3379*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen 3380e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3381e1094dd8SFabian Ritterentry: 3382e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(0) noundef nonnull align 2 %src, i64 32, i1 false) 3383e1094dd8SFabian Ritter ret void 3384e1094dd8SFabian Ritter} 3385e1094dd8SFabian Ritter 3386e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 3387e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz16_align_8_8: 3388e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3389e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3390e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 3391e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3392e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3393e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3394e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3395e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3396e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3397e1094dd8SFabian Ritterentry: 3398e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 16, i1 false) 3399e1094dd8SFabian Ritter ret void 3400e1094dd8SFabian Ritter} 3401e1094dd8SFabian Ritter 3402e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 3403e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz31_align_8_8: 3404e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3405e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3406*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 3407*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:15 3408*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 3409e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 3410*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:27 3411*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:23 3412*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:19 3413*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:15 3414e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3415*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:12 3416*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:8 3417*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:4 3418*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen 3419e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3420e1094dd8SFabian Ritterentry: 3421e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 31, i1 false) 3422e1094dd8SFabian Ritter ret void 3423e1094dd8SFabian Ritter} 3424e1094dd8SFabian Ritter 3425e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(0) align 8 readonly %src) { 3426e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz32_align_8_8: 3427e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3428e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3429e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 3430e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:16 3431e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 3432e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 3433e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:28 3434e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:24 3435e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:20 3436e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:16 3437e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3438e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:12 3439e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:8 3440e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:4 3441e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen 3442e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3443e1094dd8SFabian Ritterentry: 3444e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(0) noundef nonnull align 8 %src, i64 32, i1 false) 3445e1094dd8SFabian Ritter ret void 3446e1094dd8SFabian Ritter} 3447e1094dd8SFabian Ritter 3448e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 3449e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz16_align_16_16: 3450e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3451e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3452e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[1:4], v[1:2] 3453e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3454e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3455e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3456e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3457e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3458e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3459e1094dd8SFabian Ritterentry: 3460e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 16, i1 false) 3461e1094dd8SFabian Ritter ret void 3462e1094dd8SFabian Ritter} 3463e1094dd8SFabian Ritter 3464e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 3465e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz31_align_16_16: 3466e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3467e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3468*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 3469*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:15 3470*173c6823SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 3471e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 3472*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:27 3473*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:23 3474*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:19 3475*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:15 3476e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3477*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:12 3478*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:8 3479*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:4 3480*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen 3481e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3482e1094dd8SFabian Ritterentry: 3483e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 31, i1 false) 3484e1094dd8SFabian Ritter ret void 3485e1094dd8SFabian Ritter} 3486e1094dd8SFabian Ritter 3487e1094dd8SFabian Ritterdefine void @memcpy_p5_p0_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(0) align 16 readonly %src) { 3488e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p0_sz32_align_16_16: 3489e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3490e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3491e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 3492e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[3:6], v[1:2] offset:16 3493e1094dd8SFabian Ritter; CHECK-NEXT: flat_load_dwordx4 v[7:10], v[1:2] 3494e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) lgkmcnt(1) 3495e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:28 3496e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:24 3497e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:20 3498e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:16 3499e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0) 3500e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:12 3501e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:8 3502e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:4 3503e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen 3504e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3505e1094dd8SFabian Ritterentry: 3506e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(0) noundef nonnull align 16 %src, i64 32, i1 false) 3507e1094dd8SFabian Ritter ret void 3508e1094dd8SFabian Ritter} 3509e1094dd8SFabian Ritter 3510e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 3511e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz16_align_1_1: 3512e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3513e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3514*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 3515e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3516*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3517*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3518*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3519*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3520e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3521e1094dd8SFabian Ritterentry: 3522e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 16, i1 false) 3523e1094dd8SFabian Ritter ret void 3524e1094dd8SFabian Ritter} 3525e1094dd8SFabian Ritter 3526e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 3527e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz31_align_1_1: 3528e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3529e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3530*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 3531*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx3 v[5:7], v[1:2], off offset:16 3532*173c6823SFabian Ritter; CHECK-NEXT: global_load_ushort v8, v[1:2], off offset:28 3533*173c6823SFabian Ritter; CHECK-NEXT: global_load_ubyte v9, v[1:2], off offset:30 3534*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 3535e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 3536*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:24 3537e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 3538*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v8, v0, s[0:3], 0 offen offset:28 3539e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 3540*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v9, v0, s[0:3], 0 offen offset:30 3541e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3542*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3543*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3544*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3545*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3546*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:20 3547*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:16 3548e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3549e1094dd8SFabian Ritterentry: 3550e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 31, i1 false) 3551e1094dd8SFabian Ritter ret void 3552e1094dd8SFabian Ritter} 3553e1094dd8SFabian Ritter 3554e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(1) align 1 readonly %src) { 3555e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz32_align_1_1: 3556e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3557e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3558*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 3559*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 3560*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 3561e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 3562*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 3563*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 3564*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 3565*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 3566e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3567*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:20 3568*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:16 3569*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:28 3570*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:24 3571e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3572e1094dd8SFabian Ritterentry: 3573e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(1) noundef nonnull align 1 %src, i64 32, i1 false) 3574e1094dd8SFabian Ritter ret void 3575e1094dd8SFabian Ritter} 3576e1094dd8SFabian Ritter 3577e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 3578e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz16_align_2_2: 3579e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3580e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3581*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 3582e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3583*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3584*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3585*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3586*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3587e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3588e1094dd8SFabian Ritterentry: 3589e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 16, i1 false) 3590e1094dd8SFabian Ritter ret void 3591e1094dd8SFabian Ritter} 3592e1094dd8SFabian Ritter 3593e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 3594e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz31_align_2_2: 3595e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3596e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3597*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 3598*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx3 v[5:7], v[1:2], off offset:16 3599*173c6823SFabian Ritter; CHECK-NEXT: global_load_ushort v8, v[1:2], off offset:28 3600*173c6823SFabian Ritter; CHECK-NEXT: global_load_ubyte v9, v[1:2], off offset:30 3601*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 3602e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 3603*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:24 3604e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 3605*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v8, v0, s[0:3], 0 offen offset:28 3606e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 3607*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v9, v0, s[0:3], 0 offen offset:30 3608e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3609*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3610*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3611*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3612*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3613*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:20 3614*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:16 3615e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3616e1094dd8SFabian Ritterentry: 3617e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 31, i1 false) 3618e1094dd8SFabian Ritter ret void 3619e1094dd8SFabian Ritter} 3620e1094dd8SFabian Ritter 3621e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(1) align 2 readonly %src) { 3622e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz32_align_2_2: 3623e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3624e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3625*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 3626*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 3627*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 3628e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 3629*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 3630*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 3631*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 3632*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 3633e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3634*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:20 3635*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:16 3636*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:28 3637*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:24 3638e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3639e1094dd8SFabian Ritterentry: 3640e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(1) noundef nonnull align 2 %src, i64 32, i1 false) 3641e1094dd8SFabian Ritter ret void 3642e1094dd8SFabian Ritter} 3643e1094dd8SFabian Ritter 3644e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 3645e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz16_align_8_8: 3646e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3647e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3648e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 3649e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3650e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3651e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3652e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3653e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3654e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3655e1094dd8SFabian Ritterentry: 3656e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 16, i1 false) 3657e1094dd8SFabian Ritter ret void 3658e1094dd8SFabian Ritter} 3659e1094dd8SFabian Ritter 3660e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 3661e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz31_align_8_8: 3662e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3663e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3664e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 3665e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 3666e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:15 3667e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 3668e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 3669e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 3670e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 3671e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 3672e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3673*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:27 3674*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:23 3675*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:19 3676*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:15 3677e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3678e1094dd8SFabian Ritterentry: 3679e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 31, i1 false) 3680e1094dd8SFabian Ritter ret void 3681e1094dd8SFabian Ritter} 3682e1094dd8SFabian Ritter 3683e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(1) align 8 readonly %src) { 3684e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz32_align_8_8: 3685e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3686e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3687e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 3688e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 3689e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 3690e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 3691e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 3692e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 3693e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 3694e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 3695e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3696e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:28 3697e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:24 3698e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:20 3699e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:16 3700e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3701e1094dd8SFabian Ritterentry: 3702e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(1) noundef nonnull align 8 %src, i64 32, i1 false) 3703e1094dd8SFabian Ritter ret void 3704e1094dd8SFabian Ritter} 3705e1094dd8SFabian Ritter 3706e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 3707e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz16_align_16_16: 3708e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3709e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3710e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 3711e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3712e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3713e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3714e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3715e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3716e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3717e1094dd8SFabian Ritterentry: 3718e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 16, i1 false) 3719e1094dd8SFabian Ritter ret void 3720e1094dd8SFabian Ritter} 3721e1094dd8SFabian Ritter 3722e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 3723e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz31_align_16_16: 3724e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3725e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3726e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 3727e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 3728e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:15 3729e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 3730e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 3731e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 3732e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 3733e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 3734e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3735*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:27 3736*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:23 3737*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:19 3738*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:15 3739e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3740e1094dd8SFabian Ritterentry: 3741e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 31, i1 false) 3742e1094dd8SFabian Ritter ret void 3743e1094dd8SFabian Ritter} 3744e1094dd8SFabian Ritter 3745e1094dd8SFabian Ritterdefine void @memcpy_p5_p1_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(1) align 16 readonly %src) { 3746e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p1_sz32_align_16_16: 3747e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3748e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3749e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 3750e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 3751e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 3752e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 3753e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 3754e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 3755e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 3756e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 3757e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 3758e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:28 3759e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:24 3760e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:20 3761e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:16 3762e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3763e1094dd8SFabian Ritterentry: 3764e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(1) noundef nonnull align 16 %src, i64 32, i1 false) 3765e1094dd8SFabian Ritter ret void 3766e1094dd8SFabian Ritter} 3767e1094dd8SFabian Ritter 3768e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 3769e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz16_align_1_1: 3770e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3771e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3772*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[1:4], v1 offset1:1 3773e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3774*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3775*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3776*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3777*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3778e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3779e1094dd8SFabian Ritterentry: 3780e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 16, i1 false) 3781e1094dd8SFabian Ritter ret void 3782e1094dd8SFabian Ritter} 3783e1094dd8SFabian Ritter 3784e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 3785e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz31_align_1_1: 3786e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3787e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3788*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b32 v8, v1 offset:24 3789*173c6823SFabian Ritter; CHECK-NEXT: ds_read_u16 v9, v1 offset:28 3790*173c6823SFabian Ritter; CHECK-NEXT: ds_read_u8 v10, v1 offset:30 3791*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset1:1 3792*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b64 v[6:7], v1 offset:16 3793*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(4) 3794*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:24 3795*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(3) 3796*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v9, v0, s[0:3], 0 offen offset:28 3797*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 3798*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v10, v0, s[0:3], 0 offen offset:30 3799*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 3800*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 3801*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 3802*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:12 3803*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 3804e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3805*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:20 3806*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:16 3807e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3808e1094dd8SFabian Ritterentry: 3809e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 31, i1 false) 3810e1094dd8SFabian Ritter ret void 3811e1094dd8SFabian Ritter} 3812e1094dd8SFabian Ritter 3813e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(3) align 1 readonly %src) { 3814e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz32_align_1_1: 3815e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3816e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3817*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset1:1 3818*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[6:9], v1 offset0:2 offset1:3 3819*173c6823SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 3820*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 3821*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 3822*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:12 3823*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 3824e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3825*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:20 3826*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:16 3827*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:28 3828*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:24 3829e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3830e1094dd8SFabian Ritterentry: 3831e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(3) noundef nonnull align 1 %src, i64 32, i1 false) 3832e1094dd8SFabian Ritter ret void 3833e1094dd8SFabian Ritter} 3834e1094dd8SFabian Ritter 3835e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 3836e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz16_align_2_2: 3837e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3838e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3839*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[1:4], v1 offset1:1 3840e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3841*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3842*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3843*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3844*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3845e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3846e1094dd8SFabian Ritterentry: 3847e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 16, i1 false) 3848e1094dd8SFabian Ritter ret void 3849e1094dd8SFabian Ritter} 3850e1094dd8SFabian Ritter 3851e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 3852e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz31_align_2_2: 3853e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3854e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3855*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b32 v8, v1 offset:24 3856*173c6823SFabian Ritter; CHECK-NEXT: ds_read_u16 v9, v1 offset:28 3857*173c6823SFabian Ritter; CHECK-NEXT: ds_read_u8 v10, v1 offset:30 3858*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset1:1 3859*173c6823SFabian Ritter; CHECK-NEXT: ds_read_b64 v[6:7], v1 offset:16 3860e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(4) 3861*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:24 3862e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(3) 3863*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v9, v0, s[0:3], 0 offen offset:28 3864e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(2) 3865*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v10, v0, s[0:3], 0 offen offset:30 3866e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 3867*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 3868*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 3869*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:12 3870*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 3871e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3872*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:20 3873*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:16 3874e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3875e1094dd8SFabian Ritterentry: 3876e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 31, i1 false) 3877e1094dd8SFabian Ritter ret void 3878e1094dd8SFabian Ritter} 3879e1094dd8SFabian Ritter 3880e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(3) align 2 readonly %src) { 3881e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz32_align_2_2: 3882e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3883e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3884*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset1:1 3885*173c6823SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[6:9], v1 offset0:2 offset1:3 3886e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 3887*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 3888*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 3889*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:12 3890*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 3891e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3892*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:20 3893*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:16 3894*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:28 3895*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:24 3896e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3897e1094dd8SFabian Ritterentry: 3898e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(3) noundef nonnull align 2 %src, i64 32, i1 false) 3899e1094dd8SFabian Ritter ret void 3900e1094dd8SFabian Ritter} 3901e1094dd8SFabian Ritter 3902e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 3903e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz16_align_8_8: 3904e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3905e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3906e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[1:4], v1 offset1:1 3907e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3908e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3909e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3910e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3911e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3912e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3913e1094dd8SFabian Ritterentry: 3914e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 16, i1 false) 3915e1094dd8SFabian Ritter ret void 3916e1094dd8SFabian Ritter} 3917e1094dd8SFabian Ritter 3918e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 3919e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz31_align_8_8: 3920e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3921e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3922e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset1:1 3923e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[6:9], v1 offset:15 3924e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 3925e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:12 3926e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 3927e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 3928e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 3929e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3930*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:27 3931*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:23 3932*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:19 3933*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:15 3934e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3935e1094dd8SFabian Ritterentry: 3936e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 31, i1 false) 3937e1094dd8SFabian Ritter ret void 3938e1094dd8SFabian Ritter} 3939e1094dd8SFabian Ritter 3940e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(3) align 8 readonly %src) { 3941e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz32_align_8_8: 3942e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3943e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3944e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[2:5], v1 offset1:1 3945e1094dd8SFabian Ritter; CHECK-NEXT: ds_read2_b64 v[6:9], v1 offset0:2 offset1:3 3946e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 3947e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:12 3948e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 3949e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 3950e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 3951e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3952e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:28 3953e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:24 3954e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:20 3955e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:16 3956e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3957e1094dd8SFabian Ritterentry: 3958e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(3) noundef nonnull align 8 %src, i64 32, i1 false) 3959e1094dd8SFabian Ritter ret void 3960e1094dd8SFabian Ritter} 3961e1094dd8SFabian Ritter 3962e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 3963e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz16_align_16_16: 3964e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3965e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3966e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[1:4], v1 3967e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3968e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 3969e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 3970e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 3971e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 3972e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3973e1094dd8SFabian Ritterentry: 3974e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 16, i1 false) 3975e1094dd8SFabian Ritter ret void 3976e1094dd8SFabian Ritter} 3977e1094dd8SFabian Ritter 3978e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 3979e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz31_align_16_16: 3980e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 3981e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 3982e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[2:5], v1 3983e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[6:9], v1 offset:15 3984e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 3985e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:12 3986e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 3987e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 3988e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 3989e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 3990*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:27 3991*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:23 3992*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:19 3993*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:15 3994e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 3995e1094dd8SFabian Ritterentry: 3996e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 31, i1 false) 3997e1094dd8SFabian Ritter ret void 3998e1094dd8SFabian Ritter} 3999e1094dd8SFabian Ritter 4000e1094dd8SFabian Ritterdefine void @memcpy_p5_p3_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(3) align 16 readonly %src) { 4001e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p3_sz32_align_16_16: 4002e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4003e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4004e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[2:5], v1 4005e1094dd8SFabian Ritter; CHECK-NEXT: ds_read_b128 v[6:9], v1 offset:16 4006e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(1) 4007e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:12 4008e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 4009e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 4010e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 4011e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt lgkmcnt(0) 4012e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:28 4013e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:24 4014e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:20 4015e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:16 4016e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4017e1094dd8SFabian Ritterentry: 4018e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(3) noundef nonnull align 16 %src, i64 32, i1 false) 4019e1094dd8SFabian Ritter ret void 4020e1094dd8SFabian Ritter} 4021e1094dd8SFabian Ritter 4022e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 4023e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz16_align_1_1: 4024e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4025e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4026*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 4027e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4028*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 4029*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 4030*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 4031*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 4032e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4033e1094dd8SFabian Ritterentry: 4034e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 16, i1 false) 4035e1094dd8SFabian Ritter ret void 4036e1094dd8SFabian Ritter} 4037e1094dd8SFabian Ritter 4038e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 4039e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz31_align_1_1: 4040e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4041e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4042*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 4043*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx3 v[5:7], v[1:2], off offset:16 4044*173c6823SFabian Ritter; CHECK-NEXT: global_load_ushort v8, v[1:2], off offset:28 4045*173c6823SFabian Ritter; CHECK-NEXT: global_load_ubyte v9, v[1:2], off offset:30 4046*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 4047e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4048*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:24 4049e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4050*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v8, v0, s[0:3], 0 offen offset:28 4051e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4052*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v9, v0, s[0:3], 0 offen offset:30 4053e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4054*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 4055*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 4056*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 4057*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 4058*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:20 4059*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:16 4060e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4061e1094dd8SFabian Ritterentry: 4062e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 31, i1 false) 4063e1094dd8SFabian Ritter ret void 4064e1094dd8SFabian Ritter} 4065e1094dd8SFabian Ritter 4066e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(4) align 1 readonly %src) { 4067e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz32_align_1_1: 4068e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4069e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4070*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 4071*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 4072*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 4073e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4074*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 4075*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 4076*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 4077*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 4078e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4079*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:20 4080*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:16 4081*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:28 4082*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:24 4083e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4084e1094dd8SFabian Ritterentry: 4085e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(4) noundef nonnull align 1 %src, i64 32, i1 false) 4086e1094dd8SFabian Ritter ret void 4087e1094dd8SFabian Ritter} 4088e1094dd8SFabian Ritter 4089e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 4090e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz16_align_2_2: 4091e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4092e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4093*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 4094e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4095*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 4096*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 4097*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 4098*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 4099e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4100e1094dd8SFabian Ritterentry: 4101e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 16, i1 false) 4102e1094dd8SFabian Ritter ret void 4103e1094dd8SFabian Ritter} 4104e1094dd8SFabian Ritter 4105e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 4106e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz31_align_2_2: 4107e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4108e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4109*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 4110*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx3 v[5:7], v[1:2], off offset:16 4111*173c6823SFabian Ritter; CHECK-NEXT: global_load_ushort v8, v[1:2], off offset:28 4112*173c6823SFabian Ritter; CHECK-NEXT: global_load_ubyte v9, v[1:2], off offset:30 4113*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 4114e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4115*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:24 4116e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4117*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v8, v0, s[0:3], 0 offen offset:28 4118e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4119*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v9, v0, s[0:3], 0 offen offset:30 4120e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4121*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 4122*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 4123*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 4124*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 4125*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:20 4126*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:16 4127e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4128e1094dd8SFabian Ritterentry: 4129e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 31, i1 false) 4130e1094dd8SFabian Ritter ret void 4131e1094dd8SFabian Ritter} 4132e1094dd8SFabian Ritter 4133e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(4) align 2 readonly %src) { 4134e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz32_align_2_2: 4135e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4136e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4137*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x1 4138*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 4139*173c6823SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 4140e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4141*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 4142*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 4143*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 4144*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 4145e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4146*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:20 4147*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:16 4148*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:28 4149*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:24 4150e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4151e1094dd8SFabian Ritterentry: 4152e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(4) noundef nonnull align 2 %src, i64 32, i1 false) 4153e1094dd8SFabian Ritter ret void 4154e1094dd8SFabian Ritter} 4155e1094dd8SFabian Ritter 4156e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 4157e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz16_align_8_8: 4158e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4159e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4160e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 4161e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4162e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 4163e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 4164e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 4165e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 4166e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4167e1094dd8SFabian Ritterentry: 4168e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 16, i1 false) 4169e1094dd8SFabian Ritter ret void 4170e1094dd8SFabian Ritter} 4171e1094dd8SFabian Ritter 4172e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 4173e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz31_align_8_8: 4174e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4175e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4176e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 4177e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 4178e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:15 4179e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4180e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 4181e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 4182e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 4183e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 4184e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4185*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:27 4186*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:23 4187*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:19 4188*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:15 4189e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4190e1094dd8SFabian Ritterentry: 4191e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 31, i1 false) 4192e1094dd8SFabian Ritter ret void 4193e1094dd8SFabian Ritter} 4194e1094dd8SFabian Ritter 4195e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(4) align 8 readonly %src) { 4196e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz32_align_8_8: 4197e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4198e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4199e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 4200e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 4201e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 4202e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4203e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 4204e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 4205e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 4206e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 4207e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4208e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:28 4209e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:24 4210e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:20 4211e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:16 4212e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4213e1094dd8SFabian Ritterentry: 4214e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(4) noundef nonnull align 8 %src, i64 32, i1 false) 4215e1094dd8SFabian Ritter ret void 4216e1094dd8SFabian Ritter} 4217e1094dd8SFabian Ritter 4218e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 4219e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz16_align_16_16: 4220e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4221e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4222e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[1:4], v[1:2], off 4223e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4224e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:12 4225e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:8 4226e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:4 4227e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen 4228e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4229e1094dd8SFabian Ritterentry: 4230e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 16, i1 false) 4231e1094dd8SFabian Ritter ret void 4232e1094dd8SFabian Ritter} 4233e1094dd8SFabian Ritter 4234e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 4235e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz31_align_16_16: 4236e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4237e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4238e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 4239e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 4240e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:15 4241e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4242e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 4243e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 4244e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 4245e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 4246e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4247*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:27 4248*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:23 4249*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:19 4250*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:15 4251e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4252e1094dd8SFabian Ritterentry: 4253e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 31, i1 false) 4254e1094dd8SFabian Ritter ret void 4255e1094dd8SFabian Ritter} 4256e1094dd8SFabian Ritter 4257e1094dd8SFabian Ritterdefine void @memcpy_p5_p4_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(4) align 16 readonly %src) { 4258e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p4_sz32_align_16_16: 4259e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4260e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4261e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x1 4262e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[3:6], v[1:2], off 4263e1094dd8SFabian Ritter; CHECK-NEXT: global_load_dwordx4 v[7:10], v[1:2], off offset:16 4264e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4265e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:12 4266e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:8 4267e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:4 4268e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen 4269e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4270e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v10, v0, s[0:3], 0 offen offset:28 4271e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:24 4272e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:20 4273e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:16 4274e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4275e1094dd8SFabian Ritterentry: 4276e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(4) noundef nonnull align 16 %src, i64 32, i1 false) 4277e1094dd8SFabian Ritter ret void 4278e1094dd8SFabian Ritter} 4279e1094dd8SFabian Ritter 4280e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz16_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 4281e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz16_align_1_1: 4282e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4283e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4284*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 4285*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen offset:8 4286*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:12 4287*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen 4288*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:4 4289e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4290*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:8 4291e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4292*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:12 4293e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4294*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen 4295e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4296*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:4 4297e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4298e1094dd8SFabian Ritterentry: 4299e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 16, i1 false) 4300e1094dd8SFabian Ritter ret void 4301e1094dd8SFabian Ritter} 4302e1094dd8SFabian Ritter 4303e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz31_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 4304e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz31_align_1_1: 4305e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4306e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4307*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x8 4308*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_ushort v2, v1, s[0:3], 0 offen offset:28 4309*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:24 4310*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:16 4311*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:20 4312*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:8 4313*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:12 4314*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen 4315*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:4 4316*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_ubyte v1, v1, s[0:3], 0 offen offset:30 4317e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(8) 4318*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v2, v0, s[0:3], 0 offen offset:28 4319e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(7) 4320*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:24 4321e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(6) 4322*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:16 4323e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 4324*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:20 4325e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 4326*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:8 4327e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4328*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:12 4329e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4330*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen 4331e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4332*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:4 4333e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4334*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v1, v0, s[0:3], 0 offen offset:30 4335e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4336e1094dd8SFabian Ritterentry: 4337e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 31, i1 false) 4338e1094dd8SFabian Ritter ret void 4339e1094dd8SFabian Ritter} 4340e1094dd8SFabian Ritter 4341e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz32_align_1_1(ptr addrspace(5) align 1 %dst, ptr addrspace(5) align 1 readonly %src) { 4342e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz32_align_1_1: 4343e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4344e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4345*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 4346*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen offset:24 4347*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:28 4348*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:16 4349*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:20 4350*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:8 4351*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:12 4352*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen 4353*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:4 4354e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(7) 4355*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:24 4356e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(6) 4357*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:28 4358e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 4359*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:16 4360e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 4361*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:20 4362e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4363*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:8 4364e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4365*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:12 4366e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4367*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen 4368e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4369*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:4 4370e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4371e1094dd8SFabian Ritterentry: 4372e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 1 %dst, ptr addrspace(5) noundef nonnull align 1 %src, i64 32, i1 false) 4373e1094dd8SFabian Ritter ret void 4374e1094dd8SFabian Ritter} 4375e1094dd8SFabian Ritter 4376e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz16_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 4377e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz16_align_2_2: 4378e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4379e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4380*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x3 4381*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen offset:8 4382*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:12 4383*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen 4384*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:4 4385e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4386*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:8 4387e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4388*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:12 4389e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4390*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen 4391e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4392*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:4 4393e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4394e1094dd8SFabian Ritterentry: 4395e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 16, i1 false) 4396e1094dd8SFabian Ritter ret void 4397e1094dd8SFabian Ritter} 4398e1094dd8SFabian Ritter 4399e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz31_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 4400e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz31_align_2_2: 4401e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4402e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4403*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x8 4404*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_ushort v2, v1, s[0:3], 0 offen offset:28 4405*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:24 4406*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:16 4407*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:20 4408*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:8 4409*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:12 4410*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen 4411*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v9, v1, s[0:3], 0 offen offset:4 4412*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_ubyte v1, v1, s[0:3], 0 offen offset:30 4413e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(8) 4414*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_short v2, v0, s[0:3], 0 offen offset:28 4415e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(7) 4416*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:24 4417e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(6) 4418*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:16 4419e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 4420*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:20 4421e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 4422*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:8 4423e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4424*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:12 4425e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4426*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen 4427e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4428*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v9, v0, s[0:3], 0 offen offset:4 4429e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4430*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_byte v1, v0, s[0:3], 0 offen offset:30 4431e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4432e1094dd8SFabian Ritterentry: 4433e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 31, i1 false) 4434e1094dd8SFabian Ritter ret void 4435e1094dd8SFabian Ritter} 4436e1094dd8SFabian Ritter 4437e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz32_align_2_2(ptr addrspace(5) align 2 %dst, ptr addrspace(5) align 2 readonly %src) { 4438e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz32_align_2_2: 4439e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4440e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4441*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 4442*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen offset:24 4443*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:28 4444*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:16 4445*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:20 4446*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen offset:8 4447*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:12 4448*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen 4449*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:4 4450e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(7) 4451*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:24 4452e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(6) 4453*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:28 4454e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 4455*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:16 4456e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 4457*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:20 4458e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4459*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen offset:8 4460e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4461*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:12 4462e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4463*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen 4464e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4465*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:4 4466e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4467e1094dd8SFabian Ritterentry: 4468e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 2 %dst, ptr addrspace(5) noundef nonnull align 2 %src, i64 32, i1 false) 4469e1094dd8SFabian Ritter ret void 4470e1094dd8SFabian Ritter} 4471e1094dd8SFabian Ritter 4472e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz16_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 4473e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz16_align_8_8: 4474e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4475e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4476e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x3 4477e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 4478e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 4479e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 4480e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:12 4481e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4482e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 4483e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4484e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 4485e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4486e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 4487e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4488e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:12 4489e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4490e1094dd8SFabian Ritterentry: 4491e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 16, i1 false) 4492e1094dd8SFabian Ritter ret void 4493e1094dd8SFabian Ritter} 4494e1094dd8SFabian Ritter 4495e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz31_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 4496e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz31_align_8_8: 4497e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4498e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4499*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 4500*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen offset:15 4501*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:19 4502*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:23 4503*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:27 4504*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen 4505*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:4 4506*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:8 4507*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:12 4508e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(7) 4509*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:15 4510e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(6) 4511*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:19 4512e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 4513*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:23 4514e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 4515*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:27 4516e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4517*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen 4518e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4519*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:4 4520e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4521*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:8 4522e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4523*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:12 4524e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4525e1094dd8SFabian Ritterentry: 4526e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 31, i1 false) 4527e1094dd8SFabian Ritter ret void 4528e1094dd8SFabian Ritter} 4529e1094dd8SFabian Ritter 4530e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz32_align_8_8(ptr addrspace(5) align 8 %dst, ptr addrspace(5) align 8 readonly %src) { 4531e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz32_align_8_8: 4532e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4533e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4534e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x7 4535e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen offset:16 4536e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:20 4537e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:24 4538e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:28 4539e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen 4540e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:4 4541e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:8 4542e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:12 4543e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(7) 4544e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:16 4545e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(6) 4546e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:20 4547e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 4548e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:24 4549e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 4550e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:28 4551e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4552e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen 4553e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4554e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:4 4555e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4556e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:8 4557e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4558e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:12 4559e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4560e1094dd8SFabian Ritterentry: 4561e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 8 %dst, ptr addrspace(5) noundef nonnull align 8 %src, i64 32, i1 false) 4562e1094dd8SFabian Ritter ret void 4563e1094dd8SFabian Ritter} 4564e1094dd8SFabian Ritter 4565e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz16_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 4566e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz16_align_16_16: 4567e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4568e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4569e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x3 4570e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen 4571e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:4 4572e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:8 4573e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:12 4574e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4575e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen 4576e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4577e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:4 4578e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4579e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:8 4580e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4581e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:12 4582e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4583e1094dd8SFabian Ritterentry: 4584e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 16, i1 false) 4585e1094dd8SFabian Ritter ret void 4586e1094dd8SFabian Ritter} 4587e1094dd8SFabian Ritter 4588e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz31_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 4589e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz31_align_16_16: 4590e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4591e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4592*173c6823SFabian Ritter; CHECK-NEXT: s_clause 0x7 4593*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen offset:15 4594*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:19 4595*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:23 4596*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:27 4597*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen 4598*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:4 4599*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:8 4600*173c6823SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:12 4601e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(7) 4602*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:15 4603e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(6) 4604*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:19 4605e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 4606*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:23 4607e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 4608*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:27 4609e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4610*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen 4611e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4612*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:4 4613e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4614*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:8 4615e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4616*173c6823SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:12 4617e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4618e1094dd8SFabian Ritterentry: 4619e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 31, i1 false) 4620e1094dd8SFabian Ritter ret void 4621e1094dd8SFabian Ritter} 4622e1094dd8SFabian Ritter 4623e1094dd8SFabian Ritterdefine void @memcpy_p5_p5_sz32_align_16_16(ptr addrspace(5) align 16 %dst, ptr addrspace(5) align 16 readonly %src) { 4624e1094dd8SFabian Ritter; CHECK-LABEL: memcpy_p5_p5_sz32_align_16_16: 4625e1094dd8SFabian Ritter; CHECK: ; %bb.0: ; %entry 4626e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) 4627e1094dd8SFabian Ritter; CHECK-NEXT: s_clause 0x7 4628e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v2, v1, s[0:3], 0 offen offset:16 4629e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v3, v1, s[0:3], 0 offen offset:20 4630e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v4, v1, s[0:3], 0 offen offset:24 4631e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v5, v1, s[0:3], 0 offen offset:28 4632e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v6, v1, s[0:3], 0 offen 4633e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v7, v1, s[0:3], 0 offen offset:4 4634e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v8, v1, s[0:3], 0 offen offset:8 4635e1094dd8SFabian Ritter; CHECK-NEXT: buffer_load_dword v1, v1, s[0:3], 0 offen offset:12 4636e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(7) 4637e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v2, v0, s[0:3], 0 offen offset:16 4638e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(6) 4639e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v3, v0, s[0:3], 0 offen offset:20 4640e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(5) 4641e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v4, v0, s[0:3], 0 offen offset:24 4642e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(4) 4643e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v5, v0, s[0:3], 0 offen offset:28 4644e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(3) 4645e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v6, v0, s[0:3], 0 offen 4646e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(2) 4647e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v7, v0, s[0:3], 0 offen offset:4 4648e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(1) 4649e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v8, v0, s[0:3], 0 offen offset:8 4650e1094dd8SFabian Ritter; CHECK-NEXT: s_waitcnt vmcnt(0) 4651e1094dd8SFabian Ritter; CHECK-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen offset:12 4652e1094dd8SFabian Ritter; CHECK-NEXT: s_setpc_b64 s[30:31] 4653e1094dd8SFabian Ritterentry: 4654e1094dd8SFabian Ritter tail call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noundef nonnull align 16 %dst, ptr addrspace(5) noundef nonnull align 16 %src, i64 32, i1 false) 4655e1094dd8SFabian Ritter ret void 4656e1094dd8SFabian Ritter} 4657e1094dd8SFabian Ritter 4658e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p0.p0.i64(ptr addrspace(0) noalias nocapture writeonly, ptr addrspace(0) noalias nocapture readonly, i64, i1 immarg) #2 4659e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p0.p1.i64(ptr addrspace(0) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg) #2 4660e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p0.p3.i64(ptr addrspace(0) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg) #2 4661e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p0.p4.i64(ptr addrspace(0) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg) #2 4662e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p0.p5.i64(ptr addrspace(0) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg) #2 4663e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(0) noalias nocapture readonly, i64, i1 immarg) #2 4664e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg) #2 4665e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg) #2 4666e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg) #2 4667e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg) #2 4668e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(0) noalias nocapture readonly, i64, i1 immarg) #2 4669e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg) #2 4670e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg) #2 4671e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg) #2 4672e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg) #2 4673e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(0) noalias nocapture readonly, i64, i1 immarg) #2 4674e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg) #2 4675e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg) #2 4676e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg) #2 4677e1094dd8SFabian Ritterdeclare void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg) #2 4678e1094dd8SFabian Ritter 4679e1094dd8SFabian Ritterattributes #0 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } 4680e1094dd8SFabian Ritter 4681