109 lines · plain
1; RUN: llc -verify-machineinstrs -enable-machine-outliner -aarch64-load-store-renaming=true -mtriple=aarch64-apple-darwin < %s | FileCheck %s2; RUN: llc -verify-machineinstrs -enable-machine-outliner -aarch64-load-store-renaming=true -mtriple=aarch64-apple-darwin -mcpu=cortex-a53 -enable-misched=false < %s | FileCheck %s3; RUN: llc -verify-machineinstrs -enable-machine-outliner -enable-linkonceodr-outlining -mtriple=aarch64-apple-darwin < %s | FileCheck %s -check-prefix=ODR4; RUN: llc -verify-machineinstrs -enable-machine-outliner -mtriple=aarch64-apple-darwin -stop-after=machine-outliner < %s | FileCheck %s -check-prefix=TARGET_FEATURES5 6; Make sure that we inherit target features from functions and make sure we have7; the right function attributes.8; TARGET_FEATURES: define internal void @OUTLINED_FUNCTION_{{[0-9]+}}()9; TARGET_FEATURES-SAME: #[[ATTR_NUM:[0-9]+]]10; TARGET_FEATURES-DAG: attributes #[[ATTR_NUM]] = {11; TARGET_FEATURES-SAME: minsize12; TARGET_FEATURES-SAME: nounwind13; TARGET_FEATURES-SAME: optsize14; TARGET_FEATURES-SAME: "target-cpu"="cyclone"15; TARGET_FEATURES-SAME: "target-features"="+sse"16 17define linkonce_odr void @fish() #0 {18 ; CHECK-LABEL: _fish:19 ; CHECK-NOT: OUTLINED20 ; ODR: [[OUTLINED:OUTLINED_FUNCTION_[0-9]+]]21 %1 = alloca i32, align 422 %2 = alloca i32, align 423 %3 = alloca i32, align 424 %4 = alloca i32, align 425 %5 = alloca i32, align 426 %6 = alloca i32, align 427 store i32 1, ptr %1, align 428 store i32 2, ptr %2, align 429 store i32 3, ptr %3, align 430 store i32 4, ptr %4, align 431 store i32 5, ptr %5, align 432 store i32 6, ptr %6, align 433 ret void34}35 36define void @turtle() section "TURTLE,turtle" {37 ; CHECK-LABEL: _turtle:38 ; ODR-LABEL: _turtle:39 ; CHECK-NOT: OUTLINED40 %1 = alloca i32, align 441 %2 = alloca i32, align 442 %3 = alloca i32, align 443 %4 = alloca i32, align 444 %5 = alloca i32, align 445 %6 = alloca i32, align 446 store i32 1, ptr %1, align 447 store i32 2, ptr %2, align 448 store i32 3, ptr %3, align 449 store i32 4, ptr %4, align 450 store i32 5, ptr %5, align 451 store i32 6, ptr %6, align 452 ret void53}54 55define void @cat() #0 {56 ; CHECK-LABEL: _cat:57 ; CHECK: [[OUTLINED:OUTLINED_FUNCTION_[0-9]+]]58 ; ODR: [[OUTLINED]]59 %1 = alloca i32, align 460 %2 = alloca i32, align 461 %3 = alloca i32, align 462 %4 = alloca i32, align 463 %5 = alloca i32, align 464 %6 = alloca i32, align 465 store i32 1, ptr %1, align 466 store i32 2, ptr %2, align 467 store i32 3, ptr %3, align 468 store i32 4, ptr %4, align 469 store i32 5, ptr %5, align 470 store i32 6, ptr %6, align 471 ret void72}73 74define void @dog() #0 {75 ; CHECK-LABEL: _dog:76 ; CHECK: [[OUTLINED]]77 ; ODR: [[OUTLINED]]78 %1 = alloca i32, align 479 %2 = alloca i32, align 480 %3 = alloca i32, align 481 %4 = alloca i32, align 482 %5 = alloca i32, align 483 %6 = alloca i32, align 484 store i32 1, ptr %1, align 485 store i32 2, ptr %2, align 486 store i32 3, ptr %3, align 487 store i32 4, ptr %4, align 488 store i32 5, ptr %5, align 489 store i32 6, ptr %6, align 490 ret void91}92 93; ODR: [[OUTLINED]]:94; CHECK: .p2align 295; CHECK-NEXT: [[OUTLINED]]:96; CHECK: mov w9, #197; CHECK-DAG: mov w8, #298; CHECK-DAG: stp w8, w9, [sp, #24]99; CHECK-DAG: mov w9, #3100; CHECK-DAG: mov w8, #4101; CHECK-DAG: stp w8, w9, [sp, #16]102; CHECK-DAG: mov w9, #5103; CHECK-DAG: mov w8, #6104; CHECK-DAG: stp w8, w9, [sp, #8]105; CHECK-DAG: add sp, sp, #32106; CHECK-DAG: ret107 108attributes #0 = { nounwind noredzone "target-cpu"="cyclone" "target-features"="+sse" }109