brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · 8d0b835 Raw
75 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-unknown-unknown -o - -verify-machineinstrs -run-pass=instruction-select %s | FileCheck %s3# RUN: llc -mtriple=aarch64-unknown-unknown -o - -verify-machineinstrs -run-pass=instruction-select -code-model=large %s | FileCheck %s --check-prefix=LARGE4# RUN: llc -mtriple=aarch64-unknown-unknown -o - -verify-machineinstrs -run-pass=instruction-select -code-model=large -relocation-model=pic %s | FileCheck %s --check-prefix=LARGE-PIC5--- |6  source_filename = "blockaddress.ll"7  target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"8  target triple = "aarch64-none-linux-gnu"9 10  @addr = dso_local global ptr null11 12  define dso_local void @test_blockaddress() {13    store ptr blockaddress(@test_blockaddress, %block), ptr @addr14    indirectbr ptr blockaddress(@test_blockaddress, %block), [label %block]15 16  block:                                            ; preds = %017    ret void18  }19 20...21---22name:            test_blockaddress23alignment:       424legalized:       true25regBankSelected: true26tracksRegLiveness: true27registers:28  - { id: 0, class: gpr }29  - { id: 1, class: gpr }30body:             |31  ; CHECK-LABEL: name: test_blockaddress32  ; CHECK: bb.0 (%ir-block.0):33  ; CHECK-NEXT:   [[MOVaddrBA:%[0-9]+]]:gpr64common = MOVaddrBA target-flags(aarch64-page) blockaddress(@test_blockaddress, %ir-block.block), target-flags(aarch64-pageoff, aarch64-nc) blockaddress(@test_blockaddress, %ir-block.block)34  ; CHECK-NEXT:   [[MOVaddr:%[0-9]+]]:gpr64common = MOVaddr target-flags(aarch64-page) @addr, target-flags(aarch64-pageoff, aarch64-nc) @addr35  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64 = COPY [[MOVaddrBA]]36  ; CHECK-NEXT:   STRXui [[COPY]], [[MOVaddr]], 0 :: (store (p0) into @addr)37  ; CHECK-NEXT:   BR [[MOVaddrBA]]38  ; CHECK-NEXT: {{  $}}39  ; CHECK-NEXT: bb.1.block (ir-block-address-taken %ir-block.block):40  ;41  ; LARGE-LABEL: name: test_blockaddress42  ; LARGE: bb.0 (%ir-block.0):43  ; LARGE-NEXT:   [[MOVZXi:%[0-9]+]]:gpr64 = MOVZXi target-flags(aarch64-g0, aarch64-nc) blockaddress(@test_blockaddress, %ir-block.block), 044  ; LARGE-NEXT:   [[MOVKXi:%[0-9]+]]:gpr64 = MOVKXi [[MOVZXi]], target-flags(aarch64-g1, aarch64-nc) blockaddress(@test_blockaddress, %ir-block.block), 1645  ; LARGE-NEXT:   [[MOVKXi1:%[0-9]+]]:gpr64 = MOVKXi [[MOVKXi]], target-flags(aarch64-g2, aarch64-nc) blockaddress(@test_blockaddress, %ir-block.block), 3246  ; LARGE-NEXT:   [[MOVKXi2:%[0-9]+]]:gpr64 = MOVKXi [[MOVKXi1]], target-flags(aarch64-g3) blockaddress(@test_blockaddress, %ir-block.block), 4847  ; LARGE-NEXT:   [[MOVZXi1:%[0-9]+]]:gpr64 = MOVZXi target-flags(aarch64-g0, aarch64-nc) @addr, 048  ; LARGE-NEXT:   [[MOVKXi3:%[0-9]+]]:gpr64 = MOVKXi [[MOVZXi1]], target-flags(aarch64-g1, aarch64-nc) @addr, 1649  ; LARGE-NEXT:   [[MOVKXi4:%[0-9]+]]:gpr64 = MOVKXi [[MOVKXi3]], target-flags(aarch64-g2, aarch64-nc) @addr, 3250  ; LARGE-NEXT:   [[MOVKXi5:%[0-9]+]]:gpr64common = MOVKXi [[MOVKXi4]], target-flags(aarch64-g3) @addr, 4851  ; LARGE-NEXT:   STRXui [[MOVKXi2]], [[MOVKXi5]], 0 :: (store (p0) into @addr)52  ; LARGE-NEXT:   BR [[MOVKXi2]]53  ; LARGE-NEXT: {{  $}}54  ; LARGE-NEXT: bb.1.block (ir-block-address-taken %ir-block.block):55  ;56  ; LARGE-PIC-LABEL: name: test_blockaddress57  ; LARGE-PIC: bb.0 (%ir-block.0):58  ; LARGE-PIC-NEXT:   [[MOVaddrBA:%[0-9]+]]:gpr64common = MOVaddrBA target-flags(aarch64-page) blockaddress(@test_blockaddress, %ir-block.block), target-flags(aarch64-pageoff, aarch64-nc) blockaddress(@test_blockaddress, %ir-block.block)59  ; LARGE-PIC-NEXT:   [[MOVaddr:%[0-9]+]]:gpr64common = MOVaddr target-flags(aarch64-page) @addr, target-flags(aarch64-pageoff, aarch64-nc) @addr60  ; LARGE-PIC-NEXT:   [[COPY:%[0-9]+]]:gpr64 = COPY [[MOVaddrBA]]61  ; LARGE-PIC-NEXT:   STRXui [[COPY]], [[MOVaddr]], 0 :: (store (p0) into @addr)62  ; LARGE-PIC-NEXT:   BR [[MOVaddrBA]]63  ; LARGE-PIC-NEXT: {{  $}}64  ; LARGE-PIC-NEXT: bb.1.block (ir-block-address-taken %ir-block.block):65  bb.1 (%ir-block.0):66    %0:gpr(p0) = G_BLOCK_ADDR blockaddress(@test_blockaddress, %ir-block.block)67    %1:gpr(p0) = G_GLOBAL_VALUE @addr68    G_STORE %0(p0), %1(p0) :: (store (p0) into @addr)69    G_BRINDIRECT %0(p0)70 71  bb.2.block (ir-block-address-taken %ir-block.block):72    RET_ReallyLR73 74...75