Vector Optimized Library of Kernels 3.2.0
Architecture-tuned implementations of math kernels
 
Loading...
Searching...
No Matches
volk_rvv_intrinsics.h File Reference
#include <riscv_vector.h>

Go to the source code of this file.

Macros

#define RISCV_SHRINK2(op, T, S, v)
 
#define RISCV_SHRINK4(op, T, S, v)
 
#define RISCV_SHRINK8(op, T, S, v)
 
#define RISCV_PERM4(f, v, vidx)
 
#define RISCV_LUT4(f, vtbl, v)
 
#define RISCV_PERM8(f, v, vidx)
 
#define RISCV_VMFLTZ(T, v, vl)   __riscv_vmslt(__riscv_vreinterpret_i##T(v), 0, vl)
 

Macro Definition Documentation

◆ RISCV_LUT4

#define RISCV_LUT4 (   f,
  vtbl,
 
)
Value:
__riscv_vcreate_v_u8m1_u8m4( \
f(vtbl, __riscv_vget_u8m1(v, 0), __riscv_vsetvlmax_e8m1()), \
f(vtbl, __riscv_vget_u8m1(v, 1), __riscv_vsetvlmax_e8m1()), \
f(vtbl, __riscv_vget_u8m1(v, 2), __riscv_vsetvlmax_e8m1()), \
f(vtbl, __riscv_vget_u8m1(v, 3), __riscv_vsetvlmax_e8m1()))

◆ RISCV_PERM4

#define RISCV_PERM4 (   f,
  v,
  vidx 
)
Value:
__riscv_vcreate_v_u8m1_u8m4( \
f(__riscv_vget_u8m1(v, 0), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 1), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 2), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 3), vidx, __riscv_vsetvlmax_e8m1()))

◆ RISCV_PERM8

#define RISCV_PERM8 (   f,
  v,
  vidx 
)
Value:
__riscv_vcreate_v_u8m1_u8m8( \
f(__riscv_vget_u8m1(v, 0), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 1), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 2), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 3), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 4), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 5), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 6), vidx, __riscv_vsetvlmax_e8m1()), \
f(__riscv_vget_u8m1(v, 7), vidx, __riscv_vsetvlmax_e8m1()))

◆ RISCV_SHRINK2

#define RISCV_SHRINK2 (   op,
  T,
  S,
 
)
Value:
__riscv_##op(__riscv_vget_##T##S##m1(v, 0), \
__riscv_vget_##T##S##m1(v, 1), \
__riscv_vsetvlmax_e##S##m1())

◆ RISCV_SHRINK4

#define RISCV_SHRINK4 (   op,
  T,
  S,
 
)
Value:
__riscv_##op(__riscv_##op(__riscv_vget_##T##S##m1(v, 0), \
__riscv_vget_##T##S##m1(v, 1), \
__riscv_vsetvlmax_e##S##m1()), \
__riscv_##op(__riscv_vget_##T##S##m1(v, 2), \
__riscv_vget_##T##S##m1(v, 3), \
__riscv_vsetvlmax_e##S##m1()), \
__riscv_vsetvlmax_e##S##m1())

◆ RISCV_SHRINK8

#define RISCV_SHRINK8 (   op,
  T,
  S,
 
)
Value:
__riscv_##op(__riscv_##op(__riscv_##op(__riscv_vget_##T##S##m1(v, 0), \
__riscv_vget_##T##S##m1(v, 1), \
__riscv_vsetvlmax_e##S##m1()), \
__riscv_##op(__riscv_vget_##T##S##m1(v, 2), \
__riscv_vget_##T##S##m1(v, 3), \
__riscv_vsetvlmax_e##S##m1()), \
__riscv_vsetvlmax_e##S##m1()), \
__riscv_##op(__riscv_##op(__riscv_vget_##T##S##m1(v, 4), \
__riscv_vget_##T##S##m1(v, 5), \
__riscv_vsetvlmax_e##S##m1()), \
__riscv_##op(__riscv_vget_##T##S##m1(v, 6), \
__riscv_vget_##T##S##m1(v, 7), \
__riscv_vsetvlmax_e##S##m1()), \
__riscv_vsetvlmax_e##S##m1()), \
__riscv_vsetvlmax_e##S##m1())

◆ RISCV_VMFLTZ

#define RISCV_VMFLTZ (   T,
  v,
  vl 
)    __riscv_vmslt(__riscv_vreinterpret_i##T(v), 0, vl)