HVX floating point (aka QFloat) is a float representation that can be used
as an alternative to IEEE floating-point.  The conventional use case is for
loads/stores to use IEEE single/half precision and computation local to the
DSP uses qfloat.

Also: extended-qfloat semantics are provided for v79 and later.

Brian Cain (10):
  target/hexagon: Allow temporary HVX write and future write
  tests/tcg/hexagon: Cover HVX vector write conflicts
  target/hexagon: add v81 HVX compare, align, and convert instructions
  target/hexagon: fix V6_vcmov reserved-bit encoding
  target/hexagon: use vector payload size for HVX operations
  target/hexagon: reserve internal HVX vector state for QFloat
  target/hexagon: add the QFloat logic
  target/hexagon: select QFloat inst semantics by rev
  linux-user/hexagon: add v75-v81 HWCAPs
  tests/tcg/hexagon: add v81, ext-QFloat tests

 docs/system/hexagon/emulation.rst            |   8 +-
 target/hexagon/gen_tcg_hvx.h                 | 242 +++---
 target/hexagon/mmvec/hvx_ieee_fp.h           |   2 +
 target/hexagon/mmvec/macros.h                | 119 ++-
 target/hexagon/mmvec/mmvec.h                 |  90 +-
 target/hexagon/mmvec/mmvec_qfloat.h          | 133 +++
 target/hexagon/translate.h                   |  13 +-
 target/hexagon/reg_fields_def.h.inc          |   2 +
 hw/hexagon/hexagon_hvx_context.c             |   5 +
 linux-user/hexagon/elfload.c                 |   9 +
 target/hexagon/genptr.c                      |  18 +-
 target/hexagon/mmvec/hvx_ieee_fp.c           |  15 +
 target/hexagon/mmvec/hvx_qfloat.c            | 831 +++++++++++++++++++
 target/hexagon/mmvec/system_ext_mmvec.c      |   8 +-
 target/hexagon/op_helper.c                   |  34 +-
 tests/tcg/hexagon/check_rev_gating.c         |  12 +-
 tests/tcg/hexagon/hvx_ext.c                  | 222 +++++
 tests/tcg/hexagon/multiple-writes.c          |  98 +++
 tests/tcg/hexagon/qfloat_v81.c               | 119 +++
 tests/tcg/hexagon/v81_hvx.c                  | 220 +++++
 target/hexagon/tag_rev_info.c.inc            |  54 ++
 target/hexagon/hex_common.py                 |  29 +
 target/hexagon/imported/mmvec/encode_ext.def |  63 +-
 target/hexagon/imported/mmvec/ext.idef       | 236 ++++++
 target/hexagon/meson.build                   |   1 +
 tests/tcg/hexagon/meson.build                |  25 +
 26 files changed, 2417 insertions(+), 191 deletions(-)
 create mode 100644 target/hexagon/mmvec/mmvec_qfloat.h
 create mode 100644 target/hexagon/mmvec/hvx_qfloat.c
 create mode 100644 tests/tcg/hexagon/hvx_ext.c
 create mode 100644 tests/tcg/hexagon/qfloat_v81.c
 create mode 100644 tests/tcg/hexagon/v81_hvx.c

-- 
2.34.1

Reply via email to