1 ; RUN: llc < %s -march=arm64 | FileCheck %s 2 define i64 @normal_load(i64* nocapture %bar) nounwind readonly { 3 ; CHECK: normal_load 4 ; CHECK: ldp 5 ; CHECK-NEXT: add 6 ; CHECK-NEXT: ret 7 %add.ptr = getelementptr inbounds i64* %bar, i64 1 8 %tmp = load i64* %add.ptr, align 8 9 %add.ptr1 = getelementptr inbounds i64* %bar, i64 2 10 %tmp1 = load i64* %add.ptr1, align 8 11 %add = add nsw i64 %tmp1, %tmp 12 ret i64 %add 13 } 14 15 define i64 @volatile_load(i64* nocapture %bar) nounwind { 16 ; CHECK: volatile_load 17 ; CHECK: ldr 18 ; CHECK-NEXT: ldr 19 ; CHECK-NEXT: add 20 ; CHECK-NEXT: ret 21 %add.ptr = getelementptr inbounds i64* %bar, i64 1 22 %tmp = load volatile i64* %add.ptr, align 8 23 %add.ptr1 = getelementptr inbounds i64* %bar, i64 2 24 %tmp1 = load volatile i64* %add.ptr1, align 8 25 %add = add nsw i64 %tmp1, %tmp 26 ret i64 %add 27 } 28