From: Paul F. <pj...@wa...> - 2025-07-08 18:57:50
|
On 05/07/2025 21:02, Florian Krohm wrote: > What are the operand types of Iop_DivU128[E], Iop_ModU128 and their > signed counterparts? > > In libvex_ir.h these IROps are described to operate on Ity_I128 > operands and produce a like typed result. This contradicts the > specification in ir_defs.c > function typeOfprimop which claims Ity_V128 for operands and result. > > Above IROps are used exclusively by ppc for the following opcodes: > Iop_DivU128 --> vdivuq Vector Divide Unsigned Quadword > Iop_DivS128 --> vdivsq Vector Divide Signed Quadword > Iop_DivU128E --> vdiveuq Vector Divide Extended Unsigned Quadword > Iop_DivS128E --> vdivesq Vector Divide Extended Signed Quadword > Iop_ModU128 --> vmoduq Vector Modulo Unsigned Quadword > Iop_ModS128 --> vmodsq Vector Modulo Signed Quadword > > Reading the ISA document, it is clear, that those opcodes perform an > integer division / modulo operation. Technically, they work on vector > registers, presumably because vector registers are the only resource > wide enough to store a quadword. Perhaps that is where the confusion > comes from. > So Ity_I128 it is. > > Below patch regtested on ppc with no new failures. > > OK? > VEX isn't my strong point, but it sounds OK to me. A+ Paul |