On Fri, Mar 03, 2017 at 03:43:03PM -0500, Michael Meissner wrote: > On Fri, Mar 03, 2017 at 02:19:57PM -0600, Segher Boessenkool wrote: > > On Fri, Mar 03, 2017 at 05:28:27PM +0100, Jakub Jelinek wrote: > > Yeah, it looks like these patterns should use VSX_D instead of VSX_LE. > > Mike, you know this code best, what do you think? > > Bill Schmidt added these, but he is gone for the day. > > No, these patterns need to use VSX_LE, but V1TI should be moved from VSX_LE to > VSX_LE_128. VSX_LE_128 is used for things like IEEE 128-bit floating point > and > 128-bit integers that can't use vec_select. In fact there is this comment: > > ;; Little endian word swapping for 128-bit types that are either scalars or > the > ;; special V1TI container class, which it is not appropriate to use vec_select > ;; for the type.
Okay, but there are also these comments: ;; Iterator for the 2 64-bit vector types (define_mode_iterator VSX_D [V2DF V2DI]) ;; Iterator for the 2 64-bit vector types + 128-bit types that are loaded with ;; lxvd2x to properly handle swapping words on little endian (define_mode_iterator VSX_LE [V2DF V2DI V1TI]) so that removing V1TI from VSX_LE makes it exactly equal to VSX_D. Segher