| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: llc %s -o - -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,CHECK-O2 |
| ; RUN: llc -O3 %s -o - -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK,CHECK-O3 |
| |
| target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" |
| target triple = "aarch64" |
| |
| @global0 = dso_local local_unnamed_addr global i32 0, align 4 |
| @global1 = dso_local local_unnamed_addr global i32 0, align 4 |
| |
| define dso_local i32 @func() { |
| ; CHECK-O2-LABEL: func: |
| ; CHECK-O2: // %bb.0: // %entry |
| ; CHECK-O2-NEXT: adrp x8, global0 |
| ; CHECK-O2-NEXT: adrp x9, global1 |
| ; CHECK-O2-NEXT: ldr w8, [x8, :lo12:global0] |
| ; CHECK-O2-NEXT: ldr w9, [x9, :lo12:global1] |
| ; CHECK-O2-NEXT: add w0, w9, w8 |
| ; CHECK-O2-NEXT: ret |
| ; |
| ; CHECK-O3-LABEL: func: |
| ; CHECK-O3: // %bb.0: // %entry |
| ; CHECK-O3-NEXT: adrp x8, .L_MergedGlobals |
| ; CHECK-O3-NEXT: add x8, x8, :lo12:.L_MergedGlobals |
| ; CHECK-O3-NEXT: ldp w9, w8, [x8] |
| ; CHECK-O3-NEXT: add w0, w8, w9 |
| ; CHECK-O3-NEXT: ret |
| entry: |
| %0 = load i32, ptr @global0, align 4 |
| %1 = load i32, ptr @global1, align 4 |
| %add = add nsw i32 %1, %0 |
| ret i32 %add |
| } |
| ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: |
| ; CHECK: {{.*}} |