| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc --mtriple=loongarch64 -mattr=+d --relocation-model=static -O1 \ |
| ; RUN: < %s | FileCheck %s --check-prefix=MERGE |
| ; RUN: llc --mtriple=loongarch64 -mattr=+d --relocation-model=static -O1 \ |
| ; RUN: --loongarch-enable-merge-offset=false < %s | FileCheck %s --check-prefix=NO_MERGE |
| |
| @g = dso_local global i32 zeroinitializer, align 4 |
| |
| define void @foo() nounwind { |
| ; MERGE-LABEL: foo: |
| ; MERGE: # %bb.0: |
| ; MERGE-NEXT: pcalau12i $a0, %pc_hi20(g) |
| ; MERGE-NEXT: ld.w $zero, $a0, %pc_lo12(g) |
| ; MERGE-NEXT: ret |
| ; |
| ; NO_MERGE-LABEL: foo: |
| ; NO_MERGE: # %bb.0: |
| ; NO_MERGE-NEXT: pcalau12i $a0, %pc_hi20(g) |
| ; NO_MERGE-NEXT: addi.d $a0, $a0, %pc_lo12(g) |
| ; NO_MERGE-NEXT: ld.w $zero, $a0, 0 |
| ; NO_MERGE-NEXT: ret |
| %v = load volatile i32, ptr @g |
| ret void |
| } |