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
