[ARM] Fixup the creation of VPT blocks
[llvm-core.git] / test / CodeGen / AArch64 / arm64-reserve-call-saved-reg.ll
blobce9d2c7171d2e627e7aa753c65a4794e6b84acfd
1 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x9 -mattr=+call-saved-x9 -o - %s | FileCheck %s --check-prefixes=CHECK-X9
2 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x9 -mattr=+call-saved-x9 -global-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X9
3 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x9 -mattr=+call-saved-x9 -fast-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X9
5 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x10 -mattr=+call-saved-x10 -o - %s | FileCheck %s --check-prefixes=CHECK-X10
6 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x10 -mattr=+call-saved-x10 -global-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X10
7 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x10 -mattr=+call-saved-x10 -fast-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X10
9 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x11 -mattr=+call-saved-x11 -o - %s | FileCheck %s --check-prefixes=CHECK-X11
10 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x11 -mattr=+call-saved-x11 -global-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X11
11 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x11 -mattr=+call-saved-x11 -fast-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X11
13 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x12 -mattr=+call-saved-x12 -o - %s | FileCheck %s --check-prefixes=CHECK-X12
14 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x12 -mattr=+call-saved-x12 -global-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X12
15 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x12 -mattr=+call-saved-x12 -fast-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X12
17 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x13 -mattr=+call-saved-x13 -o - %s | FileCheck %s --check-prefixes=CHECK-X13
18 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x13 -mattr=+call-saved-x13 -global-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X13
19 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x13 -mattr=+call-saved-x13 -fast-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X13
21 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x14 -mattr=+call-saved-x14 -o - %s | FileCheck %s --check-prefixes=CHECK-X14
22 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x14 -mattr=+call-saved-x14 -global-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X14
23 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x14 -mattr=+call-saved-x14 -fast-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X14
25 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x15 -mattr=+call-saved-x15 -o - %s | FileCheck %s --check-prefixes=CHECK-X15
26 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x15 -mattr=+call-saved-x15 -global-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X15
27 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x15 -mattr=+call-saved-x15 -fast-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X15
29 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x18 -mattr=+call-saved-x18 -o - %s | FileCheck %s --check-prefixes=CHECK-X18
30 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x18 -mattr=+call-saved-x18 -global-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X18
31 ; RUN: llc -mtriple=arm64-linux-gnu -mattr=+reserve-x18 -mattr=+call-saved-x18 -fast-isel -o - %s | FileCheck %s --check-prefixes=CHECK-X18
33 ; Used to exhaust the supply of GPRs.
34 @var = global [30 x i64] zeroinitializer
36 ; If a register is specified to be both reserved and callee-saved, then it
37 ; should not be allocated and should not be spilled onto the stack.
38 define void @foo() {
39 ; CHECK-X9-NOT: str x9, [sp
40 ; CHECK-X10-NOT: str x10, [sp
41 ; CHECK-X11-NOT: str x11, [sp
42 ; CHECK-X12-NOT: str x12, [sp
43 ; CHECK-X13-NOT: str x13, [sp
44 ; CHECK-X14-NOT: str x14, [sp
45 ; CHECK-X15-NOT: str x15, [sp
46 ; CHECK-X18-NOT: str x18, [sp
48   %val = load volatile [30 x i64], [30 x i64]* @var
49   store volatile [30 x i64] %val, [30 x i64]* @var
51 ; CHECK-X9-NOT: ldr x9
52 ; CHECK-X10-NOT: ldr x10
53 ; CHECK-X11-NOT: ldr x11
54 ; CHECK-X12-NOT: ldr x12
55 ; CHECK-X13-NOT: ldr x13
56 ; CHECK-X14-NOT: ldr x14
57 ; CHECK-X15-NOT: ldr x15
58 ; CHECK-X18-NOT: ldr x18
59 ; CHECK-X9-NOT: str x9
60 ; CHECK-X10-NOT: str x10
61 ; CHECK-X11-NOT: str x11
62 ; CHECK-X12-NOT: str x12
63 ; CHECK-X13-NOT: str x13
64 ; CHECK-X14-NOT: str x14
65 ; CHECK-X15-NOT: str x15
66 ; CHECK-X18-NOT: str x18
68 ; CHECK-X9-NOT: ldr x9, [sp
69 ; CHECK-X10-NOT: ldr x10, [sp
70 ; CHECK-X11-NOT: ldr x11, [sp
71 ; CHECK-X12-NOT: ldr x12, [sp
72 ; CHECK-X13-NOT: ldr x13, [sp
73 ; CHECK-X14-NOT: ldr x14, [sp
74 ; CHECK-X15-NOT: ldr x15, [sp
75 ; CHECK-X18-NOT: ldr x18, [sp
76   ret void