| ; RUN: llc < %s -mtriple=arm64-eabi | FileCheck %s | |
| define i64 @normal_load(i64* nocapture %bar) nounwind readonly { | |
| ; CHECK: normal_load | |
| ; CHECK: ldp | |
| ; CHECK-NEXT: add | |
| ; CHECK-NEXT: ret | |
| %add.ptr = getelementptr inbounds i64, i64* %bar, i64 1 | |
| %tmp = load i64, i64* %add.ptr, align 8 | |
| %add.ptr1 = getelementptr inbounds i64, i64* %bar, i64 2 | |
| %tmp1 = load i64, i64* %add.ptr1, align 8 | |
| %add = add nsw i64 %tmp1, %tmp | |
| ret i64 %add | |
| } | |
| define i64 @volatile_load(i64* nocapture %bar) nounwind { | |
| ; CHECK: volatile_load | |
| ; CHECK: ldr | |
| ; CHECK-NEXT: ldr | |
| ; CHECK-NEXT: add | |
| ; CHECK-NEXT: ret | |
| %add.ptr = getelementptr inbounds i64, i64* %bar, i64 1 | |
| %tmp = load volatile i64, i64* %add.ptr, align 8 | |
| %add.ptr1 = getelementptr inbounds i64, i64* %bar, i64 2 | |
| %tmp1 = load volatile i64, i64* %add.ptr1, align 8 | |
| %add = add nsw i64 %tmp1, %tmp | |
| ret i64 %add | |
| } |