1 typedef __INT_LEAST8_TYPE__
int8_t;
2 typedef __UINT_LEAST32_TYPE__
uint32_t;
4 typedef struct { int8_t v1
; int8_t v2
; int8_t v3
; int8_t v4
; } neon_s8
;
6 uint32_t helper_neon_rshl_s8 (uint32_t arg1
, uint32_t arg2
);
9 helper_neon_rshl_s8 (uint32_t arg1
, uint32_t arg2
)
40 tmp
= (int8_t) vsrc2
.v1
;
41 if (tmp
>= (ssize_t
) sizeof (vsrc1
.v1
) * 8)
45 else if (tmp
< -(ssize_t
) sizeof (vsrc1
.v1
) * 8)
47 vdest
.v1
= vsrc1
.v1
>> (sizeof (vsrc1
.v1
) * 8 - 1);
49 else if (tmp
== -(ssize_t
) sizeof (vsrc1
.v1
) * 8)
51 vdest
.v1
= vsrc1
.v1
>> (tmp
- 1);
57 vdest
.v1
= (vsrc1
.v1
+ (1 << (-1 - tmp
))) >> -tmp
;
61 vdest
.v1
= vsrc1
.v1
<< tmp
;
68 tmp
= (int8_t) vsrc2
.v2
;
69 if (tmp
>= (ssize_t
) sizeof (vsrc1
.v2
) * 8)
73 else if (tmp
< -(ssize_t
) sizeof (vsrc1
.v2
) * 8)
75 vdest
.v2
= vsrc1
.v2
>> (sizeof (vsrc1
.v2
) * 8 - 1);
77 else if (tmp
== -(ssize_t
) sizeof (vsrc1
.v2
) * 8)
79 vdest
.v2
= vsrc1
.v2
>> (tmp
- 1);
85 vdest
.v2
= (vsrc1
.v2
+ (1 << (-1 - tmp
))) >> -tmp
;
89 vdest
.v2
= vsrc1
.v2
<< tmp
;
96 tmp
= (int8_t) vsrc2
.v3
;
97 if (tmp
>= (ssize_t
) sizeof (vsrc1
.v3
) * 8)
101 else if (tmp
< -(ssize_t
) sizeof (vsrc1
.v3
) * 8)
103 vdest
.v3
= vsrc1
.v3
>> (sizeof (vsrc1
.v3
) * 8 - 1);
105 else if (tmp
== -(ssize_t
) sizeof (vsrc1
.v3
) * 8)
107 vdest
.v3
= vsrc1
.v3
>> (tmp
- 1);
113 vdest
.v3
= (vsrc1
.v3
+ (1 << (-1 - tmp
))) >> -tmp
;
117 vdest
.v3
= vsrc1
.v3
<< tmp
;
124 tmp
= (int8_t) vsrc2
.v4
;
125 if (tmp
>= (ssize_t
) sizeof (vsrc1
.v4
) * 8)
129 else if (tmp
< -(ssize_t
) sizeof (vsrc1
.v4
) * 8)
131 vdest
.v4
= vsrc1
.v4
>> (sizeof (vsrc1
.v4
) * 8 - 1);
133 else if (tmp
== -(ssize_t
) sizeof (vsrc1
.v4
) * 8)
135 vdest
.v4
= vsrc1
.v4
>> (tmp
- 1);
141 vdest
.v4
= (vsrc1
.v4
+ (1 << (-1 - tmp
))) >> -tmp
;
145 vdest
.v4
= vsrc1
.v4
<< tmp
;
163 extern void abort(void);
167 uint32_t r
= helper_neon_rshl_s8 (0x05050505, 0x01010101);