Itanium(R) processor topicFloating-point Load Instruction

ldf

Operation Font Conventions

Instruction Type M

Format

(qp) ldffsz.fldtype.ldhint f1 = [r3] no_base_update_form

(qp) ldffsz.fldtype.ldhint f1 = [r3], r2 reg_base_update_form

(qp) ldffsz.fldtype.ldhint f1 = [r3], imm9 imm_base_update_form

(qp) ldf8.fldtype.ldhint f1 = [r3] integer_form, no_base_update_form

(qp) ldf8.fldtype.ldhint f1 = [r3], r2 integer_form, reg_base_update_form

(qp) ldf8.fldtype.ldhint f1 = [r3], imm9 integer_form, imm_base_update_form

(qp) ldf.fill.ldhint f1 = [r3] fill_form, no_base_update_form

(qp) ldf.fill.ldhint f1 = [r3], r2 fill_form, reg_base_update_form

(qp) ldf.fill.ldhint f1 = [r3], imm9 fill_form, imm_base_update_form


Description

A value consisting of fsz bytes is read from memory starting at the address specified by the value in GR r3. The value is then converted into the floating-point register format and placed in FR f1. The fldtype completer specifies special load operations.

For the integer_form, an 8-byte value is loaded and placed in the significand field of FR f1 without conversion. The exponent field of FR f1 is set to the biased exponent for 2.063 (0x1003E) and the sign field of FR f1 is set to positive(0).

For the fill_form, a 16-byte value is loaded, and the appropriate fields are placed in FR f1 without conversion. This instruction is used for reloading a spilled register.

In the base update forms, the value in GR r3 is added to either a signed immediate value (imm9) or a value from GR r2, and the result is placed back in GR r3. This base register update is done after the load, and does not affect the load address. In the reg_base_update_form, if the NaT bit corresponding to GR r2 is set, then the NaT bit corresponding to GR r3 is set and no fault is raised.

For the non-speculative load types, if NaT bit associated with GR r3 is 1, a Register NaT Consumption fault is taken. For speculative and speculative advanced loads, no fault is raised, and the exception is deferred. For the base-update calculation, if the NaT bit associated with GR r2 is 1, the NaT bit associated with GR r3 is set to 1 and no fault is raised.

The value of the ldhint modifier specifies the locality of the memory access. A prefetch hint is implied in the base update forms. The address specified by the value in GR r3 after the base update acts as a hint to prefetch the indicated cache line. This prefetch uses the locality hints specified by ldhint. Prefetch and locality hints do not affect program functionality and may be ignored by the implementation.

In the no_base_update form, the value in GR r3 is not modified and no prefetch hint is implied.

The PSR.mfl and PSR.mfh bits are updated to reflect the modification of FR f1.

Hardware support for ldfe (10-byte) instructions that reference a page that is neither a cacheable page with write-back policy nor a NaTPage is optional. On processor models that do not support such ldfe accesses, an Unsupported Data Reference fault is raised when an unsupported reference is attempted. The fault is delivered only on the normal, advanced, and check load flavors. Control-speculative flavors of ldfe always defer the Unsupported Data Reference fault.


Related Topics:

fabs - Floating-point Absolute Value Instruction

fadd - Floating-point Add Instruction

famax - Floating-point Absolute Maximum Instruction

famin - Floating-point Absolute Minimum Instruction

fand - Floating-point AND Instruction

fchkf - Floating-point Check Flags Instruction

fclass - Floating-point Class Instruction

fclrf - Floating-point Clear Flags Instruction

fcmp - Floating-point Compare Instruction

fcvt.xf - Convert Signed Integer to Floating-point Instruction

Floating-Point Arithmetic Instructions

Floating-Point Instructions

Floating-Point Memory Access Instructions

Floating-Point Non-Arithmetic Instructions

Floating-Point Pseudo-Operations

Floating-Point Register Transfer Instructions

Floating-Point Status Register (FPSR) Status Field Instructions

fma - Floating-point Multiply Add Instruction

fmax - Floating-point Maximum Instruction

fmerge - Floating-point Merge Instruction

fmin - Floating-point Minimum Instruction

fmpy - Floating-point Multiply Instruction

fms - Floating-point Multiply Subtract Instruction

fneg - Floating-point Negate Instruction

fnma - Floating-point Negative Multiply Add Instruction

fnmpy - Floating-point Negative Multiply Instruction

fnorm - Floating-point Normalize Instruction

for - Floating-point OR Instruction

fpabs - Floating-point Parallel Absolute Value Instruction

fpack - Floating-point Pack Instruction

fpamax - Floating-point Parallel Absolute Value Maximum Instruction

fpamin - Floating-point Parallel Absolute Value Minimum Instruction

fpcmp - Floating-point Parallel Compare Instruction

fpcvt.fx - Convert Parallel Floating-point to Integer Instruction

fcvt.xuf - Convert Unsigned Integer to Floating-point Instruction

fpma - Floating-point Parallel Multiply Add Instruction

fpmax - Floating-point Parallel Maximum Instruction

fpmin - Floating-point Parallel Minimum Instruction

fpmerge - Floating-point Parallel Merge Instructions

fpmpy - Floating-point Parallel Multiply Instruction

fpms - Floating-point Parallel Multiply Subtract Instruction

fpneg - Floating-point Parallel Negate Instruction

fpnegabs - Floating-point Parallel Negate Absolute Value Instruction

fpnma - Floating-point Parallel Negative Multiply Add Instruction

fpnmpy - Floating-point Parallel Negative Multiply Instruction

fprcpa - Floating-point Parallel Reciprocal Approximation Instruction

fprsqrta - Floating-point Parallel Reciprocal Square Root Approximation Instruction

frcpa - Floating-point Reciprocal Approximation Instruction

frsqrta - Floating-point Reciprocal Square Root Approximation Instruction

fselect - Floating-point Select Instruction

fsetc - Floating-point Set Controls Instruction

fsub - Floating-point Subtract Instruction

fswap - Floating-point Swap Instruction

fsxt - Floating-point Sign Extend Instruction

fwb - Flush Write Buffers Instruction

getf - Get Floating-point Value or Exponent or Significand Instruction

Integer Multiply and Add (in FP Unit) Instructions

ld - Load Instruction

ldfp - Floating-point Load Pair Instruction

mov fr - Move Floating-point Register Instruction

setf - Set Floating-point Value, Exponent, or Significand Instruction

stf - Floating-point Store Instruction