as: TILEPro Modifiers

1 
1 9.48.2.3 Symbolic Operand Modifiers
1 ...................................
1 
1 The assembler supports several modifiers when using symbol addresses in
1 TILEPro instruction operands.  The general syntax is the following:
1 
1      modifier(symbol)
1 
1    The following modifiers are supported:
1 
1 'lo16'
1 
1      This modifier is used to load the low 16 bits of the symbol's
1      address, sign-extended to a 32-bit value (sign-extension allows it
1      to be range-checked against signed 16 bit immediate operands
1      without complaint).
1 
1 'hi16'
1 
1      This modifier is used to load the high 16 bits of the symbol's
1      address, also sign-extended to a 32-bit value.
1 
1 'ha16'
1 
1      'ha16(N)' is identical to 'hi16(N)', except if 'lo16(N)' is
1      negative it adds one to the 'hi16(N)' value.  This way 'lo16' and
1      'ha16' can be added to create any 32-bit value using 'auli'.  For
1      example, here is how you move an arbitrary 32-bit address into r3:
1 
1           moveli r3, lo16(sym)
1           auli r3, r3, ha16(sym)
1 
1 'got'
1 
1      This modifier is used to load the offset of the GOT entry
1      corresponding to the symbol.
1 
1 'got_lo16'
1 
1      This modifier is used to load the sign-extended low 16 bits of the
1      offset of the GOT entry corresponding to the symbol.
1 
1 'got_hi16'
1 
1      This modifier is used to load the sign-extended high 16 bits of the
1      offset of the GOT entry corresponding to the symbol.
1 
1 'got_ha16'
1 
1      This modifier is like 'got_hi16', but it adds one if 'got_lo16' of
1      the input value is negative.
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 'tls_gd'
1 
1      This modifier is used to load the offset of the GOT entry of the
1      symbol's TLS descriptor, to be used for general-dynamic TLS
1      accesses.
1 
1 'tls_gd_lo16'
1 
1      This modifier is used to load the sign-extended low 16 bits of the
1      offset of the GOT entry of the symbol's TLS descriptor, to be used
1      for general dynamic TLS accesses.
1 
1 'tls_gd_hi16'
1 
1      This modifier is used to load the sign-extended high 16 bits of the
1      offset of the GOT entry of the symbol's TLS descriptor, to be used
1      for general dynamic TLS accesses.
1 
1 'tls_gd_ha16'
1 
1      This modifier is like 'tls_gd_hi16', but it adds one to the value
1      if 'tls_gd_lo16' of the input value is negative.
1 
1 'tls_ie'
1 
1      This modifier is used to load the offset of the GOT entry
1      containing the offset of the symbol's address from the TCB, to be
1      used for initial-exec TLS accesses.
1 
1 'tls_ie_lo16'
1 
1      This modifier is used to load the low 16 bits of the offset of the
1      GOT entry containing the offset of the symbol's address from the
1      TCB, to be used for initial-exec TLS accesses.
1 
1 'tls_ie_hi16'
1 
1      This modifier is used to load the high 16 bits of the offset of the
1      GOT entry containing the offset of the symbol's address from the
1      TCB, to be used for initial-exec TLS accesses.
1 
1 'tls_ie_ha16'
1 
1      This modifier is like 'tls_ie_hi16', but it adds one to the value
1      if 'tls_ie_lo16' of the input value is negative.
1 
1 'tls_le'
1 
1      This modifier is used to load the offset of the symbol's address
1      from the TCB, to be used for local-exec TLS accesses.
1 
1 'tls_le_lo16'
1 
1      This modifier is used to load the low 16 bits of the offset of the
1      symbol's address from the TCB, to be used for local-exec TLS
1      accesses.
1 
1 'tls_le_hi16'
1 
1      This modifier is used to load the high 16 bits of the offset of the
1      symbol's address from the TCB, to be used for local-exec TLS
1      accesses.
1 
1 'tls_le_ha16'
1 
1      This modifier is like 'tls_le_hi16', but it adds one to the value
1      if 'tls_le_lo16' of the input value is negative.
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