qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Using new TCG Vector infrastructure in PowerPC
@ 2018-03-07 10:03 Nikunj A Dadhania
  2018-03-15 20:02 ` Richard Henderson
  0 siblings, 1 reply; 5+ messages in thread
From: Nikunj A Dadhania @ 2018-03-07 10:03 UTC (permalink / raw)
  To: Richard Henderson, qemu-devel

Hi Richard,

I was working to get TCG vector support for PowerPC[1]. Started with
converting logical operations like vector AND/OR/XOR and compare
instructions. Found some inconsistency during my testing on x86 laptop
emulating PowerPC:

zero = 0000000000000000 0000000000000000 
max = ffffffffffffffff ffffffffffffffff 

1) tcg_gen_andc_vec - vandc in PPC

New API result:
andc(zero, max) -  (zero & ~max ) = 0000000000000000 0000000000000000
andc(max, zero) -  (max & ~zero ) = ffffffffffffffff ffffffffffffffff
andc(max, max)  -  (max & ~max ) = ffffffffffffffff ffffffffffffffff    -->WRONG
andc(zero, zero)-  (zero & ~zero ) = 0000000000000000 0000000000000000 

Expected result:
andc(zero, max)  (zero & ~max ) = 0000000000000000 0000000000000000 
andc(max, zero)  (max & ~zero ) = ffffffffffffffff ffffffffffffffff 
andc(max, max)   (max & ~max ) = 0000000000000000 0000000000000000 
andc(zero, zero) (zero & ~zero ) = 0000000000000000 0000000000000000 

2) tcg_gen_or_vec - vor in PPC

New API result:
(zero | max ) = 0000000000000000 0000000000000000   -----> WRONG
(max | max ) = ffffffffffffffff ffffffffffffffff 
(zero | zero ) = 0000000000000000 0000000000000000

Expected result:
(zero | max ) = ffffffffffffffff ffffffffffffffff 
(max | max ) = ffffffffffffffff ffffffffffffffff 
(zero | zero ) = 0000000000000000 0000000000000000 

3) tcg_gen_cmp_vec(TCG_COND_EQ) - vcmpequ* in PPC

New API result(all incorrect):

vcmpequb (zero == zero ) = 0000000000000000 0000000000000000 
vcmpequh (zero == zero ) = 0000000000000000 0000000000000000 
vcmpequw (zero == zero ) = 0000000000000000 0000000000000000 
vcmpequd (zero == zero ) = 0000000000000000 0000000000000000

Expected result:
vcmpequb (zero == zero ) = ffffffffffffffff ffffffffffffffff 
vcmpequh (zero == zero ) = ffffffffffffffff ffffffffffffffff 
vcmpequw (zero == zero ) = ffffffffffffffff ffffffffffffffff 
vcmpequd (zero == zero ) = ffffffffffffffff ffffffffffffffff

Do you see something that I am missing here ?

Regards,
Nikunj

1. PowerPC TCG vector infrastructure implementation
https://github.com/nikunjad/qemu/tree/ppc_vec_0

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-03-16  9:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-07 10:03 [Qemu-devel] Using new TCG Vector infrastructure in PowerPC Nikunj A Dadhania
2018-03-15 20:02 ` Richard Henderson
2018-03-16  4:08   ` Nikunj A Dadhania
2018-03-16  7:01     ` Richard Henderson
2018-03-16  9:33       ` Nikunj A Dadhania

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).