brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · 0a6dbed Raw
169 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple aarch64 %s -o - | \3; RUN:   FileCheck %s --check-prefixes CHECK,V8A4; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple aarch64 -mattr=+v8.3a %s -o - | \5; RUN:   FileCheck %s --check-prefixes CHECK,V83A6 7define i64 @a(i64 %x) "sign-return-address"="non-leaf" "sign-return-address-key"="b_key" {8; V8A-LABEL: a:9; V8A:       // %bb.0:10; V8A-NEXT:    .cfi_b_key_frame11; V8A-NEXT:    hint #2712; V8A-NEXT:    .cfi_negate_ra_state13; V8A-NEXT:    sub sp, sp, #3214; V8A-NEXT:    str x30, [sp, #16] // 8-byte Spill15; V8A-NEXT:    .cfi_def_cfa_offset 3216; V8A-NEXT:    .cfi_offset w30, -1617; V8A-NEXT:    bl OUTLINED_FUNCTION_018; V8A-NEXT:    //APP19; V8A-NEXT:    mov x30, x020; V8A-NEXT:    //NO_APP21; V8A-NEXT:    ldr x30, [sp, #16] // 8-byte Reload22; V8A-NEXT:    add sp, sp, #3223; V8A-NEXT:    hint #3124; V8A-NEXT:    ret25;26; V83A-LABEL: a:27; V83A:       // %bb.0:28; V83A-NEXT:    .cfi_b_key_frame29; V83A-NEXT:    pacibsp30; V83A-NEXT:    .cfi_negate_ra_state31; V83A-NEXT:    sub sp, sp, #3232; V83A-NEXT:    str x30, [sp, #16] // 8-byte Spill33; V83A-NEXT:    .cfi_def_cfa_offset 3234; V83A-NEXT:    .cfi_offset w30, -1635; V83A-NEXT:    bl OUTLINED_FUNCTION_036; V83A-NEXT:    //APP37; V83A-NEXT:    mov x30, x038; V83A-NEXT:    //NO_APP39; V83A-NEXT:    ldr x30, [sp, #16] // 8-byte Reload40; V83A-NEXT:    add sp, sp, #3241; V83A-NEXT:    retab42  %1 = alloca i32, align 443  %2 = alloca i32, align 444  %3 = alloca i32, align 445  %4 = alloca i32, align 446  %5 = alloca i32, align 447  %6 = alloca i32, align 448  store i32 1, ptr %1, align 449  store i32 2, ptr %2, align 450  store i32 3, ptr %3, align 451  store i32 4, ptr %4, align 452  store i32 5, ptr %5, align 453  store i32 6, ptr %6, align 454  call void asm sideeffect "mov x30, $0", "r,~{lr}"(i64 %x) #155  ret i64 %x56}57 58define i64 @b(i64 %x) "sign-return-address"="non-leaf" "sign-return-address-key"="b_key" {59; V8A-LABEL: b:60; V8A:       // %bb.0:61; V8A-NEXT:    .cfi_b_key_frame62; V8A-NEXT:    hint #2763; V8A-NEXT:    .cfi_negate_ra_state64; V8A-NEXT:    sub sp, sp, #3265; V8A-NEXT:    str x30, [sp, #16] // 8-byte Spill66; V8A-NEXT:    .cfi_def_cfa_offset 3267; V8A-NEXT:    .cfi_offset w30, -1668; V8A-NEXT:    bl OUTLINED_FUNCTION_069; V8A-NEXT:    //APP70; V8A-NEXT:    mov x30, x071; V8A-NEXT:    //NO_APP72; V8A-NEXT:    ldr x30, [sp, #16] // 8-byte Reload73; V8A-NEXT:    add sp, sp, #3274; V8A-NEXT:    hint #3175; V8A-NEXT:    ret76;77; V83A-LABEL: b:78; V83A:       // %bb.0:79; V83A-NEXT:    .cfi_b_key_frame80; V83A-NEXT:    pacibsp81; V83A-NEXT:    .cfi_negate_ra_state82; V83A-NEXT:    sub sp, sp, #3283; V83A-NEXT:    str x30, [sp, #16] // 8-byte Spill84; V83A-NEXT:    .cfi_def_cfa_offset 3285; V83A-NEXT:    .cfi_offset w30, -1686; V83A-NEXT:    bl OUTLINED_FUNCTION_087; V83A-NEXT:    //APP88; V83A-NEXT:    mov x30, x089; V83A-NEXT:    //NO_APP90; V83A-NEXT:    ldr x30, [sp, #16] // 8-byte Reload91; V83A-NEXT:    add sp, sp, #3292; V83A-NEXT:    retab93  %1 = alloca i32, align 494  %2 = alloca i32, align 495  %3 = alloca i32, align 496  %4 = alloca i32, align 497  %5 = alloca i32, align 498  %6 = alloca i32, align 499  store i32 1, ptr %1, align 4100  store i32 2, ptr %2, align 4101  store i32 3, ptr %3, align 4102  store i32 4, ptr %4, align 4103  store i32 5, ptr %5, align 4104  store i32 6, ptr %6, align 4105  call void asm sideeffect "mov x30, $0", "r,~{lr}"(i64 %x) #1106  ret i64 %x107}108 109define i64 @c(i64 %x) "sign-return-address"="non-leaf" "sign-return-address-key"="b_key" {110; V8A-LABEL: c:111; V8A:       // %bb.0:112; V8A-NEXT:    .cfi_b_key_frame113; V8A-NEXT:    hint #27114; V8A-NEXT:    .cfi_negate_ra_state115; V8A-NEXT:    sub sp, sp, #32116; V8A-NEXT:    str x30, [sp, #16] // 8-byte Spill117; V8A-NEXT:    .cfi_def_cfa_offset 32118; V8A-NEXT:    .cfi_offset w30, -16119; V8A-NEXT:    bl OUTLINED_FUNCTION_0120; V8A-NEXT:    //APP121; V8A-NEXT:    mov x30, x0122; V8A-NEXT:    //NO_APP123; V8A-NEXT:    ldr x30, [sp, #16] // 8-byte Reload124; V8A-NEXT:    add sp, sp, #32125; V8A-NEXT:    hint #31126; V8A-NEXT:    ret127;128; V83A-LABEL: c:129; V83A:       // %bb.0:130; V83A-NEXT:    .cfi_b_key_frame131; V83A-NEXT:    pacibsp132; V83A-NEXT:    .cfi_negate_ra_state133; V83A-NEXT:    sub sp, sp, #32134; V83A-NEXT:    str x30, [sp, #16] // 8-byte Spill135; V83A-NEXT:    .cfi_def_cfa_offset 32136; V83A-NEXT:    .cfi_offset w30, -16137; V83A-NEXT:    bl OUTLINED_FUNCTION_0138; V83A-NEXT:    //APP139; V83A-NEXT:    mov x30, x0140; V83A-NEXT:    //NO_APP141; V83A-NEXT:    ldr x30, [sp, #16] // 8-byte Reload142; V83A-NEXT:    add sp, sp, #32143; V83A-NEXT:    retab144  %1 = alloca i32, align 4145  %2 = alloca i32, align 4146  %3 = alloca i32, align 4147  %4 = alloca i32, align 4148  %5 = alloca i32, align 4149  %6 = alloca i32, align 4150  store i32 1, ptr %1, align 4151  store i32 2, ptr %2, align 4152  store i32 3, ptr %3, align 4153  store i32 4, ptr %4, align 4154  store i32 5, ptr %5, align 4155  store i32 6, ptr %6, align 4156  call void asm sideeffect "mov x30, $0", "r,~{lr}"(i64 %x) #1157  ret i64 %x158}159 160;; Outlined function is leaf-function => don't sign it161; CHECK-LABEL:      OUTLINED_FUNCTION_0:162; CHECK-NOT:            .cfi_b_key_frame163; CHECK-NOT:            paci{{[a,b]}}sp164; CHECK-NOT:            hint #2{{[5,7]}}165; CHECK-NOT:            .cfi_negate_ra_state166; CHECK-NOT:            auti{{[a,b]}}sp167;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:168; CHECK: {{.*}}169