66 lines · plain
1; RUN: llc < %s -mtriple=arm64-eabi | FileCheck %s2 3define i64 @_f0(ptr %p) {4; CHECK: f0:5; CHECK: ldur x0, [x0, #-8]6; CHECK-NEXT: ret7 %tmp = getelementptr inbounds i64, ptr %p, i64 -18 %ret = load i64, ptr %tmp, align 29 ret i64 %ret10}11define i32 @_f1(ptr %p) {12; CHECK: f1:13; CHECK: ldur w0, [x0, #-4]14; CHECK-NEXT: ret15 %tmp = getelementptr inbounds i32, ptr %p, i64 -116 %ret = load i32, ptr %tmp, align 217 ret i32 %ret18}19define i16 @_f2(ptr %p) {20; CHECK: f2:21; CHECK: ldurh w0, [x0, #-2]22; CHECK-NEXT: ret23 %tmp = getelementptr inbounds i16, ptr %p, i64 -124 %ret = load i16, ptr %tmp, align 225 ret i16 %ret26}27define i8 @_f3(ptr %p) {28; CHECK: f3:29; CHECK: ldurb w0, [x0, #-1]30; CHECK-NEXT: ret31 %tmp = getelementptr inbounds i8, ptr %p, i64 -132 %ret = load i8, ptr %tmp, align 233 ret i8 %ret34}35 36define i64 @zext32(ptr %a) nounwind ssp {37; CHECK-LABEL: zext32:38; CHECK: ldur w0, [x0, #-12]39; CHECK-NEXT: ret40 %p = getelementptr inbounds i8, ptr %a, i64 -1241 %tmp2 = load i32, ptr %p, align 442 %ret = zext i32 %tmp2 to i6443 44 ret i64 %ret45}46define i64 @zext16(ptr %a) nounwind ssp {47; CHECK-LABEL: zext16:48; CHECK: ldurh w0, [x0, #-12]49; CHECK-NEXT: ret50 %p = getelementptr inbounds i8, ptr %a, i64 -1251 %tmp2 = load i16, ptr %p, align 252 %ret = zext i16 %tmp2 to i6453 54 ret i64 %ret55}56define i64 @zext8(ptr %a) nounwind ssp {57; CHECK-LABEL: zext8:58; CHECK: ldurb w0, [x0, #-12]59; CHECK-NEXT: ret60 %p = getelementptr inbounds i8, ptr %a, i64 -1261 %tmp2 = load i8, ptr %p, align 162 %ret = zext i8 %tmp2 to i6463 64 ret i64 %ret65}66