My bad, I was not specific.
Actually, i am trying to run some test on qemu to verify some instructions.
For which i build a binary and load it on qemu in my environment and test
the output.
In this case even i am not sure, if the output i get from qemu is correct
or not.
[Use case]

[sample - Instruction : this is my .s file]

.section .text
.global _start
_start:
frecpe D21, D24
_test_pass:
        mov x0 , #0x0
        b _test_end

_test_fail:
        mov x0, #0xffffffffffffffff
        b _test_end

_test_end:
        b .

[Reg values ]
These are the value in used to init my register.
X21.write(0xC2DC66415D15B180L)
X24.write(0x76b3630c86fae51f)
FPCR.write(0x5d931bb5)
FPSR.write(0x23c914ee)

I still need to confirm if its a issue.

Thanks,
Gaurav


On Fri, Aug 8, 2014 at 3:55 PM, Peter Maydell <peter.mayd...@linaro.org>
wrote:

> On 8 August 2014 11:02, Gaurav Sharma <gauravs.2...@gmail.com> wrote:
> > I am trying to test the floating point instruction for arm in qemu.
> > For floating point reciprocal estimate instruction, for a64 i see a check
> > for underflow condition in float64 HELPER(recpe_f64) method :
> >
> > " else if (f64_exp >= 1023 && fpst->flush_to_zero) "
> >
> > 1. how do we calculate the value to determine underflow ?
>
> By looking at the pseudocode in the ARM ARM which
> defines the condition under which we should signal
> underflow.
>
> > 2. Is the number 1023 correct for a64 ?
>
> The underflow condition for 64 bit in the ARM ARM is
> "Abs(value) >= 2.0^1022", which is a condition in the
> pseudocode on the true real-number value of the input.
> For QEMU we don't have a real-number value so we must
> figure out the correct checks to be made on the raw
> exponent/mantissa/sign fields of the IEEE format double.
> (Specifically, f64_exp is the raw exponent field.)
> Since we've already dealt with the NaN and infinity and
> denormal cases by this point in the code, we know that
>    value == (-1)^S * 2^(exp-1023) * 1.frac
> If you plug in the value == 2.0^1022 and work it out
> you'll find that this corresponds to f64_exp == 1023.
>
> If you think we have a bug here (or elsewhere), it would be
> helpful if you either:
>  * described a specific case where you put input values
>     in and get a wrong value out (as compared with h/w)
>  * described your reasoning for why you think we're wrong,
>    with reference to the specifications
>
> If you just vaguely say "hey, is this right?" with no further
> detail then you're asking us to do all the hard work of thinking
> about the corner cases for you. If you think something is odd
> and you've thought about it and you still can't figure out
> why it's right, that's OK, but you need to tell us what you've
> already done and where exactly you're getting confused.
>
> thanks
> -- PMM
>

Reply via email to