> On Jun 25, 2018, at 5:08 PM, Richard Henderson <richard.hender...@linaro.org> > wrote: > > On Mon, Jun 25, 2018, 08:23 G 3 <programmingk...@gmail.com> wrote: > > > > Try > > > > uint64_t expected_answer = 0xffff0000deadbeef; > > ... > > c.i = expected_answer; > > asm volatile("fdiv %0, %1, %2" : "+f"(c.d) : "f"(1.0), "f"(0.0)); > > > > to avoid depending on uninitialized data. (This expected value is > > an SNaN with a deadbeef marker Just to be Sure.) > > > > > > r~ > > > Ok I made this program and tried it on my iMac G5 (PowerPC 970). > > #include <stdio.h> > #include <stdint.h> > #include <inttypes.h> > > // Used to convert unsigned integer <--> double > union Converter > { > double d; > uint64_t i; > }; > typedef union Converter Converter; > > int main (int argc, const char * argv[]) { > Converter answer; > answer.i = 0xffff0000deadbeef; > //asm volatile("mtfsb1 27"); /* Set ZE bit */ > asm volatile("fdiv %0, %1, %2" : "=f"(answer.d) : "f"(1.0), > "f"(0.0)); > > Need +f for inout operand. > This didn't test what you expected.
What do you mean by inout operand? If you could send me some sample code I will test it out.