https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91151
--- Comment #3 from seurer at gcc dot gnu.org --- #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ (v4si) { 0x01020304, 0x05060708, 0x090a0b0c, 0x0d0e0f01 }[i] #elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ (v4si) { 0x04030201, 0x08070605, 0x0c0b0a09, 0x100f0e0d }[i] It looks like just a typo in the test case for BE. 0x0d0e0f01 should be 0x0d0e0f10 based on the LE code. Tried that and ... it works.