16 lines
388 B
C
16 lines
388 B
C
|
|
#include <fp.h>
|
||
|
|
|
||
|
|
/*
|
||
|
|
* If ctl == 0x00000000, then *d is set to a0
|
||
|
|
* If ctl == 0xFFFFFFFF, then *d is set to a1
|
||
|
|
* ctl MUST be either 0x00000000 or 0xFFFFFFFF.
|
||
|
|
*/
|
||
|
|
void
|
||
|
|
fp_select(fp_t *d, const fp_t *a0, const fp_t *a1, uint32_t ctl)
|
||
|
|
{
|
||
|
|
digit_t cw = (int32_t)ctl;
|
||
|
|
for (unsigned int i = 0; i < NWORDS_FIELD; i++) {
|
||
|
|
(*d)[i] = (*a0)[i] ^ (cw & ((*a0)[i] ^ (*a1)[i]));
|
||
|
|
}
|
||
|
|
}
|