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)

Macro Definition Documentation

◆ RISCV_LUT4

#define RISCV_LUT4 ( f,
vtbl,
v )
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,
v )
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,
v )
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,
v )
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 )
Value:
__riscv_vmslt(__riscv_vreinterpret_i##T(v), 0, vl)