brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 3d28909 Raw
190 lines · plain
1# RUN: llc -run-pass=tailduplication -tail-dup-size=4 %s -o - | FileCheck %s2# RUN: llc -passes=tailduplication -tail-dup-size=4 %s -o - | FileCheck %s3 4# JumpTableDest32 uses an `adr` to a temporary label (itself). If duplicated we5# cannot guarantee reachability for any uses after the first.6 7# CHECK: JumpTableDest328# CHECK-NOT: JumpTableDest329 10 11--- |12  ; ModuleID = 'jump-table.ll'13  source_filename = "jump-table.ll"14  target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"15  target triple = "arm64-apple-ios"16  17  define i32 @test_jumptable32(i32 %in, i1 %tst) {18    br i1 %tst, label %true, label %false19  20  true:                                             ; preds = %021    call void @foo()22    br label %switch23  24  false:                                            ; preds = %025    call void @bar()26    br label %switch27  28  lbl1:                                             ; preds = %lbl4, %lbl3, %def, %switch29    %merge = phi i32 [ 1, %switch ], [ 0, %def ], [ 4, %lbl3 ], [ 8, %lbl4 ]30    ret i32 %merge31  32  switch:                                           ; preds = %false, %true33    switch i32 %in, label %def [34      i32 0, label %lbl135      i32 1, label %lbl236      i32 2, label %lbl337      i32 4, label %lbl438    ]39  40  def:                                              ; preds = %switch41    br label %lbl142  43  lbl2:                                             ; preds = %switch44    %1 = call i64 @llvm.aarch64.space(i32 262144, i64 undef)45    ret i32 246  47  lbl3:                                             ; preds = %switch48    br label %lbl149  50  lbl4:                                             ; preds = %switch51    br label %lbl152  }53  54  declare void @foo()55  56  declare void @bar()57  58  ; Function Attrs: nounwind59  declare i64 @llvm.aarch64.space(i32, i64) #060  61  attributes #0 = { nounwind }62 63...64---65name:            test_jumptable3266alignment:       467exposesReturnsTwice: false68legalized:       false69regBankSelected: false70selected:        false71failedISel:      false72tracksRegLiveness: true73hasWinCFI:       false74registers:       []75liveins:76  - { reg: '$w0', virtual-reg: '' }77  - { reg: '$w1', virtual-reg: '' }78frameInfo:79  isFrameAddressTaken: false80  isReturnAddressTaken: false81  hasStackMap:     false82  hasPatchPoint:   false83  stackSize:       3284  offsetAdjustment: 085  maxAlignment:    886  adjustsStack:    true87  hasCalls:        true88  stackProtector:  ''89  maxCallFrameSize: 090  cvBytesOfCalleeSavedRegisters: 091  hasOpaqueSPAdjustment: false92  hasVAStart:      false93  hasMustTailInVarArgFunc: false94  localFrameSize:  095  savePoint:       []96  restorePoint:    []97fixedStack:      []98stack:99  - { id: 0, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, 100      stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true, 101      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }102  - { id: 1, name: '', type: spill-slot, offset: -16, size: 8, alignment: 8, 103      stack-id: default, callee-saved-register: '$fp', callee-saved-restored: true, 104      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }105  - { id: 2, name: '', type: spill-slot, offset: -24, size: 8, alignment: 8, 106      stack-id: default, callee-saved-register: '$x19', callee-saved-restored: true, 107      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }108  - { id: 3, name: '', type: spill-slot, offset: -32, size: 8, alignment: 8, 109      stack-id: default, callee-saved-register: '$x20', callee-saved-restored: true, 110      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }111callSites:       []112constants:       []113machineFunctionInfo:114  hasRedZone:      false115jumpTable:116  kind:            label-difference32117  entries:118    - id:              0119      blocks:          [ '%bb.9', '%bb.6', '%bb.7', '%bb.5', '%bb.8' ]120body:             |121  bb.0 (%ir-block.0):122    successors: %bb.1(0x40000000), %bb.2(0x40000000)123    liveins: $w0, $w1, $x19, $x20, $lr124  125    early-clobber $sp = frame-setup STPXpre killed $x20, killed $x19, $sp, -4 :: (store (s64) into %stack.3), (store (s64) into %stack.2)126    frame-setup STPXi killed $fp, killed $lr, $sp, 2 :: (store (s64) into %stack.1), (store (s64) into %stack.0)127    frame-setup CFI_INSTRUCTION def_cfa_offset 32128    frame-setup CFI_INSTRUCTION offset $w30, -8129    frame-setup CFI_INSTRUCTION offset $w29, -16130    frame-setup CFI_INSTRUCTION offset $w19, -24131    frame-setup CFI_INSTRUCTION offset $w20, -32132    renamable $w19 = COPY $w0133    TBZW killed renamable $w1, 0, %bb.2134  135  bb.1.true:136    successors: %bb.3(0x80000000)137    liveins: $w19138  139    BL @foo, csr_darwin_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp140    B %bb.3141  142  bb.2.false:143    successors: %bb.3(0x80000000)144    liveins: $w19145  146    BL @bar, csr_darwin_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit-def $sp147    B %bb.3148  149  bb.3.switch:150    successors: %bb.9(0x1c71c71c), %bb.6(0x1c71c71c), %bb.7(0x1c71c71c), %bb.5(0x0e38e38e), %bb.8(0x1c71c71c)151    liveins: $w19152  153    renamable $w8 = ORRWrs $wzr, killed renamable $w19, 0, implicit-def $x8154    renamable $x9 = MOVaddrJT target-flags(aarch64-page) %jump-table.0, target-flags(aarch64-pageoff, aarch64-nc) %jump-table.0155    early-clobber renamable $x10, dead early-clobber renamable $x11 = JumpTableDest32 killed renamable $x9, killed renamable $x8, %jump-table.0156    BR killed renamable $x10157  158  bb.5.def:159    successors: %bb.9(0x80000000)160  161    renamable $w0 = COPY $wzr162    B %bb.9163  164  bb.6.lbl2:165    successors: %bb.9(0x80000000)166  167    dead $xzr = SPACE 262144, undef renamable $x8168    $w0 = MOVi32imm 2169    B %bb.9170  171  bb.7.lbl3:172    successors: %bb.9(0x80000000)173  174    renamable $w0 = MOVi32imm 4175    B %bb.9176  177  bb.8.lbl4:178    successors: %bb.9(0x80000000)179  180    renamable $w0 = MOVi32imm 8181  182  bb.9.lbl1:183    liveins: $w0184  185    $fp, $lr = frame-destroy LDPXi $sp, 2 :: (load (s64) from %stack.1), (load (s64) from %stack.0)186    early-clobber $sp, $x20, $x19 = frame-destroy LDPXpost $sp, 4 :: (load (s64) from %stack.3), (load (s64) from %stack.2)187    RET_ReallyLR implicit $w0188 189...190