[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 09/11] target/arm: Decode aa64 armv8.3 fcmla
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH v2 09/11] target/arm: Decode aa64 armv8.3 fcmla |
Date: |
Fri, 26 Jan 2018 11:03:43 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 |
On 01/26/2018 02:07 AM, Peter Maydell wrote:
>> The SVE pseudocode for the same operation is clearer than that in the main
>> ARM
>> ARM, and is nearer to what I used:
>>
>> for e = 0 to elements-1
>> if ElemP[mask, e, esize] == '1' then
>> pair = e - (e MOD 2); // index of first element in pair
>> addend = Elem[result, e, esize];
>> if IsEven(e) then // real part
>> // realD = realA [+-] flip ? (imagN * imagM) : (realN * realM)
>> element1 = Elem[operand1, pair + flip, esize];
>> element2 = Elem[operand2, pair + flip, esize];
>> if neg_real then element2 = FPNeg(element2);
>> else // imaginary part
>> // imagD = imagA [+-] flip ? (imagN * realM) : (realN * imagM)
>> element1 = Elem[operand1, pair + flip, esize];
>> element2 = Elem[operand2, pair + (1 - flip), esize];
>> if neg_imag then element2 = FPNeg(element2);
>> Elem[result, e, esize] = FPMulAdd(addend, element1, element2, FPCR);
>>
>> In my version, e0/e1 are element1/element2 (real) and e2/e3 are
>> element1/element2 (imag).
>
> Thanks. Could we use the same indexing (1/2/3/4) as the final Arm ARM
> pseudocode?
Done.
r~