1*80df56e0SMark Goncharov; RUN: llc < %s -verify-machineinstrs -enable-machine-outliner | FileCheck %s 2*80df56e0SMark Goncharov 3*80df56e0SMark Goncharovtarget triple = "riscv64-unknown-linux-gnu" 4*80df56e0SMark Goncharov 5*80df56e0SMark Goncharovdeclare void @foo(i32, i32, i32, i32) minsize 6*80df56e0SMark Goncharov 7*80df56e0SMark Goncharovdefine void @fentry0(i1 %a) nounwind { 8*80df56e0SMark Goncharov; CHECK-LABEL: fentry0: 9*80df56e0SMark Goncharov; CHECK: # %bb.1: 10*80df56e0SMark Goncharov; CHECK-NEXT: call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]] 11*80df56e0SMark Goncharov; CHECK-NEXT: call foo 12*80df56e0SMark Goncharov; CHECK-LABEL: .LBB0_2: 13*80df56e0SMark Goncharov; CHECK-NEXT: tail OUTLINED_FUNCTION_[[BB2:[0-9]+]] 14*80df56e0SMark Goncharoventry: 15*80df56e0SMark Goncharov br i1 %a, label %if.then, label %if.end 16*80df56e0SMark Goncharovif.then: 17*80df56e0SMark Goncharov call void @foo(i32 1, i32 2, i32 3, i32 4) 18*80df56e0SMark Goncharov br label %if.end 19*80df56e0SMark Goncharovif.end: 20*80df56e0SMark Goncharov call void @foo(i32 5, i32 6, i32 7, i32 8) 21*80df56e0SMark Goncharov ret void 22*80df56e0SMark Goncharov} 23*80df56e0SMark Goncharov 24*80df56e0SMark Goncharovdefine void @fentry1(i1 %a) nounwind { 25*80df56e0SMark Goncharov; CHECK-LABEL: fentry1: 26*80df56e0SMark Goncharov; CHECK: # %bb.1: 27*80df56e0SMark Goncharov; CHECK-NEXT: call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]] 28*80df56e0SMark Goncharov; CHECK-NEXT: call foo 29*80df56e0SMark Goncharov; CHECK-LABEL: .LBB1_2: 30*80df56e0SMark Goncharov; CHECK-NEXT: tail OUTLINED_FUNCTION_[[BB2:[0-9]+]] 31*80df56e0SMark Goncharoventry: 32*80df56e0SMark Goncharov br i1 %a, label %if.then, label %if.end 33*80df56e0SMark Goncharovif.then: 34*80df56e0SMark Goncharov call void @foo(i32 1, i32 2, i32 3, i32 4) 35*80df56e0SMark Goncharov br label %if.end 36*80df56e0SMark Goncharovif.end: 37*80df56e0SMark Goncharov call void @foo(i32 5, i32 6, i32 7, i32 8) 38*80df56e0SMark Goncharov ret void 39*80df56e0SMark Goncharov} 40*80df56e0SMark Goncharov 41*80df56e0SMark Goncharovdefine void @fentry2(i1 %a) nounwind { 42*80df56e0SMark Goncharov; CHECK-LABEL: fentry2: 43*80df56e0SMark Goncharov; CHECK: # %bb.1: 44*80df56e0SMark Goncharov; CHECK-NEXT: call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]] 45*80df56e0SMark Goncharov; CHECK-NEXT: call foo 46*80df56e0SMark Goncharov; CHECK-LABEL: .LBB2_2: 47*80df56e0SMark Goncharov; CHECK-NEXT: tail OUTLINED_FUNCTION_[[BB2:[0-9]+]] 48*80df56e0SMark Goncharoventry: 49*80df56e0SMark Goncharov br i1 %a, label %if.then, label %if.end 50*80df56e0SMark Goncharovif.then: 51*80df56e0SMark Goncharov call void @foo(i32 1, i32 2, i32 3, i32 4) 52*80df56e0SMark Goncharov br label %if.end 53*80df56e0SMark Goncharovif.end: 54*80df56e0SMark Goncharov call void @foo(i32 5, i32 6, i32 7, i32 8) 55*80df56e0SMark Goncharov ret void 56*80df56e0SMark Goncharov} 57*80df56e0SMark Goncharov 58*80df56e0SMark Goncharov; CHECK: OUTLINED_FUNCTION_[[BB2]]: 59*80df56e0SMark Goncharov; CHECK: li a0, 5 60*80df56e0SMark Goncharov; CHECK-NEXT: li a1, 6 61*80df56e0SMark Goncharov; CHECK-NEXT: li a2, 7 62*80df56e0SMark Goncharov; CHECK-NEXT: li a3, 8 63*80df56e0SMark Goncharov; CHECK-NEXT: call foo 64*80df56e0SMark Goncharov 65*80df56e0SMark Goncharov; CHECK: OUTLINED_FUNCTION_[[BB1]]: 66*80df56e0SMark Goncharov; CHECK: li a0, 1 67*80df56e0SMark Goncharov; CHECK-NEXT: li a1, 2 68*80df56e0SMark Goncharov; CHECK-NEXT: li a2, 3 69*80df56e0SMark Goncharov; CHECK-NEXT: li a3, 4 70*80df56e0SMark Goncharov; CHECK-NEXT: jr t0 71