[Patch] Fix SSE2 packing intrinsics return type

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