diff --git a/include/mmx.h b/include/mmx.h index 57c90eef4..432f066a1 100644 --- a/include/mmx.h +++ b/include/mmx.h @@ -29,50 +29,65 @@ typedef union { struct { uint32_t d0,d1; } ud; + static_assert(sizeof(ud) == 8, "MMX packing error"); struct { int32_t d0,d1; } sd; + static_assert(sizeof(sd) == 8, "MMX packing error"); struct { uint16_t w0,w1,w2,w3; } uw; + static_assert(sizeof(uw) == 8, "MMX packing error"); + + uint16_t uwa[4]; /* for PSHUFW */ + static_assert(sizeof(uwa) == 8, "MMX packing error"); struct { int16_t w0,w1,w2,w3; } sw; + static_assert(sizeof(sw) == 8, "MMX packing error"); struct { uint8_t b0,b1,b2,b3,b4,b5,b6,b7; } ub; + static_assert(sizeof(ub) == 8, "MMX packing error"); struct { int8_t b0,b1,b2,b3,b4,b5,b6,b7; } sb; + static_assert(sizeof(sb) == 8, "MMX packing error"); #else struct { uint32_t d1,d0; } ud; + static_assert(sizeof(ud) == 8, "MMX packing error"); struct { int32_t d1,d0; } sd; + static_assert(sizeof(sd) == 8, "MMX packing error"); struct { uint16_t w3,w2,w1,w0; } uw; + static_assert(sizeof(uw) == 8, "MMX packing error"); struct { uint16_t w3,w2,w1,w0; } sw; + static_assert(sizeof(sw) == 8, "MMX packing error"); struct { uint8_t b7,b6,b5,b4,b3,b2,b1,b0; } ub; + static_assert(sizeof(ub) == 8, "MMX packing error"); struct { uint8_t b7,b6,b5,b4,b3,b2,b1,b0; } sb; + static_assert(sizeof(sb) == 8, "MMX packing error"); #endif } MMX_reg;