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