brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 6e957bc Raw
163 lines · plain
1# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass machine-outliner -verify-machineinstrs -enable-machine-outliner %s -o - | FileCheck %s2--- |3  ; Function Attrs: minsize4  declare void @foo(i32, i32, i32, i32) #05    6  ; Function Attrs: nounwind7  define void @xray0(i1 %a) #1 {8  entry:9    br i1 %a, label %if.then, label %if.end10  11  if.then:                                          ; preds = %entry12    call void @foo(i32 1, i32 2, i32 3, i32 4)13    br label %if.end14  15  if.end:                                           ; preds = %if.then, %entry16    call void @foo(i32 5, i32 6, i32 7, i32 8)17    ret void18  }19  20  ; Function Attrs: nounwind21  define void @xray1(i1 %a) #1 {22  entry:23    br i1 %a, label %if.then, label %if.end24  25  if.then:                                          ; preds = %entry26    call void @foo(i32 1, i32 2, i32 3, i32 4)27    br label %if.end28  29  if.end:                                           ; preds = %if.then, %entry30    call void @foo(i32 5, i32 6, i32 7, i32 8)31    ret void32  }33  34  attributes #0 = { minsize }35  attributes #1 = { nounwind "function-instrument"="xray-always" }36 37...38---39name:            xray040tracksRegLiveness: true41liveins:42  - { reg: '$w0', virtual-reg: '' }43stack:44  - { id: 0, name: '', type: spill-slot, offset: -16, size: 8, alignment: 16, 45      stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true, 46      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }47machineFunctionInfo:48  hasRedZone:      false49body:             |50  ; CHECK-LABEL: name: xray051  ; CHECK:       bb.0.entry:52  ; CHECK:         PATCHABLE_FUNCTION_ENTER53  ; CHECK:       bb.1.if.then:54  ; CHECK:         BL @[[OUTLINED_FUNCTION:OUTLINED_FUNCTION_[0-9]]]55  ; CHECK:       bb.2.if.end:56  ; CHECK-NEXT:    $w0 = MOVZWi 5, 057  ; CHECK-NEXT:    $w1 = MOVZWi 6, 058  ; CHECK-NEXT:    $w2 = MOVZWi 7, 059  ; CHECK-NEXT:    $w3 = MOVZWi 8, 060  ; CHECK-NEXT:    BL @foo, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit-def $sp61  ; CHECK:         $w0 = MOVZWi 5, 062  ; CHECK-NEXT:    $w1 = MOVZWi 6, 063  ; CHECK-NEXT:    PATCHABLE_FUNCTION_EXIT64  ; CHECK-NEXT:    RET undef $lr65 66  bb.0.entry:67    successors: %bb.1(0x40000000), %bb.2(0x40000000)68    liveins: $w0, $lr69  70    PATCHABLE_FUNCTION_ENTER71    early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.0)72    TBZW killed renamable $w0, 0, %bb.273  74  bb.1.if.then:75    successors: %bb.2(0x80000000)76  77    $w0 = MOVZWi 1, 078    $w1 = MOVZWi 2, 079    $w2 = MOVZWi 3, 080    $w3 = MOVZWi 4, 081    BL @foo, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit-def $sp82  83  bb.2.if.end:84    $w0 = MOVZWi 5, 085    $w1 = MOVZWi 6, 086    $w2 = MOVZWi 7, 087    $w3 = MOVZWi 8, 088    BL @foo, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit-def $sp89    early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.0)90    $w0 = MOVZWi 5, 091    $w1 = MOVZWi 6, 092    PATCHABLE_FUNCTION_EXIT93    RET undef $lr94 95...96---97name:            xray198tracksRegLiveness: true99liveins:100  - { reg: '$w0', virtual-reg: '' }101stack:102  - { id: 0, name: '', type: spill-slot, offset: -16, size: 8, alignment: 16, 103      stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true, 104      debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }105machineFunctionInfo:106  hasRedZone:      false107body:             |108  ; CHECK-LABEL: name: xray1109  ; CHECK:       bb.0.entry:110  ; CHECK:         PATCHABLE_FUNCTION_ENTER111  ; CHECK:       bb.1.if.then:112  ; CHECK:         BL @[[OUTLINED_FUNCTION]]113  ; CHECK:       bb.2.if.end:114  ; CHECK-NEXT:    $w0 = MOVZWi 5, 0115  ; CHECK-NEXT:    $w1 = MOVZWi 6, 0116  ; CHECK-NEXT:    $w2 = MOVZWi 7, 0117  ; CHECK-NEXT:    $w3 = MOVZWi 8, 0118  ; CHECK-NEXT:    BL @foo, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit-def $sp119  ; CHECK:         $w0 = MOVZWi 5, 0120  ; CHECK-NEXT:    $w1 = MOVZWi 6, 0121  ; CHECK-NEXT:    PATCHABLE_FUNCTION_EXIT122  ; CHECK-NEXT:    RET undef $lr123 124  bb.0.entry:125    successors: %bb.1(0x40000000), %bb.2(0x40000000)126    liveins: $w0, $lr127  128    PATCHABLE_FUNCTION_ENTER129    early-clobber $sp = frame-setup STRXpre killed $lr, $sp, -16 :: (store (s64) into %stack.0)130    TBZW killed renamable $w0, 0, %bb.2131  132  bb.1.if.then:133    successors: %bb.2(0x80000000)134  135    $w0 = MOVZWi 1, 0136    $w1 = MOVZWi 2, 0137    $w2 = MOVZWi 3, 0138    $w3 = MOVZWi 4, 0139    BL @foo, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit-def $sp140  141  bb.2.if.end:142    $w0 = MOVZWi 5, 0143    $w1 = MOVZWi 6, 0144    $w2 = MOVZWi 7, 0145    $w3 = MOVZWi 8, 0146    BL @foo, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $w0, implicit killed $w1, implicit killed $w2, implicit killed $w3, implicit-def $sp147    early-clobber $sp, $lr = frame-destroy LDRXpost $sp, 16 :: (load (s64) from %stack.0)148    $w0 = MOVZWi 5, 0149    $w1 = MOVZWi 6, 0150    PATCHABLE_FUNCTION_EXIT151    RET undef $lr152 153  ; CHECK: name: [[OUTLINED_FUNCTION]]154  ; CHECK:     bb.0:155  ; CHECK:       $w0 = MOVZWi 1, 0156  ; CHECK-NEXT:  $w1 = MOVZWi 2, 0157  ; CHECK-NEXT:  $w2 = MOVZWi 3, 0158  ; CHECK-NEXT:  $w3 = MOVZWi 4, 0159  ; CHECK-NEXT:  TCRETURNdi @foo, 0, implicit $sp160 161...162 163