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