brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.4 KiB · b3613f5 Raw
283 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42# RUN: llc -O0 -mtriple=aarch64-apple-ios -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=IOS3# RUN: llc -O0 -mtriple=aarch64-linux-gnu -relocation-model=pic -run-pass=instruction-select -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s -check-prefix=CHECK -check-prefix=LINUX-PIC4 5--- |6  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"7 8  define void @frame_index() {9    %ptr0 = alloca i6410    ret void11  }12 13  define ptr @ptr_mask(ptr %in) { ret ptr undef }14 15  @var_local = global i8 016  define ptr @global_local() { ret ptr undef }17 18  @var_got = external global i819  define ptr @global_got() { ret ptr undef }20 21  define void @icmp() { ret void }22  define void @fcmp() { ret void }23 24  define void @phi() { ret void }25 26  define void @select() { ret void }27...28 29---30name:            frame_index31legalized:       true32regBankSelected: true33stack:34  - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }35body:             |36  bb.0:37    ; CHECK-LABEL: name: frame_index38    ; CHECK: [[ADDXri:%[0-9]+]]:gpr64sp = ADDXri %stack.0.ptr0, 0, 039    ; CHECK-NEXT: $x0 = COPY [[ADDXri]]40    %0:gpr(p0) = G_FRAME_INDEX %stack.0.ptr041    $x0 = COPY %0(p0)42...43 44---45 46---47name:            ptr_mask48legalized:       true49regBankSelected: true50body:             |51  bb.0:52      liveins: $x053    ; CHECK-LABEL: name: ptr_mask54    ; CHECK: liveins: $x055    ; CHECK-NEXT: {{  $}}56    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x057    ; CHECK-NEXT: [[ANDXri:%[0-9]+]]:gpr64sp = ANDXri [[COPY]], 806058    ; CHECK-NEXT: $x0 = COPY [[ANDXri]]59    %0:gpr(p0) = COPY $x060    %const:gpr(s64) = G_CONSTANT i64 -861    %1:gpr(p0) = G_PTRMASK %0, %const62    $x0 = COPY %1(p0)63...64 65---66# Global defined in the same linkage unit so no GOT is needed67name:            global_local68legalized:       true69regBankSelected: true70body:             |71  bb.0:72    ; IOS-LABEL: name: global_local73    ; IOS: [[MOVaddr:%[0-9]+]]:gpr64common = MOVaddr target-flags(aarch64-page) @var_local, target-flags(aarch64-pageoff, aarch64-nc) @var_local74    ; IOS-NEXT: $x0 = COPY [[MOVaddr]]75    ;76    ; LINUX-PIC-LABEL: name: global_local77    ; LINUX-PIC: [[LOADgot:%[0-9]+]]:gpr64common = LOADgot target-flags(aarch64-got) @var_local78    ; LINUX-PIC-NEXT: $x0 = COPY [[LOADgot]]79    %0:gpr(p0) = G_GLOBAL_VALUE @var_local80    $x0 = COPY %0(p0)81...82 83---84name:            global_got85legalized:       true86regBankSelected: true87body:             |88  bb.0:89    ; CHECK-LABEL: name: global_got90    ; CHECK: [[LOADgot:%[0-9]+]]:gpr64common = LOADgot target-flags(aarch64-got) @var_got91    ; CHECK-NEXT: $x0 = COPY [[LOADgot]]92    %0:gpr(p0) = G_GLOBAL_VALUE @var_got93    $x0 = COPY %0(p0)94...95 96---97name:            icmp98legalized:       true99regBankSelected: true100body:             |101  bb.0:102    liveins: $w0, $x0103 104    ; CHECK-LABEL: name: icmp105    ; CHECK: liveins: $w0, $x0106    ; CHECK-NEXT: {{  $}}107    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0108    ; CHECK-NEXT: [[SUBSWrr:%[0-9]+]]:gpr32 = SUBSWrr [[COPY]], [[COPY]], implicit-def $nzcv109    ; CHECK-NEXT: [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 1, implicit $nzcv110    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[CSINCWr]]111    ; CHECK-NEXT: $w0 = COPY [[COPY1]]112    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x0113    ; CHECK-NEXT: [[SUBSXrr:%[0-9]+]]:gpr64 = SUBSXrr [[COPY2]], [[COPY2]], implicit-def $nzcv114    ; CHECK-NEXT: [[CSINCWr1:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 3, implicit $nzcv115    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32all = COPY [[CSINCWr1]]116    ; CHECK-NEXT: $w0 = COPY [[COPY3]]117    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64 = COPY $x0118    ; CHECK-NEXT: [[SUBSXrr1:%[0-9]+]]:gpr64 = SUBSXrr [[COPY4]], [[COPY4]], implicit-def $nzcv119    ; CHECK-NEXT: [[CSINCWr2:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 0, implicit $nzcv120    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr32all = COPY [[CSINCWr2]]121    ; CHECK-NEXT: $w0 = COPY [[COPY5]]122    %0:gpr(s32) = COPY $w0123    %1:gpr(s32) = G_ICMP intpred(eq), %0, %0124    %6:gpr(s8) = G_TRUNC %1(s32)125    %9:gpr(s32) = G_ANYEXT %6126    $w0 = COPY %9(s32)127 128    %2:gpr(s64) = COPY $x0129    %3:gpr(s32) = G_ICMP intpred(uge), %2, %2130    %7:gpr(s8) = G_TRUNC %3(s32)131    %10:gpr(s32) = G_ANYEXT %7132    $w0 = COPY %10(s32)133 134    %4:gpr(p0) = COPY $x0135    %5:gpr(s32) = G_ICMP intpred(ne), %4, %4136    %8:gpr(s8) = G_TRUNC %5(s32)137    %11:gpr(s32) = G_ANYEXT %8138    $w0 = COPY %11(s32)139...140 141---142name:            fcmp143legalized:       true144regBankSelected: true145body:             |146  bb.0:147    liveins: $w0, $x0148 149    ; CHECK-LABEL: name: fcmp150    ; CHECK: liveins: $w0, $x0151    ; CHECK-NEXT: {{  $}}152    ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr32 = COPY $s0153    ; CHECK-NEXT: nofpexcept FCMPSrr [[COPY]], [[COPY]], implicit-def $nzcv, implicit $fpcr154    ; CHECK-NEXT: [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 5, implicit $nzcv155    ; CHECK-NEXT: [[CSINCWr1:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 13, implicit $nzcv156    ; CHECK-NEXT: [[ORRWrr:%[0-9]+]]:gpr32 = ORRWrr [[CSINCWr]], [[CSINCWr1]]157    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[ORRWrr]]158    ; CHECK-NEXT: $w0 = COPY [[COPY1]]159    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr64 = COPY $d0160    ; CHECK-NEXT: nofpexcept FCMPDrr [[COPY2]], [[COPY2]], implicit-def $nzcv, implicit $fpcr161    ; CHECK-NEXT: [[CSINCWr2:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 4, implicit $nzcv162    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr32all = COPY [[CSINCWr2]]163    ; CHECK-NEXT: $w0 = COPY [[COPY3]]164    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:fpr32 = COPY $s0165    ; CHECK-NEXT: nofpexcept FCMPSrr [[COPY4]], [[COPY4]], implicit-def $nzcv, implicit $fpcr166    ; CHECK-NEXT: [[CSINCWr3:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 15, implicit $nzcv167    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr32all = COPY [[CSINCWr3]]168    ; CHECK-NEXT: $w0 = COPY [[COPY5]]169    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:fpr64 = COPY $d0170    ; CHECK-NEXT: nofpexcept FCMPDrr [[COPY6]], [[COPY6]], implicit-def $nzcv, implicit $fpcr171    ; CHECK-NEXT: [[CSINCWr4:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 14, implicit $nzcv172    ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr32all = COPY [[CSINCWr4]]173    ; CHECK-NEXT: $w0 = COPY [[COPY7]]174    %0:fpr(s32) = COPY $s0175    %1:gpr(s32) = G_FCMP floatpred(one), %0, %0176    %2:gpr(s8) = G_TRUNC %1(s32)177    %3:gpr(s32) = G_ANYEXT %2178    $w0 = COPY %3(s32)179 180    %4:fpr(s64) = COPY $d0181    %5:gpr(s32) = G_FCMP floatpred(uge), %4, %4182    %6:gpr(s8) = G_TRUNC %5(s32)183    %7:gpr(s32) = G_ANYEXT %6184    $w0 = COPY %7(s32)185 186    %8:fpr(s32) = COPY $s0187    %9:gpr(s32) = G_FCMP floatpred(true), %8, %8188    %10:gpr(s8) = G_TRUNC %9(s32)189    %11:gpr(s32) = G_ANYEXT %10190    $w0 = COPY %11(s32)191 192    %12:fpr(s64) = COPY $d0193    %13:gpr(s32) = G_FCMP floatpred(false), %12, %12194    %14:gpr(s8) = G_TRUNC %13(s32)195    %15:gpr(s32) = G_ANYEXT %14196    $w0 = COPY %15(s32)197 198...199 200---201name:            phi202legalized:       true203regBankSelected: true204tracksRegLiveness: true205body:             |206  ; CHECK-LABEL: name: phi207  ; CHECK: bb.0:208  ; CHECK-NEXT:   successors: %bb.1(0x80000000)209  ; CHECK-NEXT:   liveins: $s0, $w0210  ; CHECK-NEXT: {{  $}}211  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:fpr32 = COPY $s0212  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr32 = COPY $w0213  ; CHECK-NEXT: {{  $}}214  ; CHECK-NEXT: bb.1:215  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)216  ; CHECK-NEXT: {{  $}}217  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:fpr32 = PHI [[COPY]], %bb.0, [[PHI]], %bb.1218  ; CHECK-NEXT:   TBNZW [[COPY1]], 0, %bb.1219  ; CHECK-NEXT: {{  $}}220  ; CHECK-NEXT: bb.2:221  ; CHECK-NEXT:   $s0 = COPY [[PHI]]222  ; CHECK-NEXT:   RET_ReallyLR implicit $s0223  bb.0:224    liveins: $s0, $w0225    successors: %bb.1226    %0:fpr(s32) = COPY $s0227    %3:gpr(s32) = COPY $w0228 229  bb.1:230    successors: %bb.1, %bb.2231    %2:fpr(s32) = PHI %0, %bb.0, %2, %bb.1232    G_BRCOND %3, %bb.1233 234  bb.2:235    $s0 = COPY %2236    RET_ReallyLR implicit $s0237...238 239---240name:            select241legalized:       true242regBankSelected: true243tracksRegLiveness: true244body:             |245  bb.0:246    liveins: $w0, $w1, $w2247    ; CHECK-LABEL: name: select248    ; CHECK: liveins: $w0, $w1, $w2249    ; CHECK-NEXT: {{  $}}250    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w0251    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w1252    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $w2253    ; CHECK-NEXT: [[ANDSWri:%[0-9]+]]:gpr32 = ANDSWri [[COPY]], 0, implicit-def $nzcv254    ; CHECK-NEXT: [[CSELWr:%[0-9]+]]:gpr32 = CSELWr [[COPY1]], [[COPY2]], 1, implicit $nzcv255    ; CHECK-NEXT: $w0 = COPY [[CSELWr]]256    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64 = COPY $x0257    ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64 = COPY $x1258    ; CHECK-NEXT: [[ANDSWri1:%[0-9]+]]:gpr32 = ANDSWri [[COPY]], 0, implicit-def $nzcv259    ; CHECK-NEXT: [[CSELXr:%[0-9]+]]:gpr64 = CSELXr [[COPY3]], [[COPY4]], 1, implicit $nzcv260    ; CHECK-NEXT: $x0 = COPY [[CSELXr]]261    ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr64 = COPY $x0262    ; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr64 = COPY $x1263    ; CHECK-NEXT: [[ANDSWri2:%[0-9]+]]:gpr32 = ANDSWri [[COPY]], 0, implicit-def $nzcv264    ; CHECK-NEXT: [[CSELXr1:%[0-9]+]]:gpr64 = CSELXr [[COPY5]], [[COPY6]], 1, implicit $nzcv265    ; CHECK-NEXT: $x0 = COPY [[CSELXr1]]266    %10:gpr(s32) = COPY $w0267 268    %1:gpr(s32) = COPY $w1269    %2:gpr(s32) = COPY $w2270    %3:gpr(s32) = G_SELECT %10, %1, %2271    $w0 = COPY %3(s32)272 273    %4:gpr(s64) = COPY $x0274    %5:gpr(s64) = COPY $x1275    %6:gpr(s64) = G_SELECT %10, %4, %5276    $x0 = COPY %6(s64)277 278    %7:gpr(p0) = COPY $x0279    %8:gpr(p0) = COPY $x1280    %9:gpr(p0) = G_SELECT %10, %7, %8281    $x0 = COPY %9(p0)282...283