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);