brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.0 KiB · df13c02 Raw
292 lines · plain
1# RUN: llc -O0 -mtriple=aarch64 -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s --check-prefixes=CHECK,LINUX-DEFAULT2 3--- |4  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"5 6  define dso_local void @frame_index() {7    %ptr0 = alloca i648    ret void9  }10 11  define dso_local ptr @ptr_mask(ptr %in) { ret ptr undef }12 13  @var_local = dso_local global i8 014  define dso_local ptr @global_local() { ret ptr undef }15 16  @var_got = external dso_local global i817  define dso_local ptr @global_got() { ret ptr undef }18 19  define dso_local void @icmp() { ret void }20  define dso_local void @fcmp() { ret void }21 22  define dso_local void @phi() { ret void }23 24  define dso_local void @select() { ret void }25...26 27---28# CHECK-LABEL: name: frame_index29name:            frame_index30legalized:       true31regBankSelected: true32 33# CHECK:      registers:34# CHECK-NEXT:  - { id: 0, class: gpr64sp, preferred-register: '', flags: [  ] }35registers:36  - { id: 0, class: gpr }37 38stack:39  - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }40 41# CHECK:  body:42# CHECK: %0:gpr64sp = ADDXri %stack.0.ptr0, 0, 043body:             |44  bb.0:45    %0(p0) = G_FRAME_INDEX %stack.0.ptr046    $x0 = COPY %0(p0)47...48 49---50 51---52# CHECK-LABEL: name: ptr_mask53name:            ptr_mask54legalized:       true55regBankSelected: true56 57# CHECK:  body:58# CHECK: %2:gpr64sp = ANDXri %0, 806059body:             |60  bb.0:61      liveins: $x062    %0:gpr(p0) = COPY $x063    %const:gpr(s64) = G_CONSTANT i64 -864    %1:gpr(p0) = G_PTRMASK %0, %const65    $x0 = COPY %1(p0)66...67 68---69# Global defined in the same linkage unit so no GOT is needed70# CHECK-LABEL: name: global_local71name:            global_local72legalized:       true73regBankSelected: true74registers:75  - { id: 0, class: gpr }76 77# CHECK:  body:78# LINUX-DEFAULT: %0:gpr64common = MOVaddr target-flags(aarch64-page) @var_local, target-flags(aarch64-pageoff, aarch64-nc) @var_local79body:             |80  bb.0:81    %0(p0) = G_GLOBAL_VALUE @var_local82    $x0 = COPY %0(p0)83...84 85---86# CHECK-LABEL: name: global_got87name:            global_got88legalized:       true89regBankSelected: true90registers:91  - { id: 0, class: gpr }92 93# CHECK:  body:94# LINUX-DEFAULT: %0:gpr64common = MOVaddr target-flags(aarch64-page) @var_got, target-flags(aarch64-pageoff, aarch64-nc) @var_got95body:             |96  bb.0:97    %0(p0) = G_GLOBAL_VALUE @var_got98    $x0 = COPY %0(p0)99...100 101---102# CHECK-LABEL: name: icmp103name:            icmp104legalized:       true105regBankSelected: true106 107# CHECK:      registers:108# CHECK-NEXT:  - { id: 0, class: gpr32, preferred-register: '', flags: [  ] }109# CHECK-NEXT:  - { id: 1, class: gpr32, preferred-register: '', flags: [  ] }110# CHECK-NEXT:  - { id: 2, class: gpr64, preferred-register: '', flags: [  ] }111# CHECK-NEXT:  - { id: 3, class: gpr32, preferred-register: '', flags: [  ] }112# CHECK-NEXT:  - { id: 4, class: gpr64, preferred-register: '', flags: [  ] }113# CHECK-NEXT:  - { id: 5, class: gpr32, preferred-register: '', flags: [  ] }114registers:115  - { id: 0, class: gpr }116  - { id: 1, class: gpr }117  - { id: 2, class: gpr }118  - { id: 3, class: gpr }119  - { id: 4, class: gpr }120  - { id: 5, class: gpr }121  - { id: 6, class: gpr }122  - { id: 7, class: gpr }123  - { id: 8, class: gpr }124  - { id: 9, class: gpr }125  - { id: 10, class: gpr }126  - { id: 11, class: gpr }127 128# CHECK:  body:129# CHECK:    SUBSWrr %0, %0, implicit-def $nzcv130# CHECK:    %1:gpr32 = CSINCWr $wzr, $wzr, 1, implicit $nzcv131 132# CHECK:    SUBSXrr %2, %2, implicit-def $nzcv133# CHECK:    %3:gpr32 = CSINCWr $wzr, $wzr, 3, implicit $nzcv134 135# CHECK:    SUBSXrr %4, %4, implicit-def $nzcv136# CHECK:    %5:gpr32 = CSINCWr $wzr, $wzr, 0, implicit $nzcv137 138body:             |139  bb.0:140    liveins: $w0, $x0141 142    %0(s32) = COPY $w0143    %1(s32) = G_ICMP intpred(eq), %0, %0144    $w0 = COPY %1145 146    %2(s64) = COPY $x0147    %3(s32) = G_ICMP intpred(uge), %2, %2148    $w0 = COPY %3149 150    %4(p0) = COPY $x0151    %5(s32) = G_ICMP intpred(ne), %4, %4152    $w0 = COPY %5153...154 155---156# CHECK-LABEL: name: fcmp157name:            fcmp158legalized:       true159regBankSelected: true160 161# CHECK:      registers:162# CHECK-NEXT:  - { id: 0, class: fpr32, preferred-register: '', flags: [  ] }163# CHECK-NEXT:  - { id: 1, class: gpr32, preferred-register: '', flags: [  ] }164# CHECK-NEXT:  - { id: 2, class: fpr64, preferred-register: '', flags: [  ] }165# CHECK-NEXT:  - { id: 3, class: gpr32, preferred-register: '', flags: [  ] }166# CHECK-NEXT:  - { id: 4, class: gpr32, preferred-register: '', flags: [  ] }167# CHECK-NEXT:  - { id: 5, class: gpr32, preferred-register: '', flags: [  ] }168registers:169  - { id: 0, class: fpr }170  - { id: 1, class: gpr }171  - { id: 2, class: fpr }172  - { id: 3, class: gpr }173 174# CHECK:  body:175# CHECK:    nofpexcept FCMPSrr %0, %0, implicit-def $nzcv176# CHECK:    [[TST_MI:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 5, implicit $nzcv177# CHECK:    [[TST_GT:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 13, implicit $nzcv178# CHECK:    %1:gpr32 = ORRWrr [[TST_MI]], [[TST_GT]]179 180# CHECK:    nofpexcept FCMPDrr %2, %2, implicit-def $nzcv181# CHECK:    %3:gpr32 = CSINCWr $wzr, $wzr, 4, implicit $nzcv182 183body:             |184  bb.0:185    liveins: $w0, $x0186 187    %0(s32) = COPY $s0188    %1(s32) = G_FCMP floatpred(one), %0, %0189    $w0 = COPY %1190 191    %2(s64) = COPY $d0192    %3(s32) = G_FCMP floatpred(uge), %2, %2193    $w0 = COPY %3194 195...196 197---198# CHECK-LABEL: name: phi199name:            phi200legalized:       true201regBankSelected: true202tracksRegLiveness: true203 204# CHECK:      registers:205# CHECK-NEXT:  - { id: 0, class: fpr32, preferred-register: '', flags: [  ] }206# CHECK-NEXT:  - { id: 1, class: gpr, preferred-register: '', flags: [  ] }207# CHECK-NEXT:  - { id: 2, class: fpr32, preferred-register: '', flags: [  ] }208# CHECK-NEXT:  - { id: 3, class: gpr32, preferred-register: '', flags: [  ] }209registers:210  - { id: 0, class: fpr }211  - { id: 1, class: gpr }212  - { id: 2, class: fpr }213 214# CHECK:  body:215# CHECK:    bb.1:216# CHECK:      %2:fpr32 = PHI %0, %bb.0, %2, %bb.1217 218body:             |219  bb.0:220    liveins: $s0, $w0221    successors: %bb.1222    %0(s32) = COPY $s0223    %3:gpr(s32) = COPY $w0224 225  bb.1:226    successors: %bb.1, %bb.2227    %2(s32) = PHI %0, %bb.0, %2, %bb.1228    G_BRCOND %3, %bb.1229 230  bb.2:231    $s0 = COPY %2232    RET_ReallyLR implicit $s0233...234 235---236# CHECK-LABEL: name: select237name:            select238legalized:       true239regBankSelected: true240tracksRegLiveness: true241 242# CHECK:      registers:243# CHECK-NEXT:  - { id: 0, class: gpr32, preferred-register: '', flags: [  ] }244# CHECK-NEXT:  - { id: 1, class: gpr32, preferred-register: '', flags: [  ] }245# CHECK-NEXT:  - { id: 2, class: gpr32, preferred-register: '', flags: [  ] }246# CHECK-NEXT:  - { id: 3, class: gpr32, preferred-register: '', flags: [  ] }247# CHECK-NEXT:  - { id: 4, class: gpr64, preferred-register: '', flags: [  ] }248# CHECK-NEXT:  - { id: 5, class: gpr64, preferred-register: '', flags: [  ] }249# CHECK-NEXT:  - { id: 6, class: gpr64, preferred-register: '', flags: [  ] }250# CHECK-NEXT:  - { id: 7, class: gpr64, preferred-register: '', flags: [  ] }251# CHECK-NEXT:  - { id: 8, class: gpr64, preferred-register: '', flags: [  ] }252# CHECK-NEXT:  - { id: 9, class: gpr64, preferred-register: '', flags: [  ] }253registers:254  - { id: 0, class: gpr }255  - { id: 1, class: gpr }256  - { id: 2, class: gpr }257  - { id: 3, class: gpr }258  - { id: 4, class: gpr }259  - { id: 5, class: gpr }260  - { id: 6, class: gpr }261  - { id: 7, class: gpr }262  - { id: 8, class: gpr }263  - { id: 9, class: gpr }264 265# CHECK:  body:266# CHECK:      ANDSWri %0, 0, implicit-def $nzcv267# CHECK:      %3:gpr32 = CSELWr %1, %2, 1, implicit $nzcv268# CHECK:      ANDSWri %0, 0, implicit-def $nzcv269# CHECK:      %6:gpr64 = CSELXr %4, %5, 1, implicit $nzcv270# CHECK:      ANDSWri %0, 0, implicit-def $nzcv271# CHECK:      %9:gpr64 = CSELXr %7, %8, 1, implicit $nzcv272body:             |273  bb.0:274    liveins: $w0, $w1, $w2275    %0:gpr(s32) = COPY $w0276 277    %1(s32) = COPY $w1278    %2(s32) = COPY $w2279    %3(s32) = G_SELECT %0, %1, %2280    $w0 = COPY %3(s32)281 282    %4(s64) = COPY $x0283    %5(s64) = COPY $x1284    %6(s64) = G_SELECT %0, %4, %5285    $x0 = COPY %6(s64)286 287    %7(p0) = COPY $x0288    %8(p0) = COPY $x1289    %9(p0) = G_SELECT %0, %7, %8290    $x0 = COPY %9(p0)291...292