vec_ldia, vec_ldiaa

Purpose

Loads a vector from four 4-byte signed integer values at the given memory address, with sign extension to 8-byte signed integer values.

Syntax

d=vec_ldia(a, b)
d=vec_ldiaa(a, b)

Result and argument types

The following table describes the types of the returned value and the function arguments.

d a b
vector4double long int*

Result value

The effective address (EA) is the sum of a and b. The effective address is truncated to a 16-byte alignment. The contents of the 16 bytes starting at the effective address are loaded from memory. They are then converted from four 4-byte signed integer values to four 8-byte signed integer values before being saved in the result value.

vec_ldiaa generates an exception (SIGBUS) if the effective address is not aligned to a 16-byte memory boundary.

Formula

d[0] = (long) Memory_4B[EA]
d[1] = (long) Memory_4B[EA+4]
d[2] = (long) Memory_4B[EA+8]
d[3] = (long) Memory_4B[EA+12]
Note: Memory_4B[] is a 4-byte signed integer array.

Example

Memory values: (10, -20, 30, -40)
Convert result values d to IEEE floating point numbers using: d2 = vec_cfid(d)
d2: (10.0, -20.0, 30.0, -40.0)