https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88234

--- Comment #8 from Jeffrey Walton <noloader at gmail dot com> ---
(In reply to Segher Boessenkool from comment #4)
> This is documented in the ELFv2 ABI, linked from
> https://gcc.gnu.org/readings.html .
> 
> ...
> (The vec_vsx_st doesn't have to do with the problem btw.  Not that it is
> good or anything ;-) )

Yeah, I tried to convert to the C/C++ pointer dereference pattern several times
as shown in the literature. I.e., this:

  byte x[16];
  uint8x16_p cc = (uint8x16_p)c;
  *(uint8x16_p*) &x[0] = cc;

Instead of this:

  byte x[16];
  vec_vsx_st((uint8x16_p)c, 0, x);

It breaks a lot of our self tests for certain versions of a particular
compiler. I narrowed it down to the loads but I could not take it further and
develop a reduced case. I don't have the skill to untangle what is happening in
ppc asm at -O3.

If you want to see something really obscene, then take a look at
https://github.com/weidai11/cryptopp/blob/master/ppc_simd.h#L251 .

(If you are talking about something else that is wrong or bad, then please
point it out.)

Reply via email to