Hi all,
Please consider committing the attached patch. I believe the SSE2 packsswb, packssdw and packuswb intrinsics have an incorrect return type.
Thanks,
Nicolas
PackSSE2.patch (1.18 KB)
Hi all,
Please consider committing the attached patch. I believe the SSE2 packsswb, packssdw and packuswb intrinsics have an incorrect return type.
Thanks,
Nicolas
PackSSE2.patch (1.18 KB)
If we really wanted to do this, an AutoUpgrade patch would be
necessary for backwards-compatibility. I'm not sure it's worth
bothering.
-Eli
Did they work before with llvm-gcc? If not, then don't worry about backward compatibility.
-Chris
They work just fine as-is due to the rough equivalence of all SSE2
types; it's just not quite clean to use an i16 vector for the return
when the result actually contains i8s.
-Eli
Hi Eli,
What exactly do mean by an AutoUpgrade patch?
I don't see how this could cause any issues with backward compatibility.
People currently using these intrinsics need a bitcast of the result to
avoid an assert, and with the patch applied the bitcast is no longer
necessary.
Cheers,
Nicolas
What exactly do mean by an AutoUpgrade patch?
See lib/VMCore/AutoUpgrade.cpp.
I don't see how this could cause any issues with backward compatibility.
People currently using these intrinsics need a bitcast of the result to
avoid an assert, and with the patch applied the bitcast is no longer
necessary.
The issue isn't source-code compatibility (which we don't care about
anyway), but rather bitcode compatibility.
-Eli