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