https://bugs.kde.org/show_bug.cgi?id=359472

            Bug ID: 359472
           Summary: The Power PC vsubuqm instruction doesn't always give
                    the correct result.
           Product: valgrind
           Version: 3.12 SVN
          Platform: Other
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: NOR
         Component: vex
          Assignee: [email protected]
          Reporter: [email protected]

The vsubuqm instruction is used to do the following 128-bit add.

vi0 = 00008000000000000000000000000000   (hex)
vi1= 00000000000000000001000000000000    (hex)
 vi0+vi1 = 00007fffffffffffffff000000000000       (expected result in hex)
 vi0+vi1 = 00007ffffffffffffffeffff000000000       (actual result in hex)

The instruction in Valgrind is emulated by taking the 128-bit operands as four
32-bit operands and adding them.  The carry from each 32-bit value is
calculated and propagated to the next 32-bit chunk.  The issue is the
calculation for the carry is not correct for all cases.   It is only checking
if the result of the 32-bit add is less then one of the inputs not both inputs.


Reproducible: Always

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to