# 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 (s32) 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
    }

...
