The most important part here, for review, is the first patch. I add a code generator, writen in python, which takes an input file that describes the opcode bits and field bits of the instructions, and outputs a function that does all of the decoding.
The subsequent patches begin to add SVE support and also demonstrate how I envision how both the decoder and the tcg host vector support are to be used. Thus, review of the direction would be appreciated before there are another 100 patches along the same style. r~ Richard Henderson (23): scripts: Add decodetree.py target/arm: Add SVE decode skeleton target/arm: Implement SVE Bitwise Logical - Unpredicated Group target/arm: Implement PTRUE, PFALSE, SETFFR target/arm: Implement SVE predicate logical operations target/arm: Implement SVE load vector/predicate target/arm: Implement SVE Integer Binary Arithmetic - Predicated Group target/arm: Handle SVE registers in write_fp_dreg target/arm: Handle SVE registers when using clear_vec_high target/arm: Implement SVE Integer Reduction Group target/arm: Implement SVE bitwise shift by immediate (predicated) target/arm: Implement SVE bitwise shift by vector (predicated) target/arm: Implement SVE bitwise shift by wide elements (predicated) target/arm: Implement SVE Integer Arithmetic - Unary Predicated Group target/arm: Implement SVE Integer Multiply-Add Group target/arm: Implement SVE Integer Arithmetic - Unpredicated Group target/arm: Implement SVE Index Generation Group target/arm: Implement SVE Stack Allocation Group target/arm: Implement SVE Bitwise Shift - Unpredicated Group target/arm: Implement SVE Compute Vector Address Group target/arm: Implement SVE floating-point exponential accelerator target/arm: Implement SVE floating-point trig select coefficient target/arm: Implement SVE Element Count Group, register destinations target/arm/helper-sve.h | 409 ++++++++++++++ target/arm/helper.h | 1 + target/arm/translate-a64.h | 112 ++++ target/arm/sve_helper.c | 1177 +++++++++++++++++++++++++++++++++++++++ target/arm/translate-a64.c | 272 +++------ target/arm/translate-sve.c | 1313 ++++++++++++++++++++++++++++++++++++++++++++ .gitignore | 1 + scripts/decodetree.py | 984 +++++++++++++++++++++++++++++++++ target/arm/Makefile.objs | 11 + target/arm/sve.def | 328 +++++++++++ 10 files changed, 4418 insertions(+), 190 deletions(-) create mode 100644 target/arm/helper-sve.h create mode 100644 target/arm/translate-a64.h create mode 100644 target/arm/sve_helper.c create mode 100644 target/arm/translate-sve.c create mode 100755 scripts/decodetree.py create mode 100644 target/arm/sve.def -- 2.14.3