Revision 5e1d0985 target-ppc/op_helper.c

b/target-ppc/op_helper.c
2115 2115
#undef VMUL_DO
2116 2116
#undef VMUL
2117 2117

  
2118
#define VROTATE(suffix, element)                                        \
2119
    void helper_vrl##suffix (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)  \
2120
    {                                                                   \
2121
        int i;                                                          \
2122
        for (i = 0; i < ARRAY_SIZE(r->element); i++) {                  \
2123
            unsigned int mask = ((1 << (3 + (sizeof (a->element[0]) >> 1))) - 1); \
2124
            unsigned int shift = b->element[i] & mask;                  \
2125
            r->element[i] = (a->element[i] << shift) | (a->element[i] >> (sizeof(a->element[0]) * 8 - shift)); \
2126
        }                                                               \
2127
    }
2128
VROTATE(b, u8)
2129
VROTATE(h, u16)
2130
VROTATE(w, u32)
2131
#undef VROTATE
2132

  
2118 2133
#define VSL(suffix, element)                                            \
2119 2134
    void helper_vsl##suffix (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)  \
2120 2135
    {                                                                   \

Also available in: Unified diff