as: TILE-Gx Modifiers
1
1 9.47.2.3 Symbolic Operand Modifiers
1 ...................................
1
1 The assembler supports several modifiers when using symbol addresses in
1 TILE-Gx instruction operands. The general syntax is the following:
1
1 modifier(symbol)
1
1 The following modifiers are supported:
1
1 'hw0'
1
1 This modifier is used to load bits 0-15 of the symbol's address.
1
1 'hw1'
1
1 This modifier is used to load bits 16-31 of the symbol's address.
1
1 'hw2'
1
1 This modifier is used to load bits 32-47 of the symbol's address.
1
1 'hw3'
1
1 This modifier is used to load bits 48-63 of the symbol's address.
1
1 'hw0_last'
1
1 This modifier yields the same value as 'hw0', but it also checks
1 that the value does not overflow.
1
1 'hw1_last'
1
1 This modifier yields the same value as 'hw1', but it also checks
1 that the value does not overflow.
1
1 'hw2_last'
1
1 This modifier yields the same value as 'hw2', but it also checks
1 that the value does not overflow.
1
1 A 48-bit symbolic value is constructed by using the following
1 idiom:
1
1 moveli r0, hw2_last(sym)
1 shl16insli r0, r0, hw1(sym)
1 shl16insli r0, r0, hw0(sym)
1
1 'hw0_got'
1
1 This modifier is used to load bits 0-15 of the symbol's offset in
1 the GOT entry corresponding to the symbol.
1
1 'hw0_last_got'
1
1 This modifier yields the same value as 'hw0_got', but it also
1 checks that the value does not overflow.
1
1 'hw1_last_got'
1
1 This modifier is used to load bits 16-31 of the symbol's offset in
1 the GOT entry corresponding to the symbol, and it also checks that
1 the value does not overflow.
1
1 'plt'
1
1 This modifier is used for function symbols. It causes a _procedure
1 linkage table_, an array of code stubs, to be created at the time
1 the shared object is created or linked against, together with a
1 global offset table entry. The value is a pc-relative offset to
1 the corresponding stub code in the procedure linkage table. This
1 arrangement causes the run-time symbol resolver to be called to
1 look up and set the value of the symbol the first time the function
1 is called (at latest; depending environment variables). It is only
1 safe to leave the symbol unresolved this way if all references are
1 function calls.
1
1 'hw0_plt'
1
1 This modifier is used to load bits 0-15 of the pc-relative address
1 of a plt entry.
1
1 'hw1_plt'
1
1 This modifier is used to load bits 16-31 of the pc-relative address
1 of a plt entry.
1
1 'hw1_last_plt'
1
1 This modifier yields the same value as 'hw1_plt', but it also
1 checks that the value does not overflow.
1
1 'hw2_last_plt'
1
1 This modifier is used to load bits 32-47 of the pc-relative address
1 of a plt entry, and it also checks that the value does not
1 overflow.
1
1 'hw0_tls_gd'
1
1 This modifier is used to load bits 0-15 of the offset of the GOT
1 entry of the symbol's TLS descriptor, to be used for
1 general-dynamic TLS accesses.
1
1 'hw0_last_tls_gd'
1
1 This modifier yields the same value as 'hw0_tls_gd', but it also
1 checks that the value does not overflow.
1
1 'hw1_last_tls_gd'
1
1 This modifier is used to load bits 16-31 of the offset of the GOT
1 entry of the symbol's TLS descriptor, to be used for
1 general-dynamic TLS accesses. It also checks that the value does
1 not overflow.
1
1 'hw0_tls_ie'
1
1 This modifier is used to load bits 0-15 of the offset of the GOT
1 entry containing the offset of the symbol's address from the TCB,
1 to be used for initial-exec TLS accesses.
1
1 'hw0_last_tls_ie'
1
1 This modifier yields the same value as 'hw0_tls_ie', but it also
1 checks that the value does not overflow.
1
1 'hw1_last_tls_ie'
1
1 This modifier is used to load bits 16-31 of the offset of the GOT
1 entry containing the offset of the symbol's address from the TCB,
1 to be used for initial-exec TLS accesses. It also checks that the
1 value does not overflow.
1
1 'hw0_tls_le'
1
1 This modifier is used to load bits 0-15 of the offset of the
1 symbol's address from the TCB, to be used for local-exec TLS
1 accesses.
1
1 'hw0_last_tls_le'
1
1 This modifier yields the same value as 'hw0_tls_le', but it also
1 checks that the value does not overflow.
1
1 'hw1_last_tls_le'
1
1 This modifier is used to load bits 16-31 of the offset of the
1 symbol's address from the TCB, to be used for local-exec TLS
1 accesses. It also checks that the value does not overflow.
1
1 'tls_gd_call'
1
1 This modifier is used to tag an instruction as the "call" part of a
1 calling sequence for a TLS GD reference of its operand.
1
1 'tls_gd_add'
1
1 This modifier is used to tag an instruction as the "add" part of a
1 calling sequence for a TLS GD reference of its operand.
1
1 'tls_ie_load'
1
1 This modifier is used to tag an instruction as the "load" part of a
1 calling sequence for a TLS IE reference of its operand.
1