|
1 | 1 | # RUN: llvm-mc %s -triple=sparc | FileCheck %s --check-prefix=ASM |
2 | | -# RUN: llvm-mc %s -triple=sparcv9 | FileCheck %s --check-prefix=ASM |
| 2 | +# RUN: llvm-mc %s --defsym V9=1 -triple=sparcv9 | FileCheck %s --check-prefixes=ASM,ASM-V9 |
3 | 3 |
|
4 | 4 | # RUN: llvm-mc %s -triple=sparc -filetype=obj -o %t |
5 | 5 | # RUN: llvm-objdump -dr %t | FileCheck %s --check-prefix=OBJDUMP |
6 | | -# RUN: llvm-mc %s -triple=sparcv9 -filetype=obj -o %t |
7 | | -# RUN: llvm-objdump -dr %t | FileCheck %s --check-prefix=OBJDUMP |
8 | 6 | # RUN: llvm-readelf -s - < %t | FileCheck %s --check-prefix=READELF --implicit-check-not=TLS |
| 7 | +# RUN: llvm-mc %s --defsym V9=1 -triple=sparcv9 -filetype=obj -o %t |
| 8 | +# RUN: llvm-objdump -dr %t | FileCheck %s --check-prefixes=OBJDUMP,OBJDUMP-V9 |
| 9 | +# RUN: llvm-readelf -s - < %t | FileCheck %s --check-prefixes=READELF,READELF-V9 --implicit-check-not=TLS |
9 | 10 |
|
10 | 11 | # READELF: TLS LOCAL DEFAULT [[#]] s_tle_hix22 |
11 | 12 | # READELF: TLS LOCAL DEFAULT [[#]] s_tldo_hix22 |
12 | 13 | # READELF: TLS GLOBAL DEFAULT UND s_tle_lox10 |
13 | | -# READELF: TLS GLOBAL DEFAULT UND s_tie_hi22 |
14 | | -# READELF: TLS GLOBAL DEFAULT UND s_tie_lo10 |
15 | | -# READELF: TLS GLOBAL DEFAULT UND s_tie_ld |
16 | | -# READELF: TLS GLOBAL DEFAULT UND s_tie_ldx |
17 | | -# READELF: TLS GLOBAL DEFAULT UND s_tie_add |
| 14 | +# READELF-V9: TLS GLOBAL DEFAULT UND s_tie_hi22 |
| 15 | +# READELF-V9: TLS GLOBAL DEFAULT UND s_tie_lo10 |
| 16 | +# READELF-V9: TLS GLOBAL DEFAULT UND s_tie_ld |
| 17 | +# READELF-V9: TLS GLOBAL DEFAULT UND s_tie_ldx |
| 18 | +# READELF-V9: TLS GLOBAL DEFAULT UND s_tie_add |
18 | 19 | # READELF: TLS GLOBAL DEFAULT UND s_tldm_hi22 |
19 | 20 | # READELF: TLS GLOBAL DEFAULT UND s_tldm_lo10 |
20 | 21 | # READELF: TLS GLOBAL DEFAULT UND s_tldm_add |
@@ -72,30 +73,32 @@ or %g1, %hm(sym), %g3 |
72 | 73 | or %g1, %ulo(sym), %g3 |
73 | 74 | sethi %lm(sym), %l0 |
74 | 75 |
|
75 | | -# ASM: sethi %hix(sym), %g1 |
76 | | -# ASM-NEXT: xor %g1, %lox(sym), %g1 |
77 | | -# ASM-NEXT: sethi %gdop_hix22(sym), %l1 |
78 | | -# ASM-NEXT: or %l1, %gdop_lox10(sym), %l1 |
79 | | -# ASM-NEXT: ldx [%l7+%l1], %l2, %gdop(sym) |
80 | | -# OBJDUMP: sethi 0x3fffff, %g0 |
81 | | -# OBJDUMP-NEXT: xor %g0, -0x400, %g0 |
82 | | -# OBJDUMP-NEXT: sethi 0x0, %g1 |
83 | | -# OBJDUMP-NEXT: R_SPARC_HIX22 sym |
84 | | -# OBJDUMP-NEXT: xor %g1, 0x0, %g1 |
85 | | -# OBJDUMP-NEXT: R_SPARC_LOX10 sym |
86 | | -# OBJDUMP-NEXT: sethi 0x0, %l1 |
87 | | -# OBJDUMP-NEXT: R_SPARC_GOTDATA_OP_HIX22 sym |
88 | | -# OBJDUMP-NEXT: or %l1, 0x0, %l1 |
89 | | -# OBJDUMP-NEXT: R_SPARC_GOTDATA_OP_LOX10 sym |
90 | | -# OBJDUMP-NEXT: ldx [%l7+%l1], %l2 |
91 | | -# OBJDUMP-NEXT: R_SPARC_GOTDATA_OP sym |
| 76 | +.ifdef V9 |
| 77 | +# ASM-V9: sethi %hix(sym), %g1 |
| 78 | +# ASM-V9-NEXT: xor %g1, %lox(sym), %g1 |
| 79 | +# ASM-V9-NEXT: sethi %gdop_hix22(sym), %l1 |
| 80 | +# ASM-V9-NEXT: or %l1, %gdop_lox10(sym), %l1 |
| 81 | +# ASM-V9-NEXT: ldx [%l7+%l1], %l2, %gdop(sym) |
| 82 | +# OBJDUMP-V9: sethi 0x3fffff, %g0 |
| 83 | +# OBJDUMP-V9-NEXT: xor %g0, -0x400, %g0 |
| 84 | +# OBJDUMP-V9-NEXT: sethi 0x0, %g1 |
| 85 | +# OBJDUMP-V9-NEXT: R_SPARC_HIX22 sym |
| 86 | +# OBJDUMP-V9-NEXT: xor %g1, 0x0, %g1 |
| 87 | +# OBJDUMP-V9-NEXT: R_SPARC_LOX10 sym |
| 88 | +# OBJDUMP-V9-NEXT: sethi 0x0, %l1 |
| 89 | +# OBJDUMP-V9-NEXT: R_SPARC_GOTDATA_OP_HIX22 sym |
| 90 | +# OBJDUMP-V9-NEXT: or %l1, 0x0, %l1 |
| 91 | +# OBJDUMP-V9-NEXT: R_SPARC_GOTDATA_OP_LOX10 sym |
| 92 | +# OBJDUMP-V9-NEXT: ldx [%l7+%l1], %l2 |
| 93 | +# OBJDUMP-V9-NEXT: R_SPARC_GOTDATA_OP sym |
92 | 94 | sethi %hix(zero), %g0 |
93 | 95 | xor %g0, %lox(zero), %g0 |
94 | 96 | sethi %hix(sym), %g1 |
95 | 97 | xor %g1, %lox(sym), %g1 |
96 | 98 | sethi %gdop_hix22(sym), %l1 |
97 | 99 | or %l1, %gdop_lox10(sym), %l1 |
98 | 100 | ldx [%l7 + %l1], %l2, %gdop(sym) |
| 101 | +.endif |
99 | 102 |
|
100 | 103 | .set abs, 0xfedcba98 |
101 | 104 | .set abs48, 0xfedcba987654 |
@@ -147,23 +150,25 @@ xor %o0, %lox(abs), %o0 |
147 | 150 | sethi %tle_hix22(s_tle_hix22), %i0 |
148 | 151 | xor %i0, %tle_lox10(s_tle_lox10), %i0 |
149 | 152 |
|
| 153 | +.ifdef V9 |
150 | 154 | ## Initial Executable model |
151 | | -# ASM: sethi %tie_hi22(s_tie_hi22), %i1 |
152 | | -# ASM-NEXT: add %i1, %tie_lo10(s_tie_lo10), %i1 |
153 | | -# ASM-NEXT: ld [%i0+%i1], %i0, %tie_ld(s_tie_ld) |
154 | | -# ASM-NEXT: ldx [%i0+%i1], %i0, %tie_ldx(s_tie_ldx) |
155 | | -# ASM-NEXT: add %g7, %i0, %o0, %tie_add(s_tie_add) |
156 | | - |
157 | | -# OBJDUMP: R_SPARC_TLS_IE_HI22 s_tie_hi22 |
158 | | -# OBJDUMP: R_SPARC_TLS_IE_LO10 s_tie_lo10 |
159 | | -# OBJDUMP: R_SPARC_TLS_IE_LD s_tie_ld |
160 | | -# OBJDUMP: R_SPARC_TLS_IE_LDX s_tie_ldx |
161 | | -# OBJDUMP: R_SPARC_TLS_IE_ADD s_tie_add |
| 155 | +# ASM-V9: sethi %tie_hi22(s_tie_hi22), %i1 |
| 156 | +# ASM-V9-NEXT: add %i1, %tie_lo10(s_tie_lo10), %i1 |
| 157 | +# ASM-V9-NEXT: ld [%i0+%i1], %i0, %tie_ld(s_tie_ld) |
| 158 | +# ASM-V9-NEXT: ldx [%i0+%i1], %i0, %tie_ldx(s_tie_ldx) |
| 159 | +# ASM-V9-NEXT: add %g7, %i0, %o0, %tie_add(s_tie_add) |
| 160 | + |
| 161 | +# OBJDUMP-V9: R_SPARC_TLS_IE_HI22 s_tie_hi22 |
| 162 | +# OBJDUMP-V9: R_SPARC_TLS_IE_LO10 s_tie_lo10 |
| 163 | +# OBJDUMP-V9: R_SPARC_TLS_IE_LD s_tie_ld |
| 164 | +# OBJDUMP-V9: R_SPARC_TLS_IE_LDX s_tie_ldx |
| 165 | +# OBJDUMP-V9: R_SPARC_TLS_IE_ADD s_tie_add |
162 | 166 | sethi %tie_hi22(s_tie_hi22), %i1 |
163 | 167 | add %i1, %tie_lo10(s_tie_lo10), %i1 |
164 | 168 | ld [%i0+%i1], %i0, %tie_ld(s_tie_ld) |
165 | 169 | ldx [%i0+%i1], %i0, %tie_ldx(s_tie_ldx) |
166 | 170 | add %g7, %i0, %o0, %tie_add(s_tie_add) |
| 171 | +.endif |
167 | 172 |
|
168 | 173 | ## Local Dynamic model |
169 | 174 | # ASM: sethi %tldo_hix22(s_tldo_hix22), %i1 |
|
0 commit comments