1 ; RUN: llc < %s -mtriple=arm64-eabi | FileCheck %s 2 ; rdar://r11231896 3 4 define void @t1(i8* nocapture %a, i8* nocapture %b) nounwind { 5 entry: 6 ; CHECK-LABEL: t1: 7 ; CHECK-NOT: orr 8 ; CHECK: ldr [[X0:x[0-9]+]], [x1] 9 ; CHECK: str [[X0]], [x0] 10 %tmp1 = bitcast i8* %b to i64* 11 %tmp2 = bitcast i8* %a to i64* 12 %tmp3 = load i64, i64* %tmp1, align 1 13 store i64 %tmp3, i64* %tmp2, align 1 14 ret void 15 } 16 17 define void @t2(i8* nocapture %a, i8* nocapture %b) nounwind { 18 entry: 19 ; CHECK-LABEL: t2: 20 ; CHECK-NOT: orr 21 ; CHECK: ldr [[W0:w[0-9]+]], [x1] 22 ; CHECK: str [[W0]], [x0] 23 %tmp1 = bitcast i8* %b to i32* 24 %tmp2 = bitcast i8* %a to i32* 25 %tmp3 = load i32, i32* %tmp1, align 1 26 store i32 %tmp3, i32* %tmp2, align 1 27 ret void 28 } 29 30 define void @t3(i8* nocapture %a, i8* nocapture %b) nounwind { 31 entry: 32 ; CHECK-LABEL: t3: 33 ; CHECK-NOT: orr 34 ; CHECK: ldrh [[W0:w[0-9]+]], [x1] 35 ; CHECK: strh [[W0]], [x0] 36 %tmp1 = bitcast i8* %b to i16* 37 %tmp2 = bitcast i8* %a to i16* 38 %tmp3 = load i16, i16* %tmp1, align 1 39 store i16 %tmp3, i16* %tmp2, align 1 40 ret void 41 } 42