llvm-6502/test/MC/AArch64
Arnaud A. de Grandmaison bdaa375556 [AArch64] Implement add/adds/sub/subs/cmp/cmn with negative immediate aliases
This patch teaches the AsmParser to accept add/adds/sub/subs/cmp/cmn
with a negative immediate operand and convert them as shown:

  add  Rd, Rn, -imm -> sub  Rd, Rn, imm
  sub  Rd, Rn, -imm -> add  Rd, Rn, imm
  adds Rd, Rn, -imm -> subs Rd, Rn, imm
  subs Rd, Rn, -imm -> adds Rd, Rn, imm
  cmp  Rn, -imm     -> cmn  Rn, imm
  cmn  Rn, -imm     -> cmp  Rn, imm

Those instructions are an alternate syntax available to assembly coders,
and are needed in order to support code already compiling with some other
assemblers (gas). They are documented in the "ARMv8 Instruction Set
Overview", in the "Arithmetic (immediate)" section. This makes llvm-mc
a programmer-friendly assembler !

This also fixes PR20978: "Assembly handling of adding negative numbers
not as smart as gas".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241166 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-01 15:05:58 +00:00
..
adrp-relocation.s Update AArch64 ELF relocations to ABI 1.0 2014-11-26 10:49:18 +00:00
alias-addsubimm.s [AArch64] Implement add/adds/sub/subs/cmp/cmn with negative immediate aliases 2015-07-01 15:05:58 +00:00
alias-logicalimm.s [AArch64] Add logical alias instructions to MC AsmParser 2014-07-10 15:12:26 +00:00
arm64-adr.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-advsimd.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-aliases.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-arithmetic-encoding.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-arm64-fixup.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-basic-a64-instructions.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-be-datalayout.s AArch64: remove "arm64_be" support in favour of "aarch64_be". 2014-07-23 12:58:11 +00:00
arm64-bitfield-encoding.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-branch-encoding.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-condbr-without-dots.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-crypto.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-diagno-predicate.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-diags.s [AArch64] Add negative tests for the SIMD & FP LDP instructions. 2014-07-15 16:33:24 +00:00
arm64-directive_loh.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-elf-reloc-condbr.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
arm64-elf-relocs.s Update AArch64 ELF relocations to ABI 1.0 2014-11-26 10:49:18 +00:00
arm64-fp-encoding-error.s AArch64: disallow "fmov sD, #-0.0" during assembly. 2015-04-07 22:49:47 +00:00
arm64-fp-encoding.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-large-relocs.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-leaf-compact-unwind.s Improve the --expand-relocs handling of MachO. 2015-06-18 22:38:20 +00:00
arm64-logical-encoding.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-mapping-across-sections.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-mapping-within-section.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-memory.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-nv-cond.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-optional-hash.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-separator.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-simd-ldst.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-small-data-fixups.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-spsel-sysreg.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-system-encoding.s [AArch64] Allow access to all system registers with MRS/MSR instructions. 2014-10-01 10:13:59 +00:00
arm64-target-specific-sysreg.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-tls-modifiers-darwin.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-tls-relocs.s Update AArch64 ELF relocations to ABI 1.0 2014-11-26 10:49:18 +00:00
arm64-v128_lo-diagnostics.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-variable-exprs.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-vector-lists.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
arm64-verbose-vector-case.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
armv8.1a-atomic.s AArch64: fix typo in SMIN far atomics and add tests 2015-06-02 18:37:20 +00:00
armv8.1a-lor.s [AArch64] LORID_EL1 register must be treated as read-only 2015-04-20 16:54:37 +00:00
armv8.1a-pan.s [AArch64] Add v8.1a "Privileged Access Never" extension 2015-04-16 15:20:51 +00:00
armv8.1a-rdma.s [AArch64] Add v8.1a "Rounding Double Multiply Add/Subtract" extension 2015-03-31 13:15:48 +00:00
armv8.1a-vhe.s [AArch64] Add v8.1a "Virtualization Host Extensions" 2015-04-16 15:38:58 +00:00
basic-a64-diagnostics.s [AArch64] Implement add/adds/sub/subs/cmp/cmn with negative immediate aliases 2015-07-01 15:05:58 +00:00
basic-a64-instructions.s ARM]: Add support for MMFR4_EL1 in assembler 2015-06-08 15:01:11 +00:00
basic-pic.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
case-insen-reg-names.s [AArch64] AsmParser should be case insensitive about accepting vector register names. 2015-06-08 21:32:16 +00:00
dot-req-case-insensitive.s aarch64: support target-specific .req assembler directive 2014-07-02 04:50:23 +00:00
dot-req-diagnostics.s aarch64: support target-specific .req assembler directive 2014-07-02 04:50:23 +00:00
dot-req.s Fix some unnoticed/unwanted behavior change from r222319. 2015-02-04 03:10:03 +00:00
elf_osabi_flags.s Add test case omitted in r214974. 2014-08-06 16:06:41 +00:00
elf-extern.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
elf-globaladdress.ll Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
elf-objdump.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
elf-reloc-addsubimm.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
elf-reloc-ldrlit.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
elf-reloc-ldstunsimm.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
elf-reloc-movw.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
elf-reloc-pcreladdressing.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
elf-reloc-tstb.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
elf-reloc-uncondbrimm.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
expr-shr.s [MC] Use LShr for constant evaluation of ">>" on ELF/arm64--darwin. 2015-04-28 01:37:11 +00:00
gicv3-regs-diagnostics.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
gicv3-regs.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
inline-asm-modifiers.s Update AArch64 ELF relocations to ABI 1.0 2014-11-26 10:49:18 +00:00
inst-directive-diagnostic.s [AArch64] Add support for the .inst directive. 2014-10-22 20:35:57 +00:00
inst-directive.s [AArch64] Clean up the ELF streamer a bit. 2015-05-23 16:39:10 +00:00
jump-table.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
ldr-pseudo-diagnostics.s MC: support different sized constants in constant pools 2014-07-18 16:05:14 +00:00
ldr-pseudo-obj-errors.s ldr-pseudo-obj-errors.s: Fix silly copypasto. 2014-06-24 23:18:07 +00:00
ldr-pseudo.s MC: support different sized constants in constant pools 2014-07-18 16:05:14 +00:00
lit.local.cfg Reduce verbiage of lit.local.cfg files 2014-06-09 22:42:55 +00:00
mapping-across-sections.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
mapping-within-section.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-2velem.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-3vdiff.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-aba-abd.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-across.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-add-pairwise.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-add-sub-instructions.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-bitwise-instructions.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-compare-instructions.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-crypto.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-diagnostics.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-extract.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-facge-facgt.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-frsqrt-frecp.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-halving-add-sub.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-max-min-pairwise.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-max-min.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-mla-mls-instructions.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-mov.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-mul-div-instructions.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-perm.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-rounding-halving-add.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-rounding-shift.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-saturating-add-sub.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-saturating-rounding-shift.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-saturating-shift.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-abs.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-add-sub.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-by-elem-mla.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-by-elem-mul.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-by-elem-saturating-mla.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-by-elem-saturating-mul.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-compare.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-cvt.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-dup.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-extract-narrow.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-fp-compare.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-mul.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-neg.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-recip.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-reduce-pairwise.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-rounding-shift.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-saturating-add-sub.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-saturating-rounding-shift.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-saturating-shift.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-shift-imm.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-scalar-shift.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-shift-left-long.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-shift.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-simd-copy.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-simd-ldst-multi-elem.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-simd-ldst-one-elem.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-simd-misc.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-simd-post-ldst-multi-elem.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-simd-shift.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-sxtl.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
neon-tbl.s AArch64/ARM64: remove AArch64 from tree prior to renaming ARM64. 2014-05-24 12:42:26 +00:00
neon-uxtl.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
noneon-diagnostics.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
optional-hash.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
single-slash.s MC: AsmLexer: handle multi-character CommentStrings correctly 2014-08-14 02:51:43 +00:00
tls-relocs.s Update tests to not be as dependent on section numbers. 2015-04-15 15:59:37 +00:00
trace-regs-diagnostics.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00
trace-regs.s AArch64/ARM64: move ARM64 into AArch64's place 2014-05-24 12:50:23 +00:00