brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · c397953 Raw
134 lines · plain
1# RUN: llc -mtriple=aarch64---  -run-pass=machine-outliner -verify-machineinstrs %s -o - | FileCheck %s2--- |3 4  @x = common global i32 0, align 45 6  define i32 @adrp_add() #0 {7    ret i32 08  }9 10  define i32 @adrp_ldr() #0 {11    ret i32 012  }13 14  attributes #0 = { noinline noredzone }15...16---17# Check that main function body doesn't split ADRP pair18#19# CHECK-LABEL: name: adrp_add20# CHECK-DAG: bb.0:21# CHECK: BL @OUTLINED_FUNCTION_[[F0:[0-9]+]]22# CHECK-NEXT: BL @OUTLINED_FUNCTION_[[F2:[0-9]+]]23# CHECK-NEXT: $lr = ORRXri $xzr, 124name:            adrp_add25tracksRegLiveness: true26body:             |27  bb.0:28  liveins: $lr29    $w12 = ORRWri $wzr, 130    $w12 = ORRWri $wzr, 131    $w12 = ORRWri $wzr, 132    $w12 = ORRWri $wzr, 133    $w12 = ORRWri $wzr, 134    $w12 = ORRWri $wzr, 135    $x9 = ADRP target-flags(aarch64-page, aarch64-got) @x36    $x12 = ADDXri $x9, target-flags(aarch64-pageoff, aarch64-got) @x, 037    $lr = ORRXri $xzr, 138  bb.1:39  liveins: $lr40    $w12 = ORRWri $wzr, 141    $w12 = ORRWri $wzr, 142    $w12 = ORRWri $wzr, 143    $w12 = ORRWri $wzr, 144    $w12 = ORRWri $wzr, 145    $w12 = ORRWri $wzr, 146    $x9 = ADRP target-flags(aarch64-page, aarch64-got) @x47    $x12 = ADDXri $x9, target-flags(aarch64-pageoff, aarch64-got) @x, 048    $lr = ORRXri $xzr, 149  bb.2:50  liveins: $lr51    $w12 = ORRWri $wzr, 152    $w12 = ORRWri $wzr, 153    $w12 = ORRWri $wzr, 154    $w12 = ORRWri $wzr, 155    $w12 = ORRWri $wzr, 156    $w12 = ORRWri $wzr, 157    $x9 = ADRP target-flags(aarch64-page, aarch64-got) @x58    $x12 = ADDXri $x9, target-flags(aarch64-pageoff, aarch64-got) @x, 059    $lr = ORRXri $xzr, 160  bb.3:61  liveins: $lr62    RET undef $lr63...64---65# Check that main function body doesn't split ADRP pair66#67# CHECK-LABEL: name: adrp_ldr68# CHECK-DAG: bb.0:69# CHECK: BL @OUTLINED_FUNCTION_[[F0]]70# CHECK-NEXT: BL @OUTLINED_FUNCTION_[[F1:[0-9]+]]71# CHECK-NEXT: $lr = ORRXri $xzr, 172name:            adrp_ldr73tracksRegLiveness: true74body:             |75  bb.0:76  liveins: $lr77    $w12 = ORRWri $wzr, 178    $w12 = ORRWri $wzr, 179    $w12 = ORRWri $wzr, 180    $w12 = ORRWri $wzr, 181    $w12 = ORRWri $wzr, 182    $w12 = ORRWri $wzr, 183    $x9 = ADRP target-flags(aarch64-page, aarch64-got) @x84    $x12 = LDRXui $x9, target-flags(aarch64-pageoff, aarch64-got) @x85    $lr = ORRXri $xzr, 186  bb.1:87  liveins: $lr88    $w12 = ORRWri $wzr, 189    $w12 = ORRWri $wzr, 190    $w12 = ORRWri $wzr, 191    $w12 = ORRWri $wzr, 192    $w12 = ORRWri $wzr, 193    $w12 = ORRWri $wzr, 194    $x9 = ADRP target-flags(aarch64-page, aarch64-got) @x95    $x12 = LDRXui $x9, target-flags(aarch64-pageoff, aarch64-got) @x96    $lr = ORRXri $xzr, 197  bb.2:98  liveins: $lr99    $w12 = ORRWri $wzr, 1100    $w12 = ORRWri $wzr, 1101    $w12 = ORRWri $wzr, 1102    $w12 = ORRWri $wzr, 1103    $w12 = ORRWri $wzr, 1104    $w12 = ORRWri $wzr, 1105    $x9 = ADRP target-flags(aarch64-page, aarch64-got) @x106    $x12 = LDRXui $x9, target-flags(aarch64-pageoff, aarch64-got) @x107    $lr = ORRXri $xzr, 1108  bb.3:109  liveins: $lr110    RET undef $lr111 112# Check that no outlined function split the ADRP pair apart113#114# CHECK: OUTLINED_FUNCTION_[[F0]]115# CHECK-DAG: bb.0116# CHECK: $w12 = ORRWri $wzr, 1117# CHECK-NEXT: $w12 = ORRWri $wzr, 1118# CHECK-NEXT: $w12 = ORRWri $wzr, 1119# CHECK-NEXT: $w12 = ORRWri $wzr, 1120# CHECK-NEXT: $w12 = ORRWri $wzr, 1121# CHECK-NEXT: RET $lr122 123# CHECK: OUTLINED_FUNCTION_[[F1]]124# CHECK-DAG: bb.0125# CHECK: $w12 = ORRWri $wzr, 1126# CHECK-NEXT: $x9 = ADRP target-flags(aarch64-page, aarch64-got) @x127# CHECK-NEXT: $x12 = LDRXui $x9, target-flags(aarch64-pageoff, aarch64-got) @x128 129# CHECK: name: OUTLINED_FUNCTION_[[F2]]130# CHECK-DAG: bb.0131# CHECK: $w12 = ORRWri $wzr, 1132# CHECK-NEXT: $x9 = ADRP target-flags(aarch64-page, aarch64-got) @x133# CHECK-NEXT: $x12 = ADDXri $x9, target-flags(aarch64-pageoff, aarch64-got) @x, 0134