; RUN: llc < %s -verify-machineinstrs -enable-machine-outliner | FileCheck %s

target triple = "aarch64-unknown-linux-gnu"

declare void @foo(i32, i32, i32, i32) minsize

;; TargetOpcode::FENTRY_CALL at the start of the function expands to a __fentry__
;; call which must be present. Don't outline it.
define void @fentry0(i1 %a) nounwind "fentry-call"="true" {
; CHECK-LABEL: fentry0:
; CHECK-NEXT:  // %bb.0:
; CHECK-NEXT:    # FEntry call
; CHECK:       // %bb.1:
; CHECK-NEXT:    bl [[OUTLINED_FUNCTION:OUTLINED_FUNCTION_[0-9]+]]
entry:
  br i1 %a, label %if.then, label %if.end
if.then:
  call void @foo(i32 1, i32 2, i32 3, i32 4)
  br label %if.end
if.end:
  call void @foo(i32 5, i32 6, i32 7, i32 8)
  ret void
}

define void @fentry1(i1 %a) nounwind "fentry-call"="true" {
; CHECK-LABEL: fentry1:
; CHECK-NEXT:  // %bb.0:
; CHECK-NEXT:    # FEntry call
; CHECK:       // %bb.1:
; CHECK-NEXT:    bl [[OUTLINED_FUNCTION]]
entry:
  br i1 %a, label %if.then, label %if.end
if.then:
  call void @foo(i32 1, i32 2, i32 3, i32 4)
  br label %if.end
if.end:
  call void @foo(i32 5, i32 6, i32 7, i32 8)
  ret void
}

;; TargetOpcode::PATCHABLE_FUNCTION_ENTER at the start of the function expands to
;; NOPs which must be present. Don't outline them.
define void @patchable0(i1 %a) nounwind "patchable-function-entry"="2" {
; CHECK-LABEL: patchable0:
; CHECK-NEXT:  .Lfunc_begin0:
; CHECK-NEXT:  // %bb.0:
; CHECK-NEXT:    nop
; CHECK-NEXT:    nop
; CHECK:       // %bb.1:
; CHECK-NEXT:    bl [[OUTLINED_FUNCTION]]
entry:
  br i1 %a, label %if.then, label %if.end
if.then:
  call void @foo(i32 1, i32 2, i32 3, i32 4)
  br label %if.end
if.end:
  call void @foo(i32 5, i32 6, i32 7, i32 8)
  ret void
}

define void @patchable1(i1 %a) nounwind "patchable-function-entry"="2" {
; CHECK-LABEL: patchable1:
; CHECK-NEXT:  .Lfunc_begin1:
; CHECK-NEXT:  // %bb.0:
; CHECK-NEXT:    nop
; CHECK-NEXT:    nop
; CHECK:       // %bb.1:
; CHECK-NEXT:    bl [[OUTLINED_FUNCTION]]
entry:
  br i1 %a, label %if.then, label %if.end
if.then:
  call void @foo(i32 1, i32 2, i32 3, i32 4)
  br label %if.end
if.end:
  call void @foo(i32 5, i32 6, i32 7, i32 8)
  ret void
}

;; Similar to "patchable-function-entry".
define void @xray0(i1 %a) nounwind "function-instrument"="xray-always" {
; CHECK-LABEL: xray0:
; CHECK-NEXT:  .Lfunc_begin2:
; CHECK-NEXT:  // %bb.0:
; CHECK-NEXT:  .p2align 2
; CHECK-NEXT:  .Lxray_sled_0:
; CHECK:       // %bb.1:
; CHECK-NEXT:    bl [[OUTLINED_FUNCTION]]
entry:
  br i1 %a, label %if.then, label %if.end
if.then:
  call void @foo(i32 1, i32 2, i32 3, i32 4)
  br label %if.end
if.end:
  call void @foo(i32 5, i32 6, i32 7, i32 8)
  ret void
}

define void @xray1(i1 %a) nounwind "function-instrument"="xray-always" {
; CHECK-LABEL: xray1:
; CHECK-NEXT:  .Lfunc_begin3:
; CHECK-NEXT:  // %bb.0:
; CHECK-NEXT:  .p2align 2
; CHECK-NEXT:  .Lxray_sled_2:
; CHECK:       // %bb.1:
; CHECK-NEXT:    bl [[OUTLINED_FUNCTION]]
entry:
  br i1 %a, label %if.then, label %if.end
if.then:
  call void @foo(i32 1, i32 2, i32 3, i32 4)
  br label %if.end
if.end:
  call void @foo(i32 5, i32 6, i32 7, i32 8)
  ret void
}

;; Make sure that OUTLINED_FUNCTION contains the right instructions
; CHECK: [[OUTLINED_FUNCTION]]:
; CHECK-NEXT:  // %bb.0:
; CHECK-NEXT:    mov     w0, #1
; CHECK-NEXT:    mov     w1, #2
; CHECK-NEXT:    mov     w2, #3
; CHECK-NEXT:    mov     w3, #4
; CHECK-NEXT:    b       foo
