That certainly sounds like progress. Did you see the follow up email indicating the typo that I found in patch 6? It can be fixed by applying the following diff on top:
diff --git a/target/ppc/dfp_helper.c b/target/ppc/dfp_helper.c index c2d335e928..b801acbedc 100644 --- a/target/ppc/dfp_helper.c +++ b/target/ppc/dfp_helper.c @@ -1054,7 +1054,7 @@ static inline void dfp_set_sign_64(ppc_vsr_t *t, uint8_t sgn) static inline void dfp_set_sign_128(ppc_vsr_t *t, uint8_t sgn) { t->VsrD(0) <<= 4; - t->VsrD(0) |= (t->VsrD(0) >> 60); + t->VsrD(0) |= (t->VsrD(1) >> 60); t->VsrD(1) <<= 4; t->VsrD(1) |= (sgn & 0xF); } Does that help any more tests to pass? Also the changes to the FP register layout were made in QEMU 4.0 and so it seems to me that even if some tests fail, if the results between QEMU 3.1 and QEMU git master with the patchset applied are equivalent then we can assume that the patchset functionality is correct. -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1841990 Title: instruction 'denbcdq' misbehaving Status in QEMU: New Bug description: Instruction 'denbcdq' appears to have no effect. Test case attached. On ppc64le native: -- gcc -g -O -mcpu=power9 bcdcfsq.c test-denbcdq.c -o test-denbcdq $ ./test-denbcdq 0x00000000000000000000000000000000 0x0000000000000000000000000000000c 0x22080000000000000000000000000000 $ ./test-denbcdq 1 0x00000000000000000000000000000001 0x0000000000000000000000000000001c 0x22080000000000000000000000000001 $ ./test-denbcdq $(seq 0 99) 0x00000000000000000000000000000064 0x0000000000000000000000000000100c 0x22080000000000000000000000000080 -- With "qemu-ppc64le -cpu power9" -- $ qemu-ppc64le -cpu power9 -L [...] ./test-denbcdq 0x00000000000000000000000000000000 0x0000000000000000000000000000000c 0x0000000000000000000000000000000c $ qemu-ppc64le -cpu power9 -L [...] ./test-denbcdq 1 0x00000000000000000000000000000001 0x0000000000000000000000000000001c 0x0000000000000000000000000000001c $ qemu-ppc64le -cpu power9 -L [...] ./test-denbcdq $(seq 100) 0x00000000000000000000000000000064 0x0000000000000000000000000000100c 0x0000000000000000000000000000100c -- I started looking at the code, but I got confused rather quickly. Could be related to endianness? I think denbcdq arrived on the scene before little-endian was a big deal. Maybe something to do with utilizing implicit floating-point register pairs... I don't think the right data is getting to helper_denbcdq, which would point back to the gen_fprp_ptr uses in dfp-impl.inc.c (GEN_DFP_T_FPR_I32_Rc). (Maybe?) To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1841990/+subscriptions