2 * ARMv6 integer SIMD operations.
4 * Copyright (c) 2007 CodeSourcery.
5 * Written by Paul Brook
7 * This code is licenced under the GPL.
11 #define DECLARE_GE uint32_t ge = 0
12 #define SET_GE env->GE = ge
14 #define DECLARE_GE do{}while(0)
15 #define SET_GE do{}while(0)
18 #define RESULT(val, n, width) \
19 res |= ((uint32_t)(glue(glue(uint,width),_t))(val)) << (n * width)
21 void OPPROTO glue(glue(op_,PFX),add16_T0_T1)(void)
27 ADD16(T0 >> 16, T1 >> 16, 1);
33 void OPPROTO glue(glue(op_,PFX),add8_T0_T1)(void)
39 ADD8(T0 >> 8, T1 >> 8, 1);
40 ADD8(T0 >> 16, T1 >> 16, 2);
41 ADD8(T0 >> 24, T1 >> 24, 3);
47 void OPPROTO glue(glue(op_,PFX),sub16_T0_T1)(void)
53 SUB16(T0 >> 16, T1 >> 16, 1);
59 void OPPROTO glue(glue(op_,PFX),sub8_T0_T1)(void)
65 SUB8(T0 >> 8, T1 >> 8, 1);
66 SUB8(T0 >> 16, T1 >> 16, 2);
67 SUB8(T0 >> 24, T1 >> 24, 3);
73 void OPPROTO glue(glue(op_,PFX),subaddx_T0_T1)(void)
79 SUB16(T0 >> 16, T1 >> 16, 1);
85 void OPPROTO glue(glue(op_,PFX),addsubx_T0_T1)(void)
91 ADD16(T0 >> 16, T1 >> 16, 1);