brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 165f3d5 Raw
153 lines · plain
1; RUN: llc -mtriple=arm64-linux-gnu -mattr=+call-saved-x8 -o - %s \2; RUN: | FileCheck %s --check-prefix=CHECK-SAVED-X83 4; RUN: llc -mtriple=arm64-linux-gnu -mattr=+call-saved-x9 -o - %s \5; RUN: | FileCheck %s --check-prefix=CHECK-SAVED-X96 7; RUN: llc -mtriple=arm64-linux-gnu -mattr=+call-saved-x10 -o - %s \8; RUN: | FileCheck %s --check-prefix=CHECK-SAVED-X109 10; RUN: llc -mtriple=arm64-linux-gnu -mattr=+call-saved-x11 -o - %s \11; RUN: | FileCheck %s --check-prefix=CHECK-SAVED-X1112 13; RUN: llc -mtriple=arm64-linux-gnu -mattr=+call-saved-x12 -o - %s \14; RUN: | FileCheck %s --check-prefix=CHECK-SAVED-X1215 16; RUN: llc -mtriple=arm64-linux-gnu -mattr=+call-saved-x13 -o - %s \17; RUN: | FileCheck %s --check-prefix=CHECK-SAVED-X1318 19; RUN: llc -mtriple=arm64-linux-gnu -mattr=+call-saved-x14 -o - %s \20; RUN: | FileCheck %s --check-prefix=CHECK-SAVED-X1421 22; RUN: llc -mtriple=arm64-linux-gnu -mattr=+call-saved-x15 -o - %s \23; RUN: | FileCheck %s --check-prefix=CHECK-SAVED-X1524 25; RUN: llc -mtriple=arm64-linux-gnu -mattr=+call-saved-x18 -o - %s \26; RUN: | FileCheck %s --check-prefix=CHECK-SAVED-X1827 28; Test all call-saved-x# options together.29; RUN: llc -mtriple=arm64-linux-gnu \30; RUN: -mattr=+call-saved-x8 \31; RUN: -mattr=+call-saved-x9 \32; RUN: -mattr=+call-saved-x10 \33; RUN: -mattr=+call-saved-x11 \34; RUN: -mattr=+call-saved-x12 \35; RUN: -mattr=+call-saved-x13 \36; RUN: -mattr=+call-saved-x14 \37; RUN: -mattr=+call-saved-x15 \38; RUN: -mattr=+call-saved-x18 \39; RUN: -o - %s | FileCheck %s \40; RUN: --check-prefix=CHECK-SAVED-ALL41 42; Test GlobalISel.43; RUN: llc -mtriple=arm64-linux-gnu \44; RUN: -mattr=+call-saved-x8 \45; RUN: -mattr=+call-saved-x9 \46; RUN: -mattr=+call-saved-x10 \47; RUN: -mattr=+call-saved-x11 \48; RUN: -mattr=+call-saved-x12 \49; RUN: -mattr=+call-saved-x13 \50; RUN: -mattr=+call-saved-x14 \51; RUN: -mattr=+call-saved-x15 \52; RUN: -mattr=+call-saved-x18 \53; RUN: -global-isel \54; RUN: -o - %s | FileCheck %s \55; RUN: --check-prefix=CHECK-SAVED-ALL-GISEL56 57; Used to exhaust the supply of GPRs.58@var = dso_local global [30 x i64] zeroinitializer59 60; Check that callee preserves additional CSRs.61define dso_local void @callee() {62; CHECK-LABEL: callee63 64; CHECK-SAVED-X8: str x8, [sp65; CHECK-SAVED-X9: str x9, [sp66; CHECK-SAVED-X10: str x10, [sp67; CHECK-SAVED-X11: str x11, [sp68; CHECK-SAVED-X12: str x12, [sp69; CHECK-SAVED-X13: str x13, [sp70; CHECK-SAVED-X14: str x14, [sp71; CHECK-SAVED-X15: str x15, [sp72; CHECK-SAVED-X18: str x18, [sp73 74; CHECK-SAVED-ALL: str x18, [sp75; CHECK-SAVED-ALL-NEXT: stp x15, x14, [sp76; CHECK-SAVED-ALL-NEXT: stp x13, x12, [sp77; CHECK-SAVED-ALL-NEXT: stp x11, x10, [sp78; CHECK-SAVED-ALL-NEXT: stp x9, x8, [sp79 80  %val = load volatile [30 x i64], ptr @var81  store volatile [30 x i64] %val, ptr @var82 83; CHECK-SAVED-ALL: ldp x9, x8, [sp84; CHECK-SAVED-ALL-NEXT: ldp x11, x10, [sp85; CHECK-SAVED-ALL-NEXT: ldp x13, x12, [sp86; CHECK-SAVED-ALL-NEXT: ldp x15, x14, [sp87; CHECK-SAVED-ALL-NEXT: ldr x18, [sp88 89; CHECK-SAVED-X8: ldr x8, [sp90; CHECK-SAVED-X9: ldr x9, [sp91; CHECK-SAVED-X10: ldr x10, [sp92; CHECK-SAVED-X11: ldr x11, [sp93; CHECK-SAVED-X12: ldr x12, [sp94; CHECK-SAVED-X13: ldr x13, [sp95; CHECK-SAVED-X14: ldr x14, [sp96; CHECK-SAVED-X15: ldr x15, [sp97; CHECK-SAVED-X18: ldr x18, [sp98 99  ret void100}101 102; Check that caller doesn't shy away from allocating additional CSRs.103define dso_local void @caller() {104; CHECK-LABEL: caller105 106  %val = load volatile [30 x i64], ptr @var107; CHECK-SAVED-X8: adrp x8, var108; CHECK-SAVED-X9: adrp x9, var109; CHECK-SAVED-X10: adrp x10, var110; CHECK-SAVED-X11: adrp x11, var111; CHECK-SAVED-X12: adrp x12, var112; CHECK-SAVED-X13: adrp x13, var113; CHECK-SAVED-X14: adrp x14, var114; CHECK-SAVED-X15: adrp x15, var115; CHECK-SAVED-X18: adrp x18, var116 117; CHECK-SAVED-ALL: adrp x8, var118; CHECK-SAVED-ALL-DAG: ldr x9119; CHECK-SAVED-ALL-DAG: ldr x10120; CHECK-SAVED-ALL-DAG: ldr x11121; CHECK-SAVED-ALL-DAG: ldr x12122; CHECK-SAVED-ALL-DAG: ldr x13123; CHECK-SAVED-ALL-DAG: ldr x14124; CHECK-SAVED-ALL-DAG: ldr x15125; CHECK-SAVED-ALL-DAG: ldr x18126 127; CHECK-SAVED-ALL-GISEL: adrp x16, var128; CHECK-SAVED-ALL-GISEL-DAG: ldr x8129; CHECK-SAVED-ALL-GISEL-DAG: ldr x9130; CHECK-SAVED-ALL-GISEL-DAG: ldr x10131; CHECK-SAVED-ALL-GISEL-DAG: ldr x11132; CHECK-SAVED-ALL-GISEL-DAG: ldr x12133; CHECK-SAVED-ALL-GISEL-DAG: ldr x13134; CHECK-SAVED-ALL-GISEL-DAG: ldr x14135; CHECK-SAVED-ALL-GISEL-DAG: ldr x15136; CHECK-SAVED-ALL-GISEL-DAG: ldr x18137 138  call void @callee()139; CHECK: bl callee140 141  store volatile [30 x i64] %val, ptr @var142; CHECK-SAVED-ALL-DAG: str x9143; CHECK-SAVED-ALL-DAG: str x10144; CHECK-SAVED-ALL-DAG: str x11145; CHECK-SAVED-ALL-DAG: str x12146; CHECK-SAVED-ALL-DAG: str x13147; CHECK-SAVED-ALL-DAG: str x14148; CHECK-SAVED-ALL-DAG: str x15149; CHECK-SAVED-ALL-DAG: str x18150 151  ret void152}153