[ARM] Honor FeatureD16 in the assembler and disassembler
authorOliver Stannard <oliver.stannard@arm.com>
Wed, 5 Nov 2014 12:06:39 +0000 (12:06 +0000)
committerOliver Stannard <oliver.stannard@arm.com>
Wed, 5 Nov 2014 12:06:39 +0000 (12:06 +0000)
commit382f7d717cc02b3339bf0ce5a625a19d007fcd91
treed505f6768b1d43e1e3fefd98b5aaff49415e96f0
parent04a45948a05d75ed6b0b2ab52fa2516c74f6a987
[ARM] Honor FeatureD16 in the assembler and disassembler

Some ARM FPUs only have 16 double-precision registers, rather than the
normal 32. LLVM represents this with the D16 target feature. This is
currently used by CodeGen to avoid using high registers when they are
not available, but the assembler and disassembler do not.

I fix this in the assmebler and disassembler rather than the
InstrInfo.td files, as the latter would require a large number of
changes everywhere one of the floating-point instructions is referenced
in the backend. This solution is similar to the one used for
co-processor numbers and MSR masks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221341 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/AsmParser/ARMAsmParser.cpp
lib/Target/ARM/Disassembler/ARMDisassembler.cpp
test/MC/ARM/d16.s [new file with mode: 0644]
test/MC/ARM/directive-fpu-instrs.s
test/MC/ARM/vfp4.s
test/MC/Disassembler/ARM/d16.txt [new file with mode: 0644]