vector_encoding.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2022-10-10 RT-Thread the first version,
  9. * compatible to riscv-v-spec-1.0
  10. */
  11. #ifndef __VECTOR_ENCODING_1_0_H__
  12. #define __VECTOR_ENCODING_1_0_H__
  13. /* mstatus/sstatus */
  14. #define MSTATUS_VS 0x00000600
  15. #define SSTATUS_VS 0x00000600 /* Vector Status */
  16. #define SSTATUS_VS_INITIAL 0x00000200
  17. #define SSTATUS_VS_CLEAN 0x00000400
  18. #define SSTATUS_VS_DIRTY 0x00000600
  19. #ifdef __ASSEMBLY__
  20. /**
  21. * assembler names used for vset{i}vli vtypei immediate
  22. */
  23. #define VEC_IMM_SEW_8 e8
  24. #define VEC_IMM_SEW_16 e16
  25. #define VEC_IMM_SEW_32 e32
  26. #define VEC_IMM_SEW_64 e64
  27. /* group setting, encoding by multiplier */
  28. #define VEC_IMM_LMUL_F8 mf8
  29. #define VEC_IMM_LMUL_F4 mf4
  30. #define VEC_IMM_LMUL_F2 mf2
  31. #define VEC_IMM_LMUL_1 m1
  32. #define VEC_IMM_LMUL_2 m2
  33. #define VEC_IMM_LMUL_4 m4
  34. #define VEC_IMM_LMUL_8 m8
  35. /* TAIL & MASK agnostic bits */
  36. #define VEC_IMM_TAIL_AGNOSTIC ta
  37. #define VEC_IMM_MASK_AGNOSTIC ma
  38. #define VEC_IMM_TAMA VEC_IMM_TAIL_AGNOSTIC, VEC_IMM_MASK_AGNOSTIC
  39. #define VEC_IMM_TAMU VEC_IMM_TAIL_AGNOSTIC
  40. #define VEC_IMM_TUMA VEC_IMM_MASK_AGNOSTIC
  41. /**
  42. * configuration setting instruction
  43. */
  44. #define VEC_CONFIG_SETVLI(xVl, xAvl, vtype...) vsetvli xVl, xAvl, ##vtype
  45. #define VEC_CONFIG_SET_VL_VTYPE(xVl, xVtype) vsetvl x0, xVl, xVtype
  46. #endif
  47. #endif /* __VECTOR_ENCODING_H__ */