28.2.22 __builtin_edac

Description

Squares sqr and sums with the nominated accumulator register, returning it as the result. Also prefetches data for future square operation by computing **xptr - **yptr and storing the result in *distance.

xincr and yincr may be the literal values: -6, -4, -2, 0, 2, 4, 6 or an integer value.

For example:

 volatile register int16_t result asm("A");
 int16_t *xmemory, *ymemory;
 int16_t distance;

 result = __builtin_ed(result, distance, &xmemory, 2, &ymemory, 2, &distance);

might generate:

 edac w4*w4, A, [w8]+=2, [W10]+=2, w4

Prototype

int16_t __builtin_edac(int Accum, int16_t sqr, int16_t **xptr, int16_t xincr, int16_t **yptr, int16_t yincr, int16_t *distance);

Arguments

Accum – Accumulator to sum.

sqr – Integer squared value.

xptr – Integer pointer to pointer to x prefetch.

xincr – Integer increment value of x prefetch.

yptr – Integer pointer to pointer to y prefetch.

yincr – Integer increment value of y prefetch.

distance – Integer pointer to distance.

Return Value

Returns the squared result to specified accumulator.

Machine Instruction

edac

Error Messages

An error message will be displayed if:
  • the result is not an accumulator register
  • Accum is not an accumulator register
  • xptr is null
  • yptr is null
  • distance is null