| # We do not support the call site info for the target now, so we use the experimental option (-emit-call-site-info -debug-entry-values). |
| |
| # RUN: llc -emit-call-site-info -debug-entry-values -run-pass=none -verify-machineinstrs -o - %s | FileCheck %s |
| |
| # Verify that it is possible to read and write MIR where a callSites entry |
| # points to a call residing in a bundle. The offset should point to the call |
| # instruction, rather than the bundle head. |
| |
| # CHECK: name: caller |
| # CHECK: callSites: |
| # CHECK-NEXT: bb: 0, offset: 3, fwdArgRegs: |
| # CHECK-NEXT: arg: 0, reg: '$r0' |
| |
| # XXX: Please note that at the time of creating this test the Hexagon target |
| # did not support call site information, so the "callSites" array has been |
| # manually added. |
| |
| --- | |
| target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048" |
| target triple = "hexagon" |
| |
| define i32 @caller() { |
| entry: |
| tail call void @callee(i32 12345) |
| ret i32 0 |
| } |
| |
| declare void @callee(i32) |
| |
| ... |
| --- |
| name: caller |
| tracksRegLiveness: true |
| callSites: |
| - { bb: 0, offset: 3, fwdArgRegs: |
| - { arg: 0, reg: '$r0' } } |
| body: | |
| bb.0.entry: |
| BUNDLE implicit-def $r29, implicit-def $r30, implicit-def dead $r0, implicit-def dead $pc, implicit-def dead $r31, implicit $r29, implicit killed $framekey, implicit killed $framelimit, implicit killed $r30, implicit killed $r31 { |
| $r29 = S2_allocframe $r29, 0, implicit-def $r30, implicit killed $framekey, implicit killed $framelimit, implicit killed $r30, implicit killed $r31 :: (store 4 into stack) |
| $r0 = A2_tfrsi 12345 |
| J2_call @callee, hexagoncsr, implicit-def dead $pc, implicit-def dead $r31, implicit internal killed $r29, implicit internal killed $r0, implicit-def $r29 |
| } |
| BUNDLE implicit-def dead $r0, implicit-def $d15, implicit-def $r30, implicit-def $r31, implicit-def $pc, implicit-def $r29, implicit killed $r30, implicit killed $framekey { |
| $r0 = A2_tfrsi 0 |
| $d15 = L4_return killed $r30, implicit-def $pc, implicit-def $r29, implicit killed $framekey, implicit-def dead $pc, implicit internal killed $r0 |
| } |
| |
| ... |