[PATCH] D60706: [ARM] implement 8.1-M instructions at the MC level.
Simon Tatham via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 15 06:00:12 PDT 2019
simon_tatham created this revision.
simon_tatham added reviewers: dmgreen, samparker, SjoerdMeijer.
Herald added subscribers: llvm-commits, hiraditya, kristof.beyls, javed.absar.
Herald added a project: LLVM.
This commit adds the entire 8.1-M and MVE instruction set.
Most of the new instructions are MVE; those all live in a new tablegen
source file ARMInstrMVE.td. A few FP but non-MVE instructions are
added in ARMInstrVFP.td (VSCCLRM, and loads/stores/moves of a couple
of VFP system registers), and a few non-MVE and non-FP instructions in
ARMInstrThumb2.td (CLRM, the BF and LOL families, and CSEL).
The most complicated thing in the MVE instructions is that a lot of
them take a standard cluster of extra operations to support VPT
predication. Those are defined in ARMInstrFormats.td, under the names
'vpred_n' and 'vpred_r', with a comment explaining what they do.
A change to existing instructions in ARMInstrThumb2.td: tighten up bit
15 of the encodings of lots of normal data processing instructions
like shifted ORR. 8.1-M has reused some of the UNPREDICTABLE space in
those encodings, so now those bits have to be hard requirements.
As well as that, there's a load of supporting stuff in the C++,
supporting new formatting details (AsmPrinter), new register classes
and so on.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D60706
Files:
llvm/lib/Target/ARM/ARMAsmPrinter.cpp
llvm/lib/Target/ARM/ARMBaseInstrInfo.h
llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
llvm/lib/Target/ARM/ARMInstrFormats.td
llvm/lib/Target/ARM/ARMInstrInfo.td
llvm/lib/Target/ARM/ARMInstrMVE.td
llvm/lib/Target/ARM/ARMInstrThumb2.td
llvm/lib/Target/ARM/ARMInstrVFP.td
llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
llvm/lib/Target/ARM/ARMRegisterInfo.td
llvm/lib/Target/ARM/ARMScheduleA57.td
llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h
llvm/lib/Target/ARM/MCTargetDesc/ARMAddressingModes.h
llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
llvm/lib/Target/ARM/Thumb2InstrInfo.cpp
llvm/lib/Target/ARM/Utils/ARMBaseInfo.h
llvm/test/CodeGen/ARM/half.ll
llvm/test/MC/ARM/clrm-asm.s
llvm/test/MC/ARM/fp-armv8-m.s
llvm/test/MC/ARM/fp-armv8.s
llvm/test/MC/ARM/fullfp16.s
llvm/test/MC/ARM/mve.s
llvm/test/MC/ARM/no-mve.s
llvm/test/MC/ARM/ras-extension.s
llvm/test/MC/ARM/thumbv8.1m-vmrs-vmsr.s
llvm/test/MC/ARM/thumbv8.1m.s
llvm/test/MC/ARM/vscclrm-asm.s
llvm/test/MC/ARM/vstrldr_sys.s
llvm/test/MC/Disassembler/ARM/clrm.txt
llvm/test/MC/Disassembler/ARM/mve.s
llvm/test/MC/Disassembler/ARM/ras-extension-thumb.txt
llvm/test/MC/Disassembler/ARM/thumb2-v8.1m.txt
llvm/test/MC/Disassembler/ARM/thumbv8.1m-vmrs-vmsr.txt
llvm/test/MC/Disassembler/ARM/thumbv8.1m.s
llvm/test/MC/Disassembler/ARM/vscclrm.txt
llvm/test/MC/Disassembler/ARM/vstrldr_sys.txt
More information about the llvm-commits
mailing list