[Bug target/90453] PowerPC/AltiVec VSX: Provide vec_pack/vec_unpackh/vec_unpackl for 32<->64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90453 --- Comment #7 from Segher Boessenkool --- Note that vec_pack works for unsigned as well. For vec_unpack[hl] of unsigned you can do a vec_merge[hl] instead (with the first arg a zero vector).
[Bug target/90453] PowerPC/AltiVec VSX: Provide vec_pack/vec_unpackh/vec_unpackl for 32<->64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90453 --- Comment #6 from Shawn Landden --- Ahh, sorry for wasting your time. I didn't notice the signed requirement, which is why it didn't work.
[Bug target/90453] PowerPC/AltiVec VSX: Provide vec_pack/vec_unpackh/vec_unpackl for 32<->64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90453 Segher Boessenkool changed: What|Removed |Added Status|WAITING |RESOLVED Resolution|--- |INVALID --- Comment #5 from Segher Boessenkool --- vec_unpack* works on vectors of signed integers only, not unsigned. You need to target at least power8 (-mcpu=power8) to get the long long versions of this, i.e. the vpkudum and vupk[hl]sw instructions. This is all documented correctly, as far as I see? In the ISA doc, in the ABI doc, and in the GCC docs? (Power8 is ISA 2.07, we could add some clarification for that).
[Bug target/90453] PowerPC/AltiVec VSX: Provide vec_pack/vec_unpackh/vec_unpackl for 32<->64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90453 --- Comment #4 from Shawn Landden --- Oh my bad, I got it backwards vector unsigned long long unpackedl, unpackedr; vector unsigned int packed; packed = vec_pack(unpackedl, unpackedr); unpackedl = vec_unpackh(packed); unpackedr = vec_unpackl(packed); The point is that it is similar to the other pack/unpack unfunctions. Yet somehow this one doesn't exist (probably because there is no hardware instruction for it).
[Bug target/90453] PowerPC/AltiVec VSX: Provide vec_pack/vec_unpackh/vec_unpackl for 32<->64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90453 --- Comment #3 from Segher Boessenkool --- What should the semantics of this be? There are four 32-bit elts each in packedl and packedr, which of those go where in unpacked? I think what you want to do can be expressed with just two or maybe three existing builtins, but it's not clear to me exactly what you want.
[Bug target/90453] PowerPC/AltiVec VSX: Provide vec_pack/vec_unpackh/vec_unpackl for 32<->64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90453 --- Comment #2 from Shawn Landden --- vector unsigned long long unpacked; vector unsigned int packedl, packedr; unpacked = vec_pack(packedl, packedr); packedl = vec_unpackh(unpacked); packedr = vec_unpackl(unpacked);
[Bug target/90453] PowerPC/AltiVec VSX: Provide vec_pack/vec_unpackh/vec_unpackl for 32<->64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90453 Segher Boessenkool changed: What|Removed |Added Target|powerpc |powerpc*-*-* Status|UNCONFIRMED |WAITING Last reconfirmed||2019-05-18 CC||segher at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Segher Boessenkool --- What does "32<->64" mean?
[Bug target/90453] PowerPC/AltiVec VSX: Provide vec_pack/vec_unpackh/vec_unpackl for 32<->64
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90453 Richard Biener changed: What|Removed |Added Target||powerpc Severity|normal |enhancement