SIMD ISAReturn TypeNameArgumentsInstruction Group
Neonfloat64x2_tvcaddq_rot90_f64(float64x2_t a, float64x2_t b)Complex arithmetic / Complex addition
Description
Floating-point Complex Add.
Results
Vd.2D result
This intrinsic compiles to the following instructions:

FCADD Vd.2D,Vn.2D,Vm.2D,#90

Argument Preparation
a register: Vn.2D b register: Vm.2D
Architectures
A64

Operation

CheckFPAdvSIMDEnabled64();
bits(datasize) operand1 = V[n];
bits(datasize) operand2 = V[m];
bits(datasize) operand3 = V[d];
bits(datasize) result;
bits(esize) element1;
bits(esize) element3;

for e = 0 to (elements DIV 2) -1 
    case rot of 
        when '0'
            element1 = FPNeg(Elem[operand2, e*2+1, esize]); 
            element3 = Elem[operand2, e*2, esize];
        when '1'
            element1 = Elem[operand2, e*2+1, esize]; 
            element3 = FPNeg(Elem[operand2, e*2, esize]);   
    Elem[result, e*2,   esize] = FPAdd(Elem[operand1, e*2, esize], element1, FPCR[]);
    Elem[result, e*2+1, esize] = FPAdd(Elem[operand1, e*2+1, esize], element3, FPCR[]);

V[d] = result;