1# RUN: llc -mtriple=aarch64-apple-darwin -run-pass=prologepilog \ 2# RUN: -run-pass=machine-outliner %s -pass-remarks-analysis='size-info' \ 3# RUN: -pass-remarks-output=%t.yaml -o /dev/null < %s 2> %t; \ 4# RUN: cat %t %t.yaml | FileCheck %s 5 6# Ensure that the MachineOutliner produces codegen size remarks. Make sure... 7# - Functions that are outlined from shrink in the remark (foo) 8# - Outlined functions start with 0 instructions 9# - Outlined functions end with the same number of instructions as the delta 10 11# CHECK: remark: <unknown>:0:0: Machine Outliner: Function: foo: 12# CHECK-SAME: MI instruction count changed from 13# CHECK-SAME: [[FOO1:[1-9][0-9]*]] to [[FOO2:[1-9][0-9]*]]; 14# CHECK-SAME: Delta: [[FOODELTA:-?[1-9][0-9]*]] 15# CHECK-NEXT: remark: <unknown>:0:0: Machine Outliner: 16# CHECK-SAME: Function: OUTLINED_FUNCTION_0: MI instruction count changed from 17# CHECK-SAME: 0 to [[OFUNCSIZE:[1-9][0-9]*]]; Delta: [[OFUNCSIZE]] 18# CHECK-DAG: - Pass: Machine Outliner 19# CHECK-NEXT: - String: ': Function: ' 20# CHECK-NEXT: - Function: foo 21# CHECK-NEXT: - String: ': MI instruction count changed from ' 22# CHECK-NEXT: - MIInstrsBefore: '[[FOO1]]' 23# CHECK-NEXT: - String: ' to ' 24# CHECK-NEXT: - MIInstrsAfter: '[[FOO2]]' 25# CHECK-NEXT: - String: '; Delta: ' 26# CHECK-NEXT: - Delta: '[[FOODELTA]]' 27# CHECK-NEXT:... 28# CHECK-NEXT: --- !Analysis 29# CHECK-NEXT: Pass: size-info 30# CHECK-NEXT: Name: FunctionMISizeChange 31# CHECK-NEXT: Function: OUTLINED_FUNCTION_0 32# CHECK-NEXT: Args: 33# CHECK-NEXT: - Pass: Machine Outliner 34# CHECK-NEXT: - String: ': Function: ' 35# CHECK-NEXT: - Function: OUTLINED_FUNCTION_0 36# CHECK-NEXT: - String: ': MI instruction count changed from ' 37# CHECK-NEXT: - MIInstrsBefore: '0' 38# CHECK-NEXT: - String: ' to ' 39# CHECK-NEXT: - MIInstrsAfter: '[[OFUNCSIZE]]' 40# CHECK-NEXT: - String: '; Delta: ' 41# CHECK-NEXT: - Delta: '[[OFUNCSIZE]]' 42... 43--- | 44 45 define void @foo() #0 { 46 ret void 47 } 48 49 attributes #0 = { minsize noinline noredzone "frame-pointer"="all" } 50... 51--- 52name: foo 53tracksRegLiveness: true 54fixedStack: 55body: | 56 bb.0: 57 liveins: $lr, $w9 58 $lr = ORRXri $xzr, 1 59 $x25 = ORRXri $xzr, 1 60 $w9 = ORRWri $wzr, 1 61 $w9 = ORRWri $wzr, 1 62 $w9 = ORRWri $wzr, 1 63 $w9 = ORRWri $wzr, 1 64 $w9 = ORRWri $wzr, 1 65 $w9 = ORRWri $wzr, 2 66 bb.1: 67 liveins: $lr, $w9 68 $w9 = ORRWri $wzr, 1 69 $w9 = ORRWri $wzr, 1 70 $w9 = ORRWri $wzr, 1 71 $w9 = ORRWri $wzr, 1 72 $w9 = ORRWri $wzr, 1 73 $w9 = ORRWri $wzr, 2 74 bb.2: 75 liveins: $lr, $w9 76 $w9 = ORRWri $wzr, 1 77 $w9 = ORRWri $wzr, 1 78 $w9 = ORRWri $wzr, 1 79 $w9 = ORRWri $wzr, 1 80 $w9 = ORRWri $wzr, 1 81 $w9 = ORRWri $wzr, 2 82 RET undef $lr 83