vector_encoding.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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_H__
  12. #define __VECTOR_ENCODING_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. /**
  20. * assembler names used for vset{i}vli vtypei immediate
  21. */
  22. #define VEC_IMM_SEW_8 e8
  23. #define VEC_IMM_SEW_16 e16
  24. #define VEC_IMM_SEW_32 e32
  25. #define VEC_IMM_SEW_64 e64
  26. /* group setting, encoding by multiplier */
  27. #define VEC_IMM_LMUL_F8 mf8
  28. #define VEC_IMM_LMUL_F4 mf4
  29. #define VEC_IMM_LMUL_F2 mf2
  30. #define VEC_IMM_LMUL_1 m1
  31. #define VEC_IMM_LMUL_2 m2
  32. #define VEC_IMM_LMUL_4 m4
  33. #define VEC_IMM_LMUL_8 m8
  34. /* TAIL & MASK agnostic bits */
  35. #define VEC_IMM_TAIL_AGNOSTIC ta
  36. #define VEC_IMM_MASK_AGNOSTIC ma
  37. #define VEC_IMM_TAMA VEC_IMM_TAIL_AGNOSTIC, VEC_IMM_MASK_AGNOSTIC
  38. #define VEC_IMM_TAMU VEC_IMM_TAIL_AGNOSTIC
  39. #define VEC_IMM_TUMA VEC_IMM_MASK_AGNOSTIC
  40. /**
  41. * configuration setting instruction
  42. */
  43. #define VEC_CONFIG_SETVLI(xVl, xAvl, vtype...) vsetvli xVl, xAvl, ##vtype
  44. #define VEC_CONFIG_SET_VL_VTYPE(xVl, xVtype) vsetvl x0, xVl, xVtype
  45. #endif /* __VECTOR_ENCODING_H__ */