brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 4a54a72 Raw
94 lines · plain
1; RUN: llc < %s -verify-machineinstrs -enable-machine-outliner | FileCheck %s2 3target triple = "riscv64-unknown-linux-gnu"4 5declare void @foo(i32, i32, i32, i32) minsize6 7;; TargetOpcode::FENTRY_CALL at the start of the function expands to a __fentry__8;; call which must be present. Don't outline it.9define void @fentry0(i1 %a) nounwind "fentry-call"="true" {10; CHECK-LABEL: fentry0:11; CHECK-NEXT:  # %bb.0:12; CHECK-NEXT:    # FEntry call13; CHECK:       # %bb.1:14; CHECK-NEXT:    call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]]15; CHECK-NEXT:    call foo16; CHECK-LABEL: .LBB0_2:17; CHECK-NEXT:    call	t0, OUTLINED_FUNCTION_[[BB2:[0-9]+]]18; CHECK-NEXT:    call	foo19entry:20  br i1 %a, label %if.then, label %if.end21if.then:22  call void @foo(i32 1, i32 2, i32 3, i32 4)23  br label %if.end24if.end:25  call void @foo(i32 5, i32 6, i32 7, i32 8)26  ret void27}28 29define void @fentry1(i1 %a) nounwind "fentry-call"="true" {30; CHECK-LABEL: fentry1:31; CHECK-NEXT:  # %bb.0:32; CHECK-NEXT:    # FEntry call33; CHECK:       # %bb.1:34; CHECK-NEXT:    call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]]35; CHECK-NEXT:    call foo36; CHECK-LABEL: .LBB1_2:37; CHECK-NEXT:    call	t0, OUTLINED_FUNCTION_[[BB2:[0-9]+]]38; CHECK-NEXT:    call	foo39entry:40  br i1 %a, label %if.then, label %if.end41if.then:42  call void @foo(i32 1, i32 2, i32 3, i32 4)43  br label %if.end44if.end:45  call void @foo(i32 5, i32 6, i32 7, i32 8)46  ret void47}48 49;; TargetOpcode::PATCHABLE_FUNCTION_ENTER at the start of the function expands to50;; NOPs which must be present. Don't outline them.51define void @patchable0(i1 %a) nounwind "patchable-function-entry"="2" {52; CHECK-LABEL: patchable0:53; CHECK-NEXT:  .Lfunc_begin0:54; CHECK-NEXT:  # %bb.0:55; CHECK-NEXT:    nop56; CHECK-NEXT:    nop57; CHECK:       # %bb.1:58; CHECK-NEXT:    call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]]59; CHECK-NEXT:    call foo60; CHECK-LABEL: .LBB2_2:61; CHECK-NEXT:    call	t0, OUTLINED_FUNCTION_[[BB2:[0-9]+]]62; CHECK-NEXT:    call	foo63entry:64  br i1 %a, label %if.then, label %if.end65if.then:66  call void @foo(i32 1, i32 2, i32 3, i32 4)67  br label %if.end68if.end:69  call void @foo(i32 5, i32 6, i32 7, i32 8)70  ret void71}72 73define void @patchable1(i1 %a) nounwind "patchable-function-entry"="2" {74; CHECK-LABEL: patchable1:75; CHECK-NEXT:  .Lfunc_begin1:76; CHECK-NEXT:  # %bb.0:77; CHECK-NEXT:    nop78; CHECK-NEXT:    nop79; CHECK:       # %bb.1:80; CHECK-NEXT:    call t0, OUTLINED_FUNCTION_[[BB1:[0-9]+]]81; CHECK-NEXT:    call foo82; CHECK-LABEL: .LBB3_2:83; CHECK-NEXT:    call	t0, OUTLINED_FUNCTION_[[BB2:[0-9]+]]84; CHECK-NEXT:    call	foo85entry:86  br i1 %a, label %if.then, label %if.end87if.then:88  call void @foo(i32 1, i32 2, i32 3, i32 4)89  br label %if.end90if.end:91  call void @foo(i32 5, i32 6, i32 7, i32 8)92  ret void93}94