[llvm] de7e23f - Sparc: Improve tests
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat May 3 20:26:42 PDT 2025
Author: Fangrui Song
Date: 2025-05-03T20:26:37-07:00
New Revision: de7e23f0e8ca18d3f4b27183cd3930ab831c6c83
URL: https://github.com/llvm/llvm-project/commit/de7e23f0e8ca18d3f4b27183cd3930ab831c6c83
DIFF: https://github.com/llvm/llvm-project/commit/de7e23f0e8ca18d3f4b27183cd3930ab831c6c83.diff
LOG: Sparc: Improve tests
* Remove unuseful -filetype=asm -show-encoding output from relocation tests.
* Test STT_TLS for TLS relocations
* Test r_offset for a few relocations
* Test ASM output for many relocations
Added:
llvm/test/MC/Sparc/relocation-specifier.s
Modified:
llvm/test/MC/Sparc/sparc-assembly-exprs.s
llvm/test/MC/Sparc/sparc-relocations.s
Removed:
llvm/test/MC/Sparc/sparc-tls-relocations.s
################################################################################
diff --git a/llvm/test/MC/Sparc/relocation-specifier.s b/llvm/test/MC/Sparc/relocation-specifier.s
new file mode 100644
index 0000000000000..cd4d95a10ad32
--- /dev/null
+++ b/llvm/test/MC/Sparc/relocation-specifier.s
@@ -0,0 +1,152 @@
+# RUN: llvm-mc %s -triple=sparc | FileCheck %s --check-prefix=ASM
+# RUN: llvm-mc %s -triple=sparcv9 | FileCheck %s --check-prefix=ASM
+
+# RUN: llvm-mc %s -triple=sparc -filetype=obj -o %t
+# RUN: llvm-objdump -dr %t | FileCheck %s --check-prefix=OBJDUMP
+# RUN: llvm-mc %s -triple=sparcv9 -filetype=obj -o %t
+# RUN: llvm-objdump -dr %t | FileCheck %s --check-prefix=OBJDUMP
+# RUN: llvm-readelf -s - < %t | FileCheck %s --check-prefix=READELF --implicit-check-not=TLS
+
+# READELF: TLS LOCAL DEFAULT [[#]] s_tle_hix22
+# READELF: TLS LOCAL DEFAULT [[#]] s_tldo_hix22
+# READELF: TLS GLOBAL DEFAULT UND s_tle_lox10
+# READELF: TLS GLOBAL DEFAULT UND s_tie_hi22
+# READELF: TLS GLOBAL DEFAULT UND s_tie_lo10
+# READELF: TLS GLOBAL DEFAULT UND s_tie_ld
+# READELF: TLS GLOBAL DEFAULT UND s_tie_ldx
+# READELF: TLS GLOBAL DEFAULT UND s_tie_add
+# READELF: TLS GLOBAL DEFAULT UND s_tldm_hi22
+# READELF: TLS GLOBAL DEFAULT UND s_tldm_lo10
+# READELF: TLS GLOBAL DEFAULT UND s_tldm_add
+# READELF: TLS GLOBAL DEFAULT UND s_tldo_lox10
+# READELF: TLS GLOBAL DEFAULT UND s_tldo_add
+# READELF: TLS GLOBAL DEFAULT UND s_tgd_hi22
+# READELF: TLS GLOBAL DEFAULT UND s_tgd_lo10
+# READELF: TLS GLOBAL DEFAULT UND s_tgd_add
+
+# ASM: or %g1, %lo(sym), %g3
+# ASM-NEXT: sethi %hi(sym), %l0
+# ASM-NEXT: sethi %h44(sym), %l0
+# ASM-NEXT: or %g1, %m44(sym), %g3
+# ASM-NEXT: or %g1, %l44(sym), %g3
+# OBJDUMP: 0000000: R_SPARC_LO10 sym
+# OBJDUMP: 0000004: R_SPARC_HI22 sym
+# OBJDUMP: 0000008: R_SPARC_H44 sym
+# OBJDUMP: 000000c: R_SPARC_M44 sym
+# OBJDUMP: 0000010: R_SPARC_L44 sym
+or %g1, %lo(sym), %g3
+sethi %hi(sym), %l0
+sethi %h44(sym), %l0
+or %g1, %m44(sym), %g3
+or %g1, %l44(sym), %g3
+
+# ASM: sethi %hh(sym), %l0
+# ASM-NEXT: sethi %hh(sym), %l0
+# ASM-NEXT: or %g1, %hm(sym), %g3
+# ASM-NEXT: or %g1, %hm(sym), %g3
+# ASM-NEXT: sethi %lm(sym), %l0
+# OBJDUMP: 0000014: R_SPARC_HH22 sym
+# OBJDUMP: 0000018: R_SPARC_HH22 sym
+# OBJDUMP: 000001c: R_SPARC_HM10 sym
+# OBJDUMP: 0000020: R_SPARC_HM10 sym
+# OBJDUMP: 0000024: R_SPARC_LM22 sym
+sethi %hh(sym), %l0
+sethi %uhi(sym), %l0
+or %g1, %hm(sym), %g3
+or %g1, %ulo(sym), %g3
+sethi %lm(sym), %l0
+
+# ASM: sethi %hix(sym), %g1
+# ASM-NEXT: xor %g1, %lox(sym), %g1
+# ASM-NEXT: sethi %gdop_hix22(sym), %l1
+# ASM-NEXT: or %l1, %gdop_lox10(sym), %l1
+# ASM-NEXT: ldx [%l7+%l1], %l2, %gdop(sym)
+# OBJDUMP: R_SPARC_HIX22 sym
+# OBJDUMP: R_SPARC_LOX10 sym
+# OBJDUMP: R_SPARC_GOTDATA_HIX22 sym
+# OBJDUMP: R_SPARC_GOTDATA_LOX10 sym
+# OBJDUMP: R_SPARC_GOTDATA_OP sym
+sethi %hix(sym), %g1
+xor %g1, %lox(sym), %g1
+sethi %gdop_hix22(sym), %l1
+or %l1, %gdop_lox10(sym), %l1
+ldx [%l7 + %l1], %l2, %gdop(sym)
+
+# OBJDUMP-LABEL: <.tls>:
+.section .tls,"ax"
+## Local Executable model:
+# ASM: sethi %tle_hix22(s_tle_hix22), %i0
+# ASM-NEXT: xor %i0, %tle_lox10(s_tle_lox10), %i0
+
+# OBJDUMP: 31 00 00 00 sethi 0x0, %i0
+# OBJDUMP-NEXT: 00000000: R_SPARC_TLS_LE_HIX22 s_tle_hix22
+# OBJDUMP-NEXT: b0 1e 20 00 xor %i0, 0x0, %i0
+# OBJDUMP-NEXT: 00000004: R_SPARC_TLS_LE_LOX10 s_tle_lox10
+ sethi %tle_hix22(s_tle_hix22), %i0
+ xor %i0, %tle_lox10(s_tle_lox10), %i0
+
+## Initial Executable model
+# ASM: sethi %tie_hi22(s_tie_hi22), %i1
+# ASM-NEXT: add %i1, %tie_lo10(s_tie_lo10), %i1
+# ASM-NEXT: ld [%i0+%i1], %i0, %tie_ld(s_tie_ld)
+# ASM-NEXT: ldx [%i0+%i1], %i0, %tie_ldx(s_tie_ldx)
+# ASM-NEXT: add %g7, %i0, %o0, %tie_add(s_tie_add)
+
+# OBJDUMP: R_SPARC_TLS_IE_HI22 s_tie_hi22
+# OBJDUMP: R_SPARC_TLS_IE_LO10 s_tie_lo10
+# OBJDUMP: R_SPARC_TLS_IE_LD s_tie_ld
+# OBJDUMP: R_SPARC_TLS_IE_LDX s_tie_ldx
+# OBJDUMP: R_SPARC_TLS_IE_ADD s_tie_add
+ sethi %tie_hi22(s_tie_hi22), %i1
+ add %i1, %tie_lo10(s_tie_lo10), %i1
+ ld [%i0+%i1], %i0, %tie_ld(s_tie_ld)
+ ldx [%i0+%i1], %i0, %tie_ldx(s_tie_ldx)
+ add %g7, %i0, %o0, %tie_add(s_tie_add)
+
+## Local Dynamic model
+# ASM: sethi %tldo_hix22(s_tldo_hix22), %i1
+# ASM-NEXT: sethi %tldm_hi22(s_tldm_hi22), %i2
+# ASM-NEXT: add %i2, %tldm_lo10(s_tldm_lo10), %i2
+# ASM-NEXT: add %i0, %i2, %o0, %tldm_add(s_tldm_add)
+# ASM-NEXT: xor %i1, %tldo_lox10(s_tldo_lox10), %i0
+# ASM-NEXT: call __tls_get_addr, %tldm_call(s_tldm_call)
+# ASM-NEXT: nop
+# ASM-NEXT: add %o0, %i0, %o0, %tldo_add(s_tldo_add)
+
+# OBJDUMP: R_SPARC_TLS_LDO_HIX22 s_tldo_hix22
+# OBJDUMP: R_SPARC_TLS_LDM_HI22 s_tldm_hi22
+# OBJDUMP: R_SPARC_TLS_LDM_LO10 s_tldm_lo10
+# OBJDUMP: R_SPARC_TLS_LDM_ADD s_tldm_add
+# OBJDUMP: R_SPARC_TLS_LDO_LOX10 s_tldo_lox10
+# OBJDUMP: R_SPARC_TLS_LDM_CALL s_tldm_call
+# OBJDUMP: R_SPARC_TLS_LDO_ADD s_tldo_add
+ sethi %tldo_hix22(s_tldo_hix22), %i1
+ sethi %tldm_hi22(s_tldm_hi22), %i2
+ add %i2, %tldm_lo10(s_tldm_lo10), %i2
+ add %i0, %i2, %o0, %tldm_add(s_tldm_add)
+ xor %i1, %tldo_lox10(s_tldo_lox10), %i0
+ call __tls_get_addr, %tldm_call(s_tldm_call)
+ nop
+ add %o0, %i0, %o0, %tldo_add(s_tldo_add)
+
+## General Dynamic model
+# ASM: sethi %tgd_hi22(s_tgd_hi22), %i1
+# ASM-NEXT: add %i1, %tgd_lo10(s_tgd_lo10), %i1
+# ASM-NEXT: add %i0, %i1, %o0, %tgd_add(s_tgd_add)
+# ASM-NEXT: call __tls_get_addr, %tgd_call(s_tgd_call)
+
+# OBJDUMP: R_SPARC_TLS_GD_HI22 s_tgd_hi22
+# OBJDUMP: R_SPARC_TLS_GD_LO10 s_tgd_lo10
+# OBJDUMP: R_SPARC_TLS_GD_ADD s_tgd_add
+# OBJDUMP: R_SPARC_TLS_GD_CALL s_tgd_call
+ sethi %tgd_hi22(s_tgd_hi22), %i1
+ add %i1, %tgd_lo10(s_tgd_lo10), %i1
+ add %i0, %i1, %o0, %tgd_add(s_tgd_add)
+ call __tls_get_addr, %tgd_call(s_tgd_call)
+
+ .type Local, at object
+ .section .tbss,#alloc,#write,#tls
+s_tle_hix22:
+s_tldo_hix22:
+ .word 0
+ .size Local, 4
diff --git a/llvm/test/MC/Sparc/sparc-assembly-exprs.s b/llvm/test/MC/Sparc/sparc-assembly-exprs.s
index c69199ffe72f5..68ea447a226d6 100644
--- a/llvm/test/MC/Sparc/sparc-assembly-exprs.s
+++ b/llvm/test/MC/Sparc/sparc-assembly-exprs.s
@@ -1,33 +1,33 @@
-! RUN: llvm-mc %s -triple=sparc -show-encoding | FileCheck %s
+! RUN: llvm-mc %s -triple=sparc | FileCheck %s
! RUN: llvm-mc %s -triple=sparc -filetype=obj | llvm-objdump -r -d - | FileCheck %s --check-prefix=OBJDUMP
- ! CHECK: mov 1033, %o1 ! encoding: [0x92,0x10,0x24,0x09]
+ ! CHECK: mov 1033, %o1
mov (0x400|9), %o1
- ! CHECK: mov 60, %o2 ! encoding: [0x94,0x10,0x20,0x3c]
+ ! CHECK: mov 60, %o2
mov ((12+3)<<2), %o2
- ! CHECK: ba symStart+4 ! encoding: [0x10,0b10AAAAAA,A,A]
+ ! CHECK: ba symStart+4
! OBJDUMP: ba 0x1
symStart:
b symStart + 4
- ! CHECK: mov symEnd-symStart, %g1 ! encoding: [0x82,0x10,0b001AAAAA,A]
+ ! CHECK: mov symEnd-symStart, %g1
! OBJDUMP: mov 0x18, %g1
mov symEnd - symStart, %g1
- ! CHECK: sethi %hi(sym+10), %g2 ! encoding: [0x05,0b00AAAAAA,A,A]
+ ! CHECK: sethi %hi(sym+10), %g2
! OBJDUMP: R_SPARC_HI22 sym+0xa
sethi %hi(sym + 10), %g2
- ! CHECK: call foo+40 ! encoding: [0b01AAAAAA,A,A,A]
+ ! CHECK: call foo+40
! OBJDUMP: R_SPARC_WDISP30 foo+0x28
call foo + 40
- ! CHECK: add %g1, val+100, %g1 ! encoding: [0x82,0x00,0b011AAAAA,A]
+ ! CHECK: add %g1, val+100, %g1
! OBJDUMP: R_SPARC_13 val+0x64
add %g1, val + 100, %g1
- ! CHECK: add %g1, 100+val, %g2 ! encoding: [0x84,0x00,0b011AAAAA,A]
+ ! CHECK: add %g1, 100+val, %g2
! OBJDUMP: R_SPARC_13 val+0x64
add %g1, 100 + val, %g2
symEnd:
diff --git a/llvm/test/MC/Sparc/sparc-relocations.s b/llvm/test/MC/Sparc/sparc-relocations.s
index 62088338cb363..3510eaabc0250 100644
--- a/llvm/test/MC/Sparc/sparc-relocations.s
+++ b/llvm/test/MC/Sparc/sparc-relocations.s
@@ -1,83 +1,23 @@
-! RUN: llvm-mc %s -triple=sparcv9 -show-encoding | FileCheck %s
+! RUN: llvm-mc %s -triple=sparcv9 | FileCheck %s
! RUN: llvm-mc %s -triple=sparcv9 -filetype=obj | llvm-readobj -r - | FileCheck %s --check-prefix=CHECK-OBJ
! CHECK-OBJ: Format: elf64-sparc
! CHECK-OBJ: .rela.text {
! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_WDISP30 foo
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HI22 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_H44 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_M44 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_L44 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HH22 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HH22 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HM10 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HM10 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LM22 sym
! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_13 sym
! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_13 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HIX22 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LOX10 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOTDATA_HIX22 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOTDATA_LOX10 sym
- ! CHECK-OBJ-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOTDATA_OP sym
! CHECK-OBJ-NEXT: }
call a
- ! CHECK: call foo ! encoding: [0b01AAAAAA,A,A,A]
+ ! CHECK: call foo
call foo
- ! CHECK: or %g1, %lo(sym), %g3 ! encoding: [0x86,0x10,0b011000AA,A]
- or %g1, %lo(sym), %g3
-
- ! CHECK: sethi %hi(sym), %l0 ! encoding: [0x21,0b00AAAAAA,A,A]
- sethi %hi(sym), %l0
-
- ! CHECK: sethi %h44(sym), %l0 ! encoding: [0x21,0b00AAAAAA,A,A]
- sethi %h44(sym), %l0
-
- ! CHECK: or %g1, %m44(sym), %g3 ! encoding: [0x86,0x10,0b011000AA,A]
- or %g1, %m44(sym), %g3
-
- ! CHECK: or %g1, %l44(sym), %g3 ! encoding: [0x86,0x10,0b0110AAAA,A]
- or %g1, %l44(sym), %g3
-
- ! CHECK: sethi %hh(sym), %l0 ! encoding: [0x21,0b00AAAAAA,A,A]
- sethi %hh(sym), %l0
-
- ! CHECK: sethi %hh(sym), %l0 ! encoding: [0x21,0b00AAAAAA,A,A]
- sethi %uhi(sym), %l0
-
- ! CHECK: or %g1, %hm(sym), %g3 ! encoding: [0x86,0x10,0b011000AA,A]
- or %g1, %hm(sym), %g3
-
- ! CHECK: or %g1, %hm(sym), %g3 ! encoding: [0x86,0x10,0b011000AA,A]
- or %g1, %ulo(sym), %g3
-
- ! CHECK: sethi %lm(sym), %l0 ! encoding: [0x21,0b00AAAAAA,A,A]
- sethi %lm(sym), %l0
-
- ! CHECK: or %g1, sym, %g3 ! encoding: [0x86,0x10,0b011AAAAA,A]
+ ! CHECK: or %g1, sym, %g3
or %g1, sym, %g3
- ! CHECK: or %g1, sym+4, %g3 ! encoding: [0x86,0x10,0b011AAAAA,A]
+ ! CHECK: or %g1, sym+4, %g3
or %g1, (sym+4), %g3
- ! CHECK: sethi %hix(sym), %g1 ! encoding: [0x03,0b00AAAAAA,A,A]
- sethi %hix(sym), %g1
-
- ! CHECK: xor %g1, %lox(sym), %g1 ! encoding: [0x82,0x18,0b011AAAAA,A]
- xor %g1, %lox(sym), %g1
-
- ! CHECK: sethi %gdop_hix22(sym), %l1 ! encoding: [0x23,0x00,0x00,0x00]
- sethi %gdop_hix22(sym), %l1
-
- ! CHECK: or %l1, %gdop_lox10(sym), %l1 ! encoding: [0xa2,0x14,0x60,0x00]
- or %l1, %gdop_lox10(sym), %l1
-
- ! CHECK: ldx [%l7+%l1], %l2, %gdop(sym) ! encoding: [0xe4,0x5d,0xc0,0x11]
- ldx [%l7 + %l1], %l2, %gdop(sym)
-
! This test needs to placed last in the file
! CHECK: .half a-.Ltmp0
.half a - .
diff --git a/llvm/test/MC/Sparc/sparc-tls-relocations.s b/llvm/test/MC/Sparc/sparc-tls-relocations.s
deleted file mode 100644
index bf29a3ed6b9c8..0000000000000
--- a/llvm/test/MC/Sparc/sparc-tls-relocations.s
+++ /dev/null
@@ -1,138 +0,0 @@
-! Testing Sparc TLS relocations emission
-! (for now a couple local ones).
-!
-! RUN: llvm-mc %s -triple=sparc | FileCheck %s --check-prefix=ASM
-! RUN: llvm-mc %s -triple=sparcv9 | FileCheck %s --check-prefix=ASM
-! RUN: llvm-mc %s -triple=sparc -filetype=obj | llvm-readobj -r - | FileCheck %s --check-prefix=REL
-! RUN: llvm-mc %s -triple=sparcv9 -filetype=obj | llvm-readobj -r - | FileCheck %s --check-prefix=REL
-! RUN: llvm-mc %s -triple=sparc -filetype=obj | llvm-objdump -r -d - | FileCheck %s --check-prefix=OBJDUMP
-! RUN: llvm-mc %s -triple=sparcv9 -filetype=obj | llvm-objdump -r -d - | FileCheck %s --check-prefix=OBJDUMP
-
-! REL: Arch: sparc
-! REL: Relocations [
-! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LE_HIX22 Local 0x0
-! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LE_LOX10 Local 0x0
-! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LDO_HIX22 Local 0x0
-! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LDM_HI22 Local 0x0
-! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LDM_LO10 Local 0x0
-! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LDO_LOX10 Local 0x0
-! REL: ]
-
-
-! OBJDUMP: <foo>:
-foo:
-! Here we use two
diff erent sequences to get the address of a static TLS variable 'Local'
-! (note - there is no intent to have valid assembler function here,
-! we just check how TLS relocations are emitted)
-!
-! Sequence for Local Executable model:
-! LE_HIX22/LE_LOX10
-
-! OBJDUMP: {{[0-9,a-f]+}}: 31 00 00 00 sethi 0x0, %i0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LE_HIX22 Local
-! ASM: sethi %tle_hix22(Local), %i0
- sethi %tle_hix22(Local), %i0
-
-! OBJDUMP: {{[0-9,a-f]+}}: b0 1e 20 00 xor %i0, 0x0, %i0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LE_LOX10 Local
-! ASM: xor %i0, %tle_lox10(Local), %i0
- xor %i0, %tle_lox10(Local), %i0
-
-
-! Second sequence is for PIC, so it is more complicated.
-! Local Dynamic model:
-! LDO_HIX22/LDO_LOX10/LDO_ADD/LDM_HI22/LDM_LO10/LDM_ADD/LDM_CALL
-
-! OBJDUMP: {{[0-9,a-f]+}}: 33 00 00 00 sethi 0x0, %i1
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDO_HIX22 Local
-! ASM: sethi %tldo_hix22(Local), %i1
- sethi %tldo_hix22(Local), %i1
-
-! OBJDUMP: {{[0-9,a-f]+}}: 35 00 00 00 sethi 0x0, %i2
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_HI22 Local
-! ASM: sethi %tldm_hi22(Local), %i2
- sethi %tldm_hi22(Local), %i2
-
-! OBJDUMP: {{[0-9,a-f]+}}: b4 06 a0 00 add %i2, 0x0, %i2
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_LO10 Local
-! ASM: add %i2, %tldm_lo10(Local), %i2
- add %i2, %tldm_lo10(Local), %i2
-
-! OBJDUMP: {{[0-9,a-f]+}}: 90 06 00 1a add %i0, %i2, %o0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_ADD Local
-! ASM: add %i0, %i2, %o0, %tldm_add(Local)
- add %i0, %i2, %o0, %tldm_add(Local)
-
-! OBJDUMP: {{[0-9,a-f]+}}: b0 1e 60 00 xor %i1, 0x0, %i0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDO_LOX10 Local
-! ASM: xor %i1, %tldo_lox10(Local), %i0
- xor %i1, %tldo_lox10(Local), %i0
-
-! OBJDUMP: {{[0-9,a-f]+}}: 40 00 00 00 call 0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_CALL Local
-! ASM: call __tls_get_addr, %tldm_call(Local)
- call __tls_get_addr, %tldm_call(Local)
- nop
-
-! OBJDUMP: {{[0-9,a-f]+}}: 90 02 00 18 add %o0, %i0, %o0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDO_ADD Local
-! ASM: add %o0, %i0, %o0, %tldo_add(Local)
- add %o0, %i0, %o0, %tldo_add(Local)
-
-! Next two sequences are for extern symbols.
-! Initial Executable model:
-! IE_HI22/IE_LO10/IE_LD (or IE_LDX)/IE_ADD
-
-! OBJDUMP: {{[0-9,a-f]+}}: 33 00 00 00 sethi 0x0, %i1
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_IE_HI22 Extern
-! ASM: sethi %tie_hi22(Extern), %i1
- sethi %tie_hi22(Extern), %i1
-
-! OBJDUMP: {{[0-9,a-f]+}}: b2 06 60 00 add %i1, 0x0, %i1
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_IE_LO10 Extern
-! ASM: add %i1, %tie_lo10(Extern), %i1
- add %i1, %tie_lo10(Extern), %i1
-
-! OBJDUMP: {{[0-9,a-f]+}}: f0 06 00 19 ld [%i0+%i1], %i0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_IE_LD Extern
-! ASM: ld [%i0+%i1], %i0, %tie_ld(Extern)
- ld [%i0+%i1], %i0, %tie_ld(Extern)
-
-! OBJDUMP: {{[0-9,a-f]+}}: f0 5e 00 19 ldx [%i0+%i1], %i0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_IE_LDX Extern
-! ASM: ldx [%i0+%i1], %i0, %tie_ldx(Extern)
- ldx [%i0+%i1], %i0, %tie_ldx(Extern)
-
-! OBJDUMP: {{[0-9,a-f]+}}: 90 01 c0 18 add %g7, %i0, %o0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_IE_ADD Extern
-! ASM: add %g7, %i0, %o0, %tie_add(Extern)
- add %g7, %i0, %o0, %tie_add(Extern)
-
-! General Dynamic model
-! GD_HI22/GD_LO10/GD_ADD/GD_CALL
-
-! OBJDUMP: {{[0-9,a-f]+}}: 33 00 00 00 sethi 0x0, %i1
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_GD_HI22 Extern
-! ASM: sethi %tgd_hi22(Extern), %i1
- sethi %tgd_hi22(Extern), %i1
-
-! OBJDUMP: {{[0-9,a-f]+}}: b2 06 60 00 add %i1, 0x0, %i1
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_GD_LO10 Extern
-! ASM: add %i1, %tgd_lo10(Extern), %i1
- add %i1, %tgd_lo10(Extern), %i1
-
-! OBJDUMP: {{[0-9,a-f]+}}: 90 06 00 19 add %i0, %i1, %o0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_GD_ADD Extern
-! ASM: add %i0, %i1, %o0, %tgd_add(Extern)
- add %i0, %i1, %o0, %tgd_add(Extern)
-
-! OBJDUMP: {{[0-9,a-f]+}}: 40 00 00 00 call 0
-! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_GD_CALL Extern
-! ASM: call __tls_get_addr, %tgd_call(Extern)
- call __tls_get_addr, %tgd_call(Extern)
-
- .type Local, at object
- .section .tbss,#alloc,#write,#tls
-Local:
- .word 0
- .size Local, 4
More information about the llvm-commits
mailing list