ecomp.r29.143635

 :
   liblccopt: ecomp.r29.143635 - ecomp.r28.143635
This commit is contained in:
stepanov 2024-02-22 19:33:23 +03:00
parent d4b19a22d2
commit 1ba9bd4379
5 changed files with 545 additions and 727 deletions

View File

@ -1 +1 @@
ecomp.version : ecomp.r29.143573
ecomp.version : ecomp.r29.143635

View File

@ -40,13 +40,13 @@
printf( "%s:%d\n%s:%d\n%s:%d\n:%s:%d\n", #b0, (int)(b0), #b1, (int)(b1), #b2, (int)(b2), #b3, (int)(b3)) \
)
#define __LCCRT_N_ARG1( rbits, abits, r, a) \
#define __LCCRT_N_ARGS1( rbits, abits, r, a) \
uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a
#define __LCCRT_N_ARG2( rbits, abits, bbits, r, a, b) \
#define __LCCRT_N_ARGS2( rbits, abits, bbits, r, a, b) \
uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b
#define __LCCRT_N_ARG3( rbits, abits, bbits, cbits, r, a, b, c) \
#define __LCCRT_N_ARGS3( rbits, abits, bbits, cbits, r, a, b, c) \
uint32_t rbits, uint32_t abits, uint32_t bbits, uint32_t cbits, uint8_t *r, uint8_t *a, uint8_t *b, uint8_t *c
#define __LCCRT_VEC_ARGS1( rbits, abits, r, a, rnum, anum, rebits, aebits) \
@ -258,51 +258,51 @@ extern uint64_t __lccrt_fshr_i64( uint64_t a, uint64_t b, uint64_t c);
extern __lccrt_uint128_t __lccrt_fshl_i128( __lccrt_uint128_t a, __lccrt_uint128_t b, __lccrt_uint128_t c);
extern __lccrt_uint128_t __lccrt_fshr_i128( __lccrt_uint128_t a, __lccrt_uint128_t b, __lccrt_uint128_t c);
extern void __lccrt_bitcast_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_bitcast_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_select( uint32_t rbits, uint32_t abits, uint32_t bbits, uint32_t cbits,
uint8_t *r, uint8_t *a, uint8_t *b, uint8_t *c);
extern void __lccrt_abs_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_zext_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_sext_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_trunc_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_shl_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_shr_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_sar_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_fshl_n( __LCCRT_N_ARG3( rbits, abits, bbits, cbits, r, a, b, c));
extern void __lccrt_fshr_n( __LCCRT_N_ARG3( rbits, abits, bbits, cbits, r, a, b, c));
extern void __lccrt_and_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_or_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_xor_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_add_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_sub_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_mul_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_udiv_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_sdiv_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_umod_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_smod_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_fmod_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_minnum_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_maxnum_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_fneg_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_abs_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_zext_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_sext_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_trunc_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_shl_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_shr_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_sar_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_fshl_n( __LCCRT_N_ARGS3( rbits, abits, bbits, cbits, r, a, b, c));
extern void __lccrt_fshr_n( __LCCRT_N_ARGS3( rbits, abits, bbits, cbits, r, a, b, c));
extern void __lccrt_and_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_or_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_xor_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_add_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_sub_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_mul_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_udiv_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_sdiv_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_umod_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_smod_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_fmod_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_minnum_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_maxnum_n( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_fneg_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_shuffle_n( uint32_t rbits, uint32_t abits, uint32_t bbits, uint32_t cbits,
uint8_t *r, uint8_t *a, uint8_t *b, uint8_t *c,
uint32_t rn, uint32_t an, uint32_t bn, uint32_t cn);
extern void __lccrt_fptofp_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_fptosi_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_fptoui_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_sitofp_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_uitofp_n( uint32_t rbits, uint32_t abits, uint8_t *r, uint8_t *a);
extern void __lccrt_fptosi_sat_n( __LCCRT_N_ARG1( rbits, abits, r, a));
extern void __lccrt_fptoui_sat_n( __LCCRT_N_ARG1( rbits, abits, r, a));
extern void __lccrt_uadd_sat_n( __LCCRT_N_ARG2( rbits, abits, bbits, r, a, b));
extern void __lccrt_sadd_sat_n( __LCCRT_N_ARG2( rbits, abits, bbits, r, a, b));
extern void __lccrt_usub_sat_n( __LCCRT_N_ARG2( rbits, abits, bbits, r, a, b));
extern void __lccrt_ssub_sat_n( __LCCRT_N_ARG2( rbits, abits, bbits, r, a, b));
extern void __lccrt_bswap_n( __LCCRT_N_ARG1( rbits, abits, r, a));
extern void __lccrt_bitreverse_n( __LCCRT_N_ARG1( rbits, abits, r, a));
extern void __lccrt_ctpop_n( __LCCRT_N_ARG1( rbits, abits, r, a));
extern void __lccrt_cttz_n( __LCCRT_N_ARG1( rbits, abits, r, a));
extern void __lccrt_ctlz_n( __LCCRT_N_ARG1( rbits, abits, r, a));
extern void __lccrt_fptofp_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_fptosi_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_fptoui_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_sitofp_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_uitofp_n( __LCCRT_N_ARGS1( reb, aeb, r, a));
extern void __lccrt_fptosi_sat_n( __LCCRT_N_ARGS1( rbits, abits, r, a));
extern void __lccrt_fptoui_sat_n( __LCCRT_N_ARGS1( rbits, abits, r, a));
extern void __lccrt_uadd_sat_n( __LCCRT_N_ARGS2( rbits, abits, bbits, r, a, b));
extern void __lccrt_sadd_sat_n( __LCCRT_N_ARGS2( rbits, abits, bbits, r, a, b));
extern void __lccrt_usub_sat_n( __LCCRT_N_ARGS2( rbits, abits, bbits, r, a, b));
extern void __lccrt_ssub_sat_n( __LCCRT_N_ARGS2( rbits, abits, bbits, r, a, b));
extern void __lccrt_bswap_n( __LCCRT_N_ARGS1( rbits, abits, r, a));
extern void __lccrt_bitreverse_n( __LCCRT_N_ARGS1( rbits, abits, r, a));
extern void __lccrt_ctpop_n( __LCCRT_N_ARGS1( rbits, abits, r, a));
extern void __lccrt_cttz_n( __LCCRT_N_ARGS1( rbits, abits, r, a));
extern void __lccrt_ctlz_n( __LCCRT_N_ARGS1( rbits, abits, r, a));
extern void __lccrt_shl_v( __LCCRT_VEC_ARGS2( rb, ab, bb, r, a, b, rn, an, bn, reb, aeb, beb));
extern void __lccrt_shr_v( __LCCRT_VEC_ARGS2( rb, ab, bb, r, a, b, rn, an, bn, reb, aeb, beb));
@ -372,16 +372,16 @@ extern void __lccrt_round_v( __LCCRT_VEC_ARGS1( rb, ab, r, a, rn, an, reb, aeb))
extern void __lccrt_ftrunc_v( __LCCRT_VEC_ARGS1( rb, ab, r, a, rn, an, reb, aeb));
extern void __lccrt_rint_v( __LCCRT_VEC_ARGS1( rb, ab, r, a, rn, an, reb, aeb));
extern void __lccrt_cmp_n_eq_i( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_ne_i( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_lt_i( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_lt_u( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_le_i( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_le_u( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_gt_i( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_gt_u( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_ge_i( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_ge_u( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_n_eq_i( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_n_ne_i( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_n_lt_i( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_n_lt_u( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_n_le_i( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_n_le_u( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_n_gt_i( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_n_gt_u( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_n_ge_i( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_n_ge_u( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_v_eq_i( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b,
uint32_t rn, uint32_t an, uint32_t bn);
@ -404,14 +404,14 @@ extern void __lccrt_cmp_v_ge_i( uint32_t rbits, uint32_t abits, uint32_t bbits,
extern void __lccrt_cmp_v_ge_u( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b,
uint32_t rn, uint32_t an, uint32_t bn);
extern void __lccrt_cmp_fo( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_fu( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_eq_fu( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_ne_fu( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_lt_fu( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_le_fu( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_gt_fu( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_ge_fu( uint32_t rbits, uint32_t abits, uint32_t bbits, uint8_t *r, uint8_t *a, uint8_t *b);
extern void __lccrt_cmp_fo( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_fu( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_eq_fu( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_ne_fu( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_lt_fu( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_le_fu( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_gt_fu( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern void __lccrt_cmp_ge_fu( __LCCRT_N_ARGS2( reb, aeb, beb, r, a, b));
extern __lccrt_uint128_t __lccrt_ctlz_i128( __lccrt_uint128_t a);
extern __lccrt_uint128_t __lccrt_cttz_i128( __lccrt_uint128_t a);
@ -446,34 +446,6 @@ uint16_t __atomic_fetch_umin_2( uint16_t *a, uint16_t b);
uint32_t __atomic_fetch_umin_4( uint32_t *a, uint32_t b);
uint64_t __atomic_fetch_umin_8( uint64_t *a, uint64_t b);
extern __lccrt_vec_si( 8, 16) __lccopt_shuffle_v16i8( __lccrt_vec_si( 8, 16) x, __lccrt_vec_si( 8, 16) y,
__lccrt_vec_si( 32, 16) c);
extern __lccrt_vec_si( 16, 8) __lccopt_shuffle_v8i16( __lccrt_vec_si( 16, 8) x, __lccrt_vec_si( 16, 8) y,
__lccrt_vec_si( 32, 8) c);
extern __lccrt_vec_si( 32, 4) __lccopt_shuffle_v4i32( __lccrt_vec_si( 32, 4) x, __lccrt_vec_si( 32, 4) y,
__lccrt_vec_si( 32, 4) c);
extern __lccrt_vec_si( 64, 2) __lccopt_shuffle_v2i64( __lccrt_vec_si( 64, 2) x, __lccrt_vec_si( 64, 2) y,
__lccrt_vec_si( 32, 2) c);
extern __lccrt_vec_si( 8, 32) __lccopt_shuffle_v32i8( __lccrt_vec_si( 8, 32) x, __lccrt_vec_si( 8, 32) y,
__lccrt_vec_si( 32, 32) c);
extern __lccrt_vec_si( 16, 16) __lccopt_shuffle_v16i16( __lccrt_vec_si( 16, 16) x, __lccrt_vec_si( 16, 16) y,
__lccrt_vec_si( 32, 16) c);
extern __lccrt_vec_si( 32, 8) __lccopt_shuffle_v8i32( __lccrt_vec_si( 32, 8) x, __lccrt_vec_si( 32, 8) y,
__lccrt_vec_si( 32, 8) c);
extern __lccrt_vec_si( 64, 4) __lccopt_shuffle_v4i64( __lccrt_vec_si( 64, 4) x, __lccrt_vec_si( 64, 4) y,
__lccrt_vec_si( 32, 4) c);
extern __lccrt_vec_f( 32, 4) __lccopt_shuffle_v4f32( __lccrt_vec_f( 32, 4) x, __lccrt_vec_f( 32, 4) y,
__lccrt_vec_si( 32, 4) c);
extern __lccrt_vec_f( 64, 2) __lccopt_shuffle_v2f64( __lccrt_vec_f( 64, 2) x, __lccrt_vec_f( 64, 2) y,
__lccrt_vec_si( 32, 2) c);
extern __lccrt_vec_f( 32, 8) __lccopt_shuffle_v8f32( __lccrt_vec_f( 32, 8) x, __lccrt_vec_f( 32, 8) y,
__lccrt_vec_si( 32, 8) c);
extern __lccrt_vec_f( 64, 4) __lccopt_shuffle_v4f64( __lccrt_vec_f( 64, 4) x, __lccrt_vec_f( 64, 4) y,
__lccrt_vec_si( 32, 4) c);
extern __lccrt_uint128_t __lccrt_bswap_128( __lccrt_uint128_t v);
extern int8_t __lccrt_fptosi_sat_i8f32( __lccrt_f32_t);

View File

@ -46,26 +46,6 @@ __lccrt_ctlz_i128( __lccrt_uint128_t a)
return (r);
} /* __lccrt_ctlz_i128 */
double __lccrt___lccrt_sqrt_f64( double) asm( "__lccrt_sqrt.f64");
double
__lccrt___lccrt_sqrt_f64( double a)
{
assert( 0);
}
void
__builtin_lccopt_mul_4_x_i8( void)
{
assert( 0);
}
void
__builtin_lccopt_shuffle_4_x_i8( void)
{
assert( 0);
}
#if defined( __LCC__) && (__LCC__ <= 123)
__lccrt_complex_f32
__mulsc3( float a, float b, float c, float d)

File diff suppressed because it is too large Load Diff

View File

@ -10,24 +10,8 @@
#include <string.h>
#include <assert.h>
#define __lccrt_shuffle_get( n, k, x, y) (((k) < (n)) ? (x).a[k] : (y).a[(k) - (n)])
#define __lccopt_vec_shuffle( suffix, arg_type, ind_type, len) \
arg_type \
__lccopt_shuffle_##suffix( arg_type x, arg_type y, ind_type c) \
{ \
int i; \
arg_type r; \
\
for ( i = 0; i < len; ++i ) \
{ \
r.a[i] = __lccrt_shuffle_get( len, c.a[i], x, y); \
} \
\
return (r); \
} /* __builtin_lccopt_shuffle_##suffix */
static int __lccrt_bitwidth_bytesize( int bitsize) {
static int
__lccrt_bitwidth_bytesize( int bitsize) {
int r = 0;
if ( bitsize <= 8 ) {
@ -89,83 +73,6 @@ __lccrt_load_bytes( void *src, int64_t bytesize) {
return (r);
}
__lccopt_vec_shuffle( v16i8, __lccrt_vec_si( 8, 16), __lccrt_vec_si( 32, 16), 16)
__lccopt_vec_shuffle( v8i16, __lccrt_vec_si( 16, 8), __lccrt_vec_si( 32, 8), 8)
__lccopt_vec_shuffle( v4i32, __lccrt_vec_si( 32, 4), __lccrt_vec_si( 32, 4), 4)
__lccopt_vec_shuffle( v2i64, __lccrt_vec_si( 64, 2), __lccrt_vec_si( 32, 2), 2)
__lccopt_vec_shuffle( v32i8, __lccrt_vec_si( 8, 32), __lccrt_vec_si( 32, 32), 32)
__lccopt_vec_shuffle( v16i16, __lccrt_vec_si( 16, 16), __lccrt_vec_si( 32, 16), 16)
__lccopt_vec_shuffle( v8i32, __lccrt_vec_si( 32, 8), __lccrt_vec_si( 32, 8), 8)
__lccopt_vec_shuffle( v4i64, __lccrt_vec_si( 64, 4), __lccrt_vec_si( 32, 4), 4)
__lccopt_vec_shuffle( v4f32, __lccrt_vec_f( 32, 4), __lccrt_vec_si( 32, 4), 4)
__lccopt_vec_shuffle( v2f64, __lccrt_vec_f( 64, 2), __lccrt_vec_si( 32, 2), 2)
__lccopt_vec_shuffle( v8f32, __lccrt_vec_f( 32, 8), __lccrt_vec_si( 32, 8), 8)
__lccopt_vec_shuffle( v4f64, __lccrt_vec_f( 64, 4), __lccrt_vec_si( 32, 4), 4)
__lccopt_vec_shuffle( v32v32i8, __lccrt_vec_si( 8, 32), __lccrt_vec_si( 32, 32), 32)
__lccrt_vec_si( 32, 4)
__lccrt_mul_v4i32( __lccrt_vec_si( 32, 4) a, __lccrt_vec_si( 32, 4) b)
{
int i;
__lccrt_vec_si( 32, 4) r;
for ( i = 0; i < 4; ++i ) r.a[i] = a.a[i] * b.a[i];
return (r);
}
__lccrt_vec_f( 32, 4)
__lccrt_fdiv_v4f32( __lccrt_vec_f( 32, 4) a, __lccrt_vec_f( 32, 4) b)
{
int i;
__lccrt_vec_f( 32, 4) r;
for ( i = 0; i < 4; ++i ) r.a[i] = a.a[i] / b.a[i];
return (r);
}
__lccrt_vec_si( 32, 4)
__lccrt_select_v4i32_t( __lccrt_vec_si( 32, 4) a,
__lccrt_vec_si( 32, 4) b,
__lccrt_vec_si( 32, 4) c)
{
int i;
__lccrt_vec_si( 32, 4) r;
for ( i = 0; i < 4; ++i ) r.a[i] = a.a[i] ? b.a[i] : c.a[i];
return (r);
}
__lccrt_vec_f( 32, 4)
__lccrt_select_v4f32_t( __lccrt_vec_si( 32, 4) a,
__lccrt_vec_f( 32, 4) b,
__lccrt_vec_f( 32, 4) c)
{
int i;
__lccrt_vec_f( 32, 4) r;
for ( i = 0; i < 4; ++i ) r.a[i] = a.a[i] ? b.a[i] : c.a[i];
return (r);
}
__lccrt_vec_f( 32, 4)
__lccrt_sqrt_v4f32( __lccrt_vec_f( 32, 4) a)
{
int i;
__lccrt_vec_f( 32, 4) r;
for ( i = 0; i < 4; ++i ) r.a[i] = __builtin_sqrtf( a.a[i]);
return (r);
}
/**
* Упаковка битов вектора нестандартных целых в (нестандартное) целое значение.
* Суммарное количество значимых бит не должно превышать 64.