brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · 7faab8c Raw
144 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -run-pass=regallocfast,prologepilog -simplify-mir -o - %s | FileCheck %s3 4# This test checks that the MIRParser correctly clobbers the registers5# that are not preserved by the unwinder (when the MIR contains an EH pad).6--- |7  ; ModuleID = '<stdin>'8  source_filename = "<stdin>"9  target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"10  target triple = "aarch64-unknown-linux-gnu"11 12  define aarch64_vector_pcs <4 x i32> @invoke_callee_may_throw_neon(<4 x i32> %v) personality i8 0 {13    %result = invoke aarch64_vector_pcs <4 x i32> @may_throw_neon(<4 x i32> %v)14            to label %.Lcontinue unwind label %.Lunwind15 16  .Lcontinue:                                       ; preds = %017    ret <4 x i32> %result18 19  .Lunwind:                                         ; preds = %020    %lp = landingpad { ptr, i32 }21            cleanup22    ret <4 x i32> %v23  }24 25  declare aarch64_vector_pcs <4 x i32> @may_throw_neon(<4 x i32>)26 27...28---29name:            invoke_callee_may_throw_neon30alignment:       431legalized:       true32regBankSelected: true33selected:        true34tracksRegLiveness: true35registers:36  - { id: 0, class: fpr128 }37  - { id: 1, class: fpr128 }38  - { id: 2, class: _ }39  - { id: 3, class: _ }40  - { id: 4, class: _ }41  - { id: 5, class: _ }42liveins:43  - { reg: '$q0' }44frameInfo:45  maxAlignment:    146  adjustsStack:    true47  hasCalls:        true48  maxCallFrameSize: 049machineFunctionInfo: {}50body:             |51  ; CHECK-LABEL: name: invoke_callee_may_throw_neon52  ; CHECK: bb.0 (%ir-block.0):53  ; CHECK:   successors: %bb.1, %bb.254  ; CHECK:   liveins: $q0, $q22, $q23, $q20, $q21, $q18, $q19, $q16, $q17, $q14, $q15, $q12, $q13, $q10, $q11, $q8, $q9, $lr, $fp55  ; CHECK:   $sp = frame-setup SUBXri $sp, 304, 056  ; CHECK:   frame-setup STPQi killed $q23, killed $q22, $sp, 2 :: (store (s128) into %stack.19), (store (s128) into %stack.18)57  ; CHECK:   frame-setup STPQi killed $q21, killed $q20, $sp, 4 :: (store (s128) into %stack.17), (store (s128) into %stack.16)58  ; CHECK:   frame-setup STPQi killed $q19, killed $q18, $sp, 6 :: (store (s128) into %stack.15), (store (s128) into %stack.14)59  ; CHECK:   frame-setup STPQi killed $q17, killed $q16, $sp, 8 :: (store (s128) into %stack.13), (store (s128) into %stack.12)60  ; CHECK:   frame-setup STPQi killed $q15, killed $q14, $sp, 10 :: (store (s128) into %stack.11), (store (s128) into %stack.10)61  ; CHECK:   frame-setup STPQi killed $q13, killed $q12, $sp, 12 :: (store (s128) into %stack.9), (store (s128) into %stack.8)62  ; CHECK:   frame-setup STPQi killed $q11, killed $q10, $sp, 14 :: (store (s128) into %stack.7), (store (s128) into %stack.6)63  ; CHECK:   frame-setup STPQi killed $q9, killed $q8, $sp, 16 :: (store (s128) into %stack.5), (store (s128) into %stack.4)64  ; CHECK:   frame-setup STPXi killed $fp, killed $lr, $sp, 36 :: (store (s64) into %stack.3), (store (s64) into %stack.2)65  ; CHECK:   frame-setup CFI_INSTRUCTION def_cfa_offset 30466  ; CHECK:   frame-setup CFI_INSTRUCTION offset $w30, -867  ; CHECK:   frame-setup CFI_INSTRUCTION offset $w29, -1668  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b8, -3269  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b9, -4870  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b10, -6471  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b11, -8072  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b12, -9673  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b13, -11274  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b14, -12875  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b15, -14476  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b16, -16077  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b17, -17678  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b18, -19279  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b19, -20880  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b20, -22481  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b21, -24082  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b22, -25683  ; CHECK:   frame-setup CFI_INSTRUCTION offset $b23, -27284  ; CHECK:   STRQui $q0, $sp, 0 :: (store (s128) into %stack.1)85  ; CHECK:   EH_LABEL <mcsymbol .Ltmp0>86  ; CHECK:   BL @may_throw_neon, csr_aarch64_aavpcs, implicit-def dead $lr, implicit $sp, implicit killed $q0, implicit-def $q087  ; CHECK:   STRQui killed $q0, $sp, 1 :: (store (s128) into %stack.0)88  ; CHECK:   EH_LABEL <mcsymbol .Ltmp1>89  ; CHECK:   B %bb.190  ; CHECK: bb.1..Lcontinue:91  ; CHECK:   $q0 = LDRQui $sp, 1 :: (load (s128) from %stack.0)92  ; CHECK:   $fp, $lr = frame-destroy LDPXi $sp, 36 :: (load (s64) from %stack.3), (load (s64) from %stack.2)93  ; CHECK:   $q9, $q8 = frame-destroy LDPQi $sp, 16 :: (load (s128) from %stack.5), (load (s128) from %stack.4)94  ; CHECK:   $q11, $q10 = frame-destroy LDPQi $sp, 14 :: (load (s128) from %stack.7), (load (s128) from %stack.6)95  ; CHECK:   $q13, $q12 = frame-destroy LDPQi $sp, 12 :: (load (s128) from %stack.9), (load (s128) from %stack.8)96  ; CHECK:   $q15, $q14 = frame-destroy LDPQi $sp, 10 :: (load (s128) from %stack.11), (load (s128) from %stack.10)97  ; CHECK:   $q17, $q16 = frame-destroy LDPQi $sp, 8 :: (load (s128) from %stack.13), (load (s128) from %stack.12)98  ; CHECK:   $q19, $q18 = frame-destroy LDPQi $sp, 6 :: (load (s128) from %stack.15), (load (s128) from %stack.14)99  ; CHECK:   $q21, $q20 = frame-destroy LDPQi $sp, 4 :: (load (s128) from %stack.17), (load (s128) from %stack.16)100  ; CHECK:   $q23, $q22 = frame-destroy LDPQi $sp, 2 :: (load (s128) from %stack.19), (load (s128) from %stack.18)101  ; CHECK:   $sp = frame-destroy ADDXri $sp, 304, 0102  ; CHECK:   RET_ReallyLR implicit killed $q0103  ; CHECK: bb.2..Lunwind (landing-pad):104  ; CHECK:   liveins: $x0, $x1105  ; CHECK:   EH_LABEL <mcsymbol .Ltmp2>106  ; CHECK:   $q0 = LDRQui $sp, 0 :: (load (s128) from %stack.1)107  ; CHECK:   $fp, $lr = frame-destroy LDPXi $sp, 36 :: (load (s64) from %stack.3), (load (s64) from %stack.2)108  ; CHECK:   $q9, $q8 = frame-destroy LDPQi $sp, 16 :: (load (s128) from %stack.5), (load (s128) from %stack.4)109  ; CHECK:   $q11, $q10 = frame-destroy LDPQi $sp, 14 :: (load (s128) from %stack.7), (load (s128) from %stack.6)110  ; CHECK:   $q13, $q12 = frame-destroy LDPQi $sp, 12 :: (load (s128) from %stack.9), (load (s128) from %stack.8)111  ; CHECK:   $q15, $q14 = frame-destroy LDPQi $sp, 10 :: (load (s128) from %stack.11), (load (s128) from %stack.10)112  ; CHECK:   $q17, $q16 = frame-destroy LDPQi $sp, 8 :: (load (s128) from %stack.13), (load (s128) from %stack.12)113  ; CHECK:   $q19, $q18 = frame-destroy LDPQi $sp, 6 :: (load (s128) from %stack.15), (load (s128) from %stack.14)114  ; CHECK:   $q21, $q20 = frame-destroy LDPQi $sp, 4 :: (load (s128) from %stack.17), (load (s128) from %stack.16)115  ; CHECK:   $q23, $q22 = frame-destroy LDPQi $sp, 2 :: (load (s128) from %stack.19), (load (s128) from %stack.18)116  ; CHECK:   $sp = frame-destroy ADDXri $sp, 304, 0117  ; CHECK:   RET_ReallyLR implicit killed $q0118  bb.0 (%ir-block.0):119    successors: %bb.1, %bb.2120    liveins: $q0121 122    %0:fpr128 = COPY $q0123    EH_LABEL <mcsymbol .Ltmp0>124    ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp125    $q0 = COPY %0126    BL @may_throw_neon, csr_aarch64_aavpcs, implicit-def $lr, implicit $sp, implicit $q0, implicit-def $q0127    %1:fpr128 = COPY $q0128    ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp129    EH_LABEL <mcsymbol .Ltmp1>130    B %bb.1131 132  bb.1..Lcontinue:133    $q0 = COPY %1134    RET_ReallyLR implicit $q0135 136  bb.2..Lunwind (landing-pad):137    liveins: $x0, $x1138 139    EH_LABEL <mcsymbol .Ltmp2>140    $q0 = COPY %0141    RET_ReallyLR implicit $q0142 143...144