|
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