mirror of https://git.ffmpeg.org/ffmpeg.git
lavu/riscv: add ff_rv_vlen_least()
This inline function checks that the vector length is at least a given value. With this, most run-time VLEN checks can be optimised away.
This commit is contained in:
parent
38e7b0ecf8
commit
247c5b2b97
|
@ -22,6 +22,7 @@
|
||||||
#define AVUTIL_RISCV_CPU_H
|
#define AVUTIL_RISCV_CPU_H
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include "libavutil/cpu.h"
|
#include "libavutil/cpu.h"
|
||||||
|
|
||||||
|
@ -42,4 +43,24 @@ static inline size_t ff_get_rv_vlenb(void)
|
||||||
return vlenb;
|
return vlenb;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks that the vector bit-size is at least the given value.
|
||||||
|
* This is potentially undefined behaviour if vectors are not implemented.
|
||||||
|
*/
|
||||||
|
static inline bool ff_rv_vlen_least(unsigned int bits)
|
||||||
|
{
|
||||||
|
#ifdef __riscv_v_min_vlen
|
||||||
|
if (bits <= __riscv_min_vlen)
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* Vector lengths smaller than 128 bits are only possible in embedded cases
|
||||||
|
* and cannot be run-time detected, so we can assume 128 bits at least.
|
||||||
|
*/
|
||||||
|
if (bits <= 128)
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
return bits <= (8 * ff_get_rv_vlenb());
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue