Previous: TILE-Gx Registers, Up: TILE-Gx Syntax


9.39.2.3 Symbolic Operand Modifiers

The assembler supports several modifiers when using symbol addresses in TILE-Gx instruction operands. The general syntax is the following:

     modifier(symbol)

The following modifiers are supported:

hw0
This modifier is used to load bits 0-15 of the symbol's address.
hw1
This modifier is used to load bits 16-31 of the symbol's address.
hw2
This modifier is used to load bits 32-47 of the symbol's address.
hw3
This modifier is used to load bits 48-63 of the symbol's address.
hw0_last
This modifier yields the same value as hw0, but it also checks that the value does not overflow.
hw1_last
This modifier yields the same value as hw1, but it also checks that the value does not overflow.
hw2_last
This modifier yields the same value as hw2, but it also checks that the value does not overflow.

A 48-bit symbolic value is constructed by using the following idiom:

          moveli r0, hw2_last(sym)
          shl16insli r0, r0, hw1(sym)
          shl16insli r0, r0, hw0(sym)
     

hw0_got
This modifier is used to load bits 0-15 of the symbol's offset in the GOT entry corresponding to the symbol.
hw1_got
This modifier is used to load bits 16-31 of the symbol's offset in the GOT entry corresponding to the symbol.
hw2_got
This modifier is used to load bits 32-47 of the symbol's offset in the GOT entry corresponding to the symbol.
hw3_got
This modifier is used to load bits 48-63 of the symbol's offset in the GOT entry corresponding to the symbol.
hw0_last_got
This modifier yields the same value as hw0_got, but it also checks that the value does not overflow.
hw1_last_got
This modifier yields the same value as hw1_got, but it also checks that the value does not overflow.
hw2_last_got
This modifier yields the same value as hw2_got, but it also checks that the value does not overflow.
plt
This modifier is used for function symbols. It causes a procedure linkage table, an array of code stubs, to be created at the time the shared object is created or linked against, together with a global offset table entry. The value is a pc-relative offset to the corresponding stub code in the procedure linkage table. This arrangement causes the run-time symbol resolver to be called to look up and set the value of the symbol the first time the function is called (at latest; depending environment variables). It is only safe to leave the symbol unresolved this way if all references are function calls.
hw0_tls_gd
This modifier is used to load bits 0-15 of the offset of the GOT entry of the symbol's TLS descriptor, to be used for general-dynamic TLS accesses.
hw1_tls_gd
This modifier is used to load bits 16-31 of the offset of the GOT entry of the symbol's TLS descriptor, to be used for general-dynamic TLS accesses.
hw2_tls_gd
This modifier is used to load bits 32-47 of the offset of the GOT entry of the symbol's TLS descriptor, to be used for general-dynamic TLS accesses.
hw3_tls_gd
This modifier is used to load bits 48-63 of the offset of the GOT entry of the symbol's TLS descriptor, to be used for general-dynamic TLS accesses.
hw0_last_tls_gd
This modifier yields the same value as hw0_tls_gd, but it also checks that the value does not overflow.
hw1_last_tls_gd
This modifier yields the same value as hw1_tls_gd, but it also checks that the value does not overflow.
hw2_last_tls_gd
This modifier yields the same value as hw2_tls_gd, but it also checks that the value does not overflow.
hw0_tls_ie
This modifier is used to load bits 0-15 of the offset of the GOT entry containing the offset of the symbol's address from the TCB, to be used for initial-exec TLS accesses.
hw1_tls_ie
This modifier is used to load bits 16-31 of the offset of the GOT entry containing the offset of the symbol's address from the TCB, to be used for initial-exec TLS accesses.
hw2_tls_ie
This modifier is used to load bits 32-47 of the offset of the GOT entry containing the offset of the symbol's address from the TCB, to be used for initial-exec TLS accesses.
hw3_tls_ie
This modifier is used to load bits 48-63 of the offset of the GOT entry containing the offset of the symbol's address from the TCB, to be used for initial-exec TLS accesses.
hw0_last_tls_ie
This modifier yields the same value as hw0_tls_ie, but it also checks that the value does not overflow.
hw1_last_tls_ie
This modifier yields the same value as hw1_tls_ie, but it also checks that the value does not overflow.
hw2_last_tls_ie
This modifier yields the same value as hw2_tls_ie, but it also checks that the value does not overflow.