blob: bd31079fefed16bd8124753740cdebab3c87fc3a [file] [edit]
; RUN: llc < %s -mtriple=bpfel -mcpu=v3 -verify-machineinstrs | FileCheck %s
;
; Mismatched alignment (dst 8, src 1): expect plain byte copies, no shifts/ORs
; and no wide (u64) access.
define void @memcpy_dst8_src1(ptr align 8 %a, ptr align 1 %b) {
; CHECK-LABEL: memcpy_dst8_src1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: w3 = *(u8 *)(r2 + 7)
; CHECK-NEXT: *(u8 *)(r1 + 7) = w3
; CHECK-NEXT: w3 = *(u8 *)(r2 + 6)
; CHECK-NEXT: *(u8 *)(r1 + 6) = w3
; CHECK-NEXT: w3 = *(u8 *)(r2 + 5)
; CHECK-NEXT: *(u8 *)(r1 + 5) = w3
; CHECK-NEXT: w3 = *(u8 *)(r2 + 4)
; CHECK-NEXT: *(u8 *)(r1 + 4) = w3
; CHECK-NEXT: w3 = *(u8 *)(r2 + 3)
; CHECK-NEXT: *(u8 *)(r1 + 3) = w3
; CHECK-NEXT: w3 = *(u8 *)(r2 + 2)
; CHECK-NEXT: *(u8 *)(r1 + 2) = w3
; CHECK-NEXT: w3 = *(u8 *)(r2 + 1)
; CHECK-NEXT: *(u8 *)(r1 + 1) = w3
; CHECK-NEXT: w2 = *(u8 *)(r2 + 0)
; CHECK-NEXT: *(u8 *)(r1 + 0) = w2
; CHECK-NEXT: exit
entry:
tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %a, ptr align 1 %b, i64 8, i1 false)
ret void
}
define void @memmove_dst8_src1(ptr align 8 %a, ptr align 1 %b) {
; CHECK-LABEL: memmove_dst8_src1:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: w3 = *(u8 *)(r2 + 0)
; CHECK-NEXT: w4 = *(u8 *)(r2 + 1)
; CHECK-NEXT: w5 = *(u8 *)(r2 + 2)
; CHECK-NEXT: w0 = *(u8 *)(r2 + 3)
; CHECK-NEXT: w6 = *(u8 *)(r2 + 4)
; CHECK-NEXT: w7 = *(u8 *)(r2 + 5)
; CHECK-NEXT: w8 = *(u8 *)(r2 + 6)
; CHECK-NEXT: w2 = *(u8 *)(r2 + 7)
; CHECK-NEXT: *(u8 *)(r1 + 7) = w2
; CHECK-NEXT: *(u8 *)(r1 + 6) = w8
; CHECK-NEXT: *(u8 *)(r1 + 5) = w7
; CHECK-NEXT: *(u8 *)(r1 + 4) = w6
; CHECK-NEXT: *(u8 *)(r1 + 3) = w0
; CHECK-NEXT: *(u8 *)(r1 + 2) = w5
; CHECK-NEXT: *(u8 *)(r1 + 1) = w4
; CHECK-NEXT: *(u8 *)(r1 + 0) = w3
; CHECK-NEXT: exit
entry:
tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %a, ptr align 1 %b, i64 8, i1 false)
ret void
}
declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1)