[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH v3 00/34] Hexagon patch series
From: |
Taylor Simpson |
Subject: |
[RFC PATCH v3 00/34] Hexagon patch series |
Date: |
Tue, 18 Aug 2020 10:50:13 -0500 |
This series adds support for the Hexagon processor with Linux user support
See patch 02/34 Hexagon README for detailed information.
Once the series is applied, the Hexagon port will pass "make check-tcg".
The series also includes Hexagon-specific tests in tcg/tests/hexagon.
We have a parallel effort to make the Hexagon Linux toolchain inside a docker
container publically available.
*** Future items under consideration ***
Use qemu softfloat
Use qemu decodetree
*** Known checkpatch issues ***
The following are known checkpatch errors in the series
target/hexagon/reg_fields.h Complex macro
target/hexagon/attribs.h Complex macro
target/hexagon/decode.c Complex macro
target/hexagon/q6v_decode.c Macro needs do - while
target/hexagon/printinsn.c Macro needs do - while
target/hexagon/gen_semantics.c Suspicious ; after while (0)
target/hexagon/gen_dectree_import.c Complex macro
target/hexagon/gen_dectree_import.c Suspicious ; after while (0)
target/hexagon/opcodes.c Complex macro
target/hexagon/iclass.h Complex macro
scripts/qemu-binfmt-conf.sh Line over 90 characters
The following are known checkpatch warnings in the series
target/hexagon/fma_emu.c Comments inside macro definition
scripts/qemu-binfmt-conf.sh Line over 80 characters
*** Changes in v3 ***
Remove substantial portions of the code to facilitate review
- Plan to submit subsequent patches
- Hexagon Vector eXtensions (HVX)
- Circular and bit-reverse addressiong
- Add/sub-with-carry
- Unused insn_t and pkt_t fields
- Unused instruction attributes
- All TCG overrides except instructions with multiple definitions
- Unused macros
- Unused reg fields
- COUNT_HEX_HELPERS
Use Laurent's gensyscall.sh script to generate linux-user/hexagon/syscall_nr.h
Handle mem_noshuf
Remove "RsV = RsV" per review feedback
Simplify include file structure
Add directed tests in <qemu>/tests/tcg/hexagon
Rework the python scripts to generate one header file at a time
Change fWRAP_* macros to fGEN_TCG_*
*** Changes in v2 ***
- Use scripts/git.orderfile
Taylor Simpson (34):
Hexagon Update MAINTAINERS file
Hexagon (target/hexagon) README
Hexagon (include/elf.h) ELF machine definition
Hexagon (target/hexagon) scalar core definition
Hexagon (target/hexagon) register names
Hexagon (disas) disassembler
Hexagon (target/hexagon) scalar core helpers
Hexagon (target/hexagon) GDB Stub
Hexagon (target/hexagon) architecture types
Hexagon (target/hexagon) instruction and packet types
Hexagon (target/hexagon) register fields
Hexagon (target/hexagon) instruction attributes
Hexagon (target/hexagon) register map
Hexagon (target/hexagon) instruction/packet decode
Hexagon (target/hexagon) instruction printing
Hexagon (target/hexagon) utility functions
Hexagon (target/hexagon/imported) arch import - macro definitions
Hexagon (target/hexagon/imported) arch import - instruction semantics
Hexagon (target/hexagon/imported) arch import - instruction encoding
Hexagon (target/hexagon) generator phase 1 - C preprocessor for
semantics
Hexagon (target/hexagon) generator phase 2 - generate header files
Hexagon (target/hexagon) generator phase 3 - C preprocessor for decode
tree
Hexagon (target/hexagon) generater phase 4 - decode tree
Hexagon (target/hexagon) opcode data structures
Hexagon (target/hexagon) macros to interface with the generator
Hexagon (target/hexagon) macros referenced in instruction semantics
Hexagon (target/hexagon) instruction classes
Hexagon (target/hexagon) TCG generation helpers
Hexagon (target/hexagon) TCG generation
Hexagon (target/hexagon) TCG for instructions with multiple
definitions
Hexagon (target/hexagon) translation
Hexagon (linux-user/hexagon) Linux user emulation
Hexagon (tests/tcg/hexagon) TCG tests
Hexagon build infrastructure
configure | 9 +
default-configs/hexagon-linux-user.mak | 1 +
include/disas/dis-asm.h | 1 +
include/elf.h | 2 +
linux-user/hexagon/sockbits.h | 18 +
linux-user/hexagon/syscall_nr.h | 343 +++++
linux-user/hexagon/target_cpu.h | 44 +
linux-user/hexagon/target_elf.h | 40 +
linux-user/hexagon/target_fcntl.h | 18 +
linux-user/hexagon/target_signal.h | 34 +
linux-user/hexagon/target_structs.h | 46 +
linux-user/hexagon/target_syscall.h | 32 +
linux-user/hexagon/termbits.h | 18 +
linux-user/syscall_defs.h | 33 +
target/hexagon/arch.h | 42 +
target/hexagon/attribs.h | 32 +
target/hexagon/attribs_def.h | 98 ++
target/hexagon/conv_emu.h | 50 +
target/hexagon/cpu-param.h | 26 +
target/hexagon/cpu.h | 164 +++
target/hexagon/cpu_bits.h | 34 +
target/hexagon/decode.h | 39 +
target/hexagon/fma_emu.h | 27 +
target/hexagon/gen_tcg.h | 198 +++
target/hexagon/genptr.h | 25 +
target/hexagon/genptr_helpers.h | 244 ++++
target/hexagon/helper.h | 35 +
target/hexagon/hex_arch_types.h | 43 +
target/hexagon/hex_regs.h | 83 ++
target/hexagon/iclass.h | 46 +
target/hexagon/insn.h | 75 +
target/hexagon/internal.h | 42 +
target/hexagon/macros.h | 982 +++++++++++++
target/hexagon/opcodes.h | 66 +
target/hexagon/printinsn.h | 26 +
target/hexagon/reg_fields.h | 40 +
target/hexagon/reg_fields_def.h | 78 +
target/hexagon/regmap.h | 38 +
target/hexagon/translate.h | 103 ++
disas/hexagon.c | 62 +
linux-user/elfload.c | 16 +
linux-user/hexagon/cpu_loop.c | 99 ++
linux-user/hexagon/signal.c | 276 ++++
linux-user/syscall.c | 2 +
target/hexagon/arch.c | 354 +++++
target/hexagon/conv_emu.c | 369 +++++
target/hexagon/cpu.c | 318 +++++
target/hexagon/decode.c | 593 ++++++++
target/hexagon/fma_emu.c | 781 ++++++++++
target/hexagon/gdbstub.c | 49 +
target/hexagon/gen_dectree_import.c | 191 +++
target/hexagon/gen_semantics.c | 88 ++
target/hexagon/genptr.c | 56 +
target/hexagon/iclass.c | 88 ++
target/hexagon/op_helper.c | 365 +++++
target/hexagon/opcodes.c | 211 +++
target/hexagon/printinsn.c | 94 ++
target/hexagon/q6v_decode.c | 373 +++++
target/hexagon/reg_fields.c | 28 +
target/hexagon/translate.c | 730 ++++++++++
tests/tcg/hexagon/atomics.c | 122 ++
tests/tcg/hexagon/clrtnew.c | 56 +
tests/tcg/hexagon/dual_stores.c | 60 +
tests/tcg/hexagon/exec_counters.c | 57 +
tests/tcg/hexagon/mem_noshuf.c | 291 ++++
tests/tcg/hexagon/misc.c | 293 ++++
tests/tcg/hexagon/preg_alias.c | 106 ++
tests/tcg/hexagon/pthread_cancel.c | 43 +
tests/tcg/hexagon/sfminmax.c | 62 +
MAINTAINERS | 8 +
disas/Makefile.objs | 1 +
scripts/gensyscalls.sh | 3 +-
scripts/qemu-binfmt-conf.sh | 6 +-
target/hexagon/Makefile.objs | 203 +++
target/hexagon/README | 254 ++++
target/hexagon/dectree.py | 352 +++++
target/hexagon/gen_helper_funcs.py | 230 +++
target/hexagon/gen_helper_protos.py | 158 +++
target/hexagon/gen_op_attribs.py | 46 +
target/hexagon/gen_op_regs.py | 119 ++
target/hexagon/gen_opcodes_def.py | 43 +
target/hexagon/gen_printinsn.py | 182 +++
target/hexagon/gen_shortcode.py | 71 +
target/hexagon/gen_tcg_funcs.py | 301 ++++
target/hexagon/hex_common.py | 204 +++
target/hexagon/imported/allidefs.def | 30 +
target/hexagon/imported/alu.idef | 1259 +++++++++++++++++
target/hexagon/imported/branch.idef | 328 +++++
target/hexagon/imported/compare.idef | 621 ++++++++
target/hexagon/imported/encode.def | 125 ++
target/hexagon/imported/encode_pp.def | 2110 ++++++++++++++++++++++++++++
target/hexagon/imported/encode_subinsn.def | 150 ++
target/hexagon/imported/float.idef | 313 +++++
target/hexagon/imported/iclass.def | 52 +
target/hexagon/imported/ldst.idef | 286 ++++
target/hexagon/imported/macros.def | 1529 ++++++++++++++++++++
target/hexagon/imported/mpy.idef | 1212 ++++++++++++++++
target/hexagon/imported/shift.idef | 1067 ++++++++++++++
target/hexagon/imported/subinsns.idef | 152 ++
target/hexagon/imported/system.idef | 69 +
tests/tcg/configure.sh | 4 +-
tests/tcg/hexagon/Makefile.target | 49 +
tests/tcg/hexagon/first.S | 57 +
tests/tcg/hexagon/float_convs.ref | 748 ++++++++++
tests/tcg/hexagon/float_madds.ref | 768 ++++++++++
105 files changed, 22615 insertions(+), 3 deletions(-)
create mode 100644 default-configs/hexagon-linux-user.mak
create mode 100644 linux-user/hexagon/sockbits.h
create mode 100644 linux-user/hexagon/syscall_nr.h
create mode 100644 linux-user/hexagon/target_cpu.h
create mode 100644 linux-user/hexagon/target_elf.h
create mode 100644 linux-user/hexagon/target_fcntl.h
create mode 100644 linux-user/hexagon/target_signal.h
create mode 100644 linux-user/hexagon/target_structs.h
create mode 100644 linux-user/hexagon/target_syscall.h
create mode 100644 linux-user/hexagon/termbits.h
create mode 100644 target/hexagon/arch.h
create mode 100644 target/hexagon/attribs.h
create mode 100644 target/hexagon/attribs_def.h
create mode 100644 target/hexagon/conv_emu.h
create mode 100644 target/hexagon/cpu-param.h
create mode 100644 target/hexagon/cpu.h
create mode 100644 target/hexagon/cpu_bits.h
create mode 100644 target/hexagon/decode.h
create mode 100644 target/hexagon/fma_emu.h
create mode 100644 target/hexagon/gen_tcg.h
create mode 100644 target/hexagon/genptr.h
create mode 100644 target/hexagon/genptr_helpers.h
create mode 100644 target/hexagon/helper.h
create mode 100644 target/hexagon/hex_arch_types.h
create mode 100644 target/hexagon/hex_regs.h
create mode 100644 target/hexagon/iclass.h
create mode 100644 target/hexagon/insn.h
create mode 100644 target/hexagon/internal.h
create mode 100644 target/hexagon/macros.h
create mode 100644 target/hexagon/opcodes.h
create mode 100644 target/hexagon/printinsn.h
create mode 100644 target/hexagon/reg_fields.h
create mode 100644 target/hexagon/reg_fields_def.h
create mode 100644 target/hexagon/regmap.h
create mode 100644 target/hexagon/translate.h
create mode 100644 disas/hexagon.c
create mode 100644 linux-user/hexagon/cpu_loop.c
create mode 100644 linux-user/hexagon/signal.c
create mode 100644 target/hexagon/arch.c
create mode 100644 target/hexagon/conv_emu.c
create mode 100644 target/hexagon/cpu.c
create mode 100644 target/hexagon/decode.c
create mode 100644 target/hexagon/fma_emu.c
create mode 100644 target/hexagon/gdbstub.c
create mode 100644 target/hexagon/gen_dectree_import.c
create mode 100644 target/hexagon/gen_semantics.c
create mode 100644 target/hexagon/genptr.c
create mode 100644 target/hexagon/iclass.c
create mode 100644 target/hexagon/op_helper.c
create mode 100644 target/hexagon/opcodes.c
create mode 100644 target/hexagon/printinsn.c
create mode 100644 target/hexagon/q6v_decode.c
create mode 100644 target/hexagon/reg_fields.c
create mode 100644 target/hexagon/translate.c
create mode 100644 tests/tcg/hexagon/atomics.c
create mode 100644 tests/tcg/hexagon/clrtnew.c
create mode 100644 tests/tcg/hexagon/dual_stores.c
create mode 100644 tests/tcg/hexagon/exec_counters.c
create mode 100644 tests/tcg/hexagon/mem_noshuf.c
create mode 100644 tests/tcg/hexagon/misc.c
create mode 100644 tests/tcg/hexagon/preg_alias.c
create mode 100644 tests/tcg/hexagon/pthread_cancel.c
create mode 100644 tests/tcg/hexagon/sfminmax.c
create mode 100644 target/hexagon/Makefile.objs
create mode 100644 target/hexagon/README
create mode 100755 target/hexagon/dectree.py
create mode 100755 target/hexagon/gen_helper_funcs.py
create mode 100755 target/hexagon/gen_helper_protos.py
create mode 100755 target/hexagon/gen_op_attribs.py
create mode 100755 target/hexagon/gen_op_regs.py
create mode 100755 target/hexagon/gen_opcodes_def.py
create mode 100755 target/hexagon/gen_printinsn.py
create mode 100755 target/hexagon/gen_shortcode.py
create mode 100755 target/hexagon/gen_tcg_funcs.py
create mode 100755 target/hexagon/hex_common.py
create mode 100644 target/hexagon/imported/allidefs.def
create mode 100644 target/hexagon/imported/alu.idef
create mode 100644 target/hexagon/imported/branch.idef
create mode 100644 target/hexagon/imported/compare.idef
create mode 100644 target/hexagon/imported/encode.def
create mode 100644 target/hexagon/imported/encode_pp.def
create mode 100644 target/hexagon/imported/encode_subinsn.def
create mode 100644 target/hexagon/imported/float.idef
create mode 100644 target/hexagon/imported/iclass.def
create mode 100644 target/hexagon/imported/ldst.idef
create mode 100755 target/hexagon/imported/macros.def
create mode 100644 target/hexagon/imported/mpy.idef
create mode 100644 target/hexagon/imported/shift.idef
create mode 100644 target/hexagon/imported/subinsns.idef
create mode 100644 target/hexagon/imported/system.idef
create mode 100644 tests/tcg/hexagon/Makefile.target
create mode 100644 tests/tcg/hexagon/first.S
create mode 100644 tests/tcg/hexagon/float_convs.ref
create mode 100644 tests/tcg/hexagon/float_madds.ref
--
2.7.4
- [RFC PATCH v3 00/34] Hexagon patch series,
Taylor Simpson <=