|
1 | 1 | ; RUN: llc --verify-machineinstrs -mtriple powerpc-ibm-aix --code-model=small < \
|
2 |
| -; RUN: %s | FileCheck --check-prefixes=CHECK,CHECK32 %s |
| 2 | +; RUN: %s | FileCheck --check-prefixes=CHECK,CHECK32,CHECK-SMALL,CHECK-SMALL32 %s |
3 | 3 |
|
4 | 4 | ; RUN: llc --verify-machineinstrs -mtriple powerpc-ibm-aix --code-model=large < \
|
5 |
| -; RUN: %s | FileCheck --check-prefixes=CHECK,CHECK32 %s |
| 5 | +; RUN: %s | FileCheck --check-prefixes=CHECK,CHECK32,CHECK-LARGE,CHECK-LARGE32 %s |
6 | 6 |
|
7 | 7 | ; RUN: llc --verify-machineinstrs -mtriple powerpc64-ibm-aix --code-model=small < \
|
8 |
| -; RUN: %s | FileCheck --check-prefixes=CHECK,CHECK64 %s |
| 8 | +; RUN: %s | FileCheck --check-prefixes=CHECK,CHECK64,CHECK-SMALL,CHECK-SMALL64 %s |
9 | 9 |
|
10 | 10 | ; RUN: llc --verify-machineinstrs -mtriple powerpc64-ibm-aix --code-model=large < \
|
11 |
| -; RUN: %s | FileCheck --check-prefixes=CHECK,CHECK64 %s |
| 11 | +; RUN: %s | FileCheck --check-prefixes=CHECK,CHECK64,CHECK-LARGE,CHECK-LARGE64 %s |
12 | 12 |
|
13 | 13 | @a = external dso_local global i32, code_model "small", align 4
|
14 | 14 | @b = external dso_local global i32, code_model "large", align 4
|
15 | 15 | @c = dso_local global i32 55, code_model "small", align 4
|
16 | 16 | @d = dso_local global i32 41, code_model "large", align 4
|
17 |
| - |
| 17 | +@e = external dso_local global i32, align 4 |
| 18 | +@f = dso_local global i32 2748, align 4 |
18 | 19 |
|
19 | 20 | define i32 @A() local_unnamed_addr {
|
20 | 21 | entry:
|
@@ -58,6 +59,32 @@ entry:
|
58 | 59 | ; CHECK: lwz 3, 0([[ADDR]])
|
59 | 60 | ; CHECK: blr
|
60 | 61 |
|
| 62 | +define i32 @E() { |
| 63 | +entry: |
| 64 | + %0 = load i32, ptr @e, align 4 |
| 65 | + ret i32 %0 |
| 66 | +} |
| 67 | +; CHECK-LARGE: addis [[HI:[0-9]+]], L..C[[TL_E:[0-9]+]]@u(2) |
| 68 | +; CHECK-LARGE32: lwz [[SCRATCH:[0-9]+]], L..C[[TL_E]]@l([[HI]]) |
| 69 | +; CHECK-SMALL32: lwz [[SCRATCH:[0-9]+]], L..C[[TL_E:[0-9]+]](2) |
| 70 | +; CHECK-LARGE64: ld [[SCRATCH:[0-9]+]], L..C[[TL_E]]@l([[HI]]) |
| 71 | +; CHECK-SMALL64: ld [[SCRATCH:[0-9]+]], L..C[[TL_E:[0-9]+]](2) |
| 72 | +; CHECK: lwz 3, 0([[SCRATCH]]) |
| 73 | +; CHECK: blr |
| 74 | + |
| 75 | +define i32 @F() { |
| 76 | +entry: |
| 77 | + %0 = load i32, ptr @f, align 4 |
| 78 | + ret i32 %0 |
| 79 | +} |
| 80 | +; CHECK-LARGE: addis [[HI:[0-9]+]], L..C[[TL_F:[0-9]+]]@u(2) |
| 81 | +; CHECK-LARGE32: lwz [[SCRATCH:[0-9]+]], L..C[[TL_F]]@l([[HI]]) |
| 82 | +; CHECK-SMALL32: lwz [[SCRATCH:[0-9]+]], L..C[[TL_F:[0-9]+]](2) |
| 83 | +; CHECK-LARGE64: ld [[SCRATCH:[0-9]+]], L..C[[TL_F]]@l([[HI]]) |
| 84 | +; CHECK-SMALL64: ld [[SCRATCH:[0-9]+]], L..C[[TL_F:[0-9]+]](2) |
| 85 | +; CHECK: lwz 3, 0([[SCRATCH]]) |
| 86 | +; CHECK: blr |
| 87 | + |
61 | 88 | define noundef nonnull ptr @addr_a() local_unnamed_addr {
|
62 | 89 | entry:
|
63 | 90 | ret ptr @a
|
@@ -94,11 +121,17 @@ entry:
|
94 | 121 | ; CHECK: blr
|
95 | 122 |
|
96 | 123 | ;; Check TOC entires have correct storage mapping class
|
97 |
| -; CHECK: L..C[[TL_A]]: |
98 |
| -; CHECK: .tc a[TC],a[UA] |
99 |
| -; CHECK: L..C[[TL_B]]: |
100 |
| -; CHECK: .tc b[TE],b[UA] |
101 |
| -; CHECK: L..C[[TL_C]]: |
102 |
| -; CHECK: .tc c[TC],c[RW] |
103 |
| -; CHECK: L..C[[TL_D]]: |
104 |
| -; CHECK: .tc d[TE],d[RW] |
| 124 | +; CHECK: L..C[[TL_A]]: |
| 125 | +; CHECK: .tc a[TC],a[UA] |
| 126 | +; CHECK: L..C[[TL_B]]: |
| 127 | +; CHECK: .tc b[TE],b[UA] |
| 128 | +; CHECK: L..C[[TL_C]]: |
| 129 | +; CHECK: .tc c[TC],c[RW] |
| 130 | +; CHECK: L..C[[TL_D]]: |
| 131 | +; CHECK: .tc d[TE],d[RW] |
| 132 | +; CHECK: L..C[[TL_E]]: |
| 133 | +; CHECK-SMALL: .tc e[TC],e[UA] |
| 134 | +; CHECK-LARGE: .tc e[TE],e[UA] |
| 135 | +; CHECK: L..C[[TL_F]]: |
| 136 | +; CHECK-SMALL: .tc f[TC],f[RW] |
| 137 | +; CHECK-LARGE: .tc f[TE],f[RW] |
0 commit comments