Commit Graph

164 Commits

Author SHA1 Message Date
Jim Grosbach ec9ba98299 Thumb2 prefer encoding T3 to T4 for ADD/SUB immediate instructions.
rdar://10529348

llvm-svn: 145851
2011-12-05 21:06:26 +00:00
Jim Grosbach 68c899c211 Testcase for r144684.
llvm-svn: 144685
2011-11-15 19:56:17 +00:00
Jim Grosbach 6efa7b9852 Thumb2 assembly parsing for mul.w in IT block fix.
When the 3rd operand is not a low-register, and the first two operands are
the same low register, the parser was incorrectly trying to use the 16-bit
instruction encoding.

rdar://10449281

llvm-svn: 144679
2011-11-15 19:29:45 +00:00
Jim Grosbach 9bded9dc24 Thumb2 parsing for push/pop w/ hi registers in the reglist.
rdar://10130228.

llvm-svn: 144331
2011-11-10 23:17:11 +00:00
Jim Grosbach 25bc090170 Thumb2 assembly parsing STMDB w/ optional .w suffix.
rdar://10422955

llvm-svn: 144242
2011-11-09 23:44:23 +00:00
Jim Grosbach b009a872d7 Add Thumb2 alias for "mov Rd, #imm" to "mvn Rd, #~imm".
When '~imm' is encodable as a t2_so_imm but plain 'imm' is not. For example,
  mov r2, #-3
becomes
  mvn r2, #2

rdar://10349224

llvm-svn: 143235
2011-10-28 22:36:30 +00:00
Jim Grosbach 7a49575d7f Thumb2 ADD/SUB instructions encoding selection outside IT block.
Outside an IT block, "add r3, #2" should select a 32-bit wide encoding
rather than generating an error indicating the 16-bit encoding is only
legal in an IT block (outside, the 'S' suffic is required for the 16-bit
encoding).

rdar://10348481

llvm-svn: 143201
2011-10-28 16:57:07 +00:00
Jim Grosbach 6ed3845530 Thumb2 t2LDMDB[_UPD] assembly parsing to recognize .w suffix.
rdar://10348844

llvm-svn: 143110
2011-10-27 17:33:59 +00:00
Jim Grosbach ba7f90c7df Thumb2 t2MVNi assembly parsing to recognize ".w" suffix.
rdar://10348584

llvm-svn: 143108
2011-10-27 17:16:55 +00:00
Jim Grosbach 61fdba048f Thumb2 ldr pc-relative encoding fixes.
We were parsing label references to the i12 encoding, which isn't right.
They need to go to the pci variant instead.

More of rdar://10348687

llvm-svn: 143068
2011-10-26 22:22:01 +00:00
Jim Grosbach 54a20ed0f1 Thumb2 assembly parsing and encoding for LDC/STC.
llvm-svn: 141811
2011-10-12 20:54:17 +00:00
Jim Grosbach c63af1b7b6 ARM Thumb2 asm parsing [SU]XT[BH] without rotate but with .w.
Add inst alias to handle these assembly forms. Add tests, too.

rdar://10178799

llvm-svn: 140647
2011-09-27 22:18:54 +00:00
Owen Anderson d20cd25c69 Remove incorrect testcases.
llvm-svn: 140572
2011-09-26 22:13:55 +00:00
Owen Anderson 4916840eb8 Teach the Thumb2 AsmParser to accept pre-indexed loads/stores with an offset of #-0.
llvm-svn: 140426
2011-09-23 22:25:02 +00:00
Owen Anderson fbe52c0192 Turns out that Thumb2 ADR doesn't need special printing like LDR does. Fix other test failures I caused.
llvm-svn: 140284
2011-09-21 23:53:44 +00:00
Jim Grosbach c70d9dfaea Thumb2 assembly parsing and encoding for WFE/WFI/YIELD.
llvm-svn: 140126
2011-09-20 00:48:56 +00:00
Jim Grosbach b35198021a Thumb2 assembly parsing and encoding for UXTAB/UXTAB16/UXTH/UXTB/UXTB16/UXTH.
llvm-svn: 140125
2011-09-20 00:46:54 +00:00
Jim Grosbach 5aaeb91ca6 Thumb2 assembly parsing and encoding for USUB8/USUB16.
llvm-svn: 140120
2011-09-20 00:31:57 +00:00
Jim Grosbach 716f17399e Thumb2 assembly parsing and encoding for USAX.
llvm-svn: 140119
2011-09-20 00:30:45 +00:00
Jim Grosbach 42f7b647fa Thumb2 assembly parsing and encoding for USAT16.
llvm-svn: 140118
2011-09-20 00:28:25 +00:00
Jim Grosbach e0493ade65 Thumb2 assembly parsing and encoding for USAT.
llvm-svn: 140117
2011-09-20 00:27:36 +00:00
Jim Grosbach db6d378f80 Thumb2 assembly parsing and encoding for UQSAD8/USADA8.
llvm-svn: 140113
2011-09-20 00:23:51 +00:00
Jim Grosbach 6286f75161 Thumb2 assembly parsing and encoding for UQSUB16/UQSUB8.
llvm-svn: 140112
2011-09-20 00:20:44 +00:00
Jim Grosbach 62f8eee0eb Thumb2 assembly parsing and encoding for UQASX/UQSAX.
llvm-svn: 140111
2011-09-20 00:18:52 +00:00
Jim Grosbach 4b0e7d9457 Thumb2 assembly parsing and encoding for UQADD16/UQADD8.
llvm-svn: 140110
2011-09-20 00:15:03 +00:00
Jim Grosbach fc5451832a Thumb2 assembly parsing and encoding for UMAAL/UMLAL/UMULL.
llvm-svn: 140095
2011-09-19 23:31:02 +00:00
Jim Grosbach 1ab5e56324 Thumb2 assembly parsing and encoding for UHSUB16/UHSUB8.
llvm-svn: 140089
2011-09-19 23:15:36 +00:00
Jim Grosbach 15d97fd89b Thumb2 assembly parsing and encoding for UHASX/UHSAX.
llvm-svn: 140088
2011-09-19 23:13:25 +00:00
Jim Grosbach 3a64050470 Thumb2 assembly parsing and encoding for UHADD16/UHADD8.
llvm-svn: 140087
2011-09-19 23:08:24 +00:00
Jim Grosbach dd00b9f452 Thumb2 assembly parsing and encoding for UBFX.
llvm-svn: 140086
2011-09-19 23:06:38 +00:00
Jim Grosbach a6e6504e2a Thumb2 assembly parsing and encoding for UASX.
llvm-svn: 140085
2011-09-19 23:05:22 +00:00
Jim Grosbach f5028fd141 Fix copy/past-o. Gotta remember that 'modify' step...
llvm-svn: 140082
2011-09-19 22:53:00 +00:00
Jim Grosbach c704263440 Thumb2 assembly parsing and encoding for UADD16/UADD8.
llvm-svn: 140081
2011-09-19 22:52:27 +00:00
Jim Grosbach c74e2c3b07 Thumb2 assembly parsing and encoding for TST.
llvm-svn: 140080
2011-09-19 22:46:06 +00:00
Jim Grosbach 05541f45f3 Thumb2 assembly parsing and encoding for TBB/TBH.
llvm-svn: 140078
2011-09-19 22:21:13 +00:00
Jim Grosbach 52faf4bff9 Thumb2 assembly parsing and encoding for TEQ.
llvm-svn: 140070
2011-09-19 21:41:21 +00:00
Jim Grosbach 8221319707 Thumb2 assembly parsing and encoding for SXTB/SXTB16/SXTH.
llvm-svn: 140047
2011-09-19 20:29:33 +00:00
Jim Grosbach 264abdecf0 Thumb2 assembly parsing and encoding for SXTAB/SXTAB16/SXTAH.
llvm-svn: 140029
2011-09-19 17:56:37 +00:00
Jim Grosbach ec7c23eed3 Thumb2 assembly parsing and encoding for SVC.
llvm-svn: 140025
2011-09-19 17:40:35 +00:00
Jim Grosbach aa4c0d3986 Thumb2 assembly parsing and encoding for SUB(register).
llvm-svn: 140024
2011-09-19 17:37:48 +00:00
Jim Grosbach d0c435c23c Thumb2 assembly parsing and encoding for SUB(immediate).
llvm-svn: 139966
2011-09-16 22:58:42 +00:00
Jim Grosbach 45715a7b9d Thumb2 assembly parsing and encoding for STRT.
llvm-svn: 139963
2011-09-16 22:27:12 +00:00
Jim Grosbach 0876856aa0 Thumb2 assembly parsing and encoding for LDRHT/STRHT.
llvm-svn: 139962
2011-09-16 22:26:01 +00:00
Jim Grosbach 5c06de5bb9 Thumb2 assembly parsing and encoding for STREX/STREXB/STREXH/STREXD.
llvm-svn: 139961
2011-09-16 22:22:07 +00:00
Jim Grosbach bb24913d7b Thumb2 assembly parsing and encoding for STRD.
llvm-svn: 139960
2011-09-16 22:19:38 +00:00
Jim Grosbach dfb9c30319 Simplify comment. There's no Thumb LDRD(register) encoding. That's ARM only.
llvm-svn: 139959
2011-09-16 22:18:42 +00:00
Jim Grosbach c0f032a570 Thumb2 assembly parsing and encoding for STRBT.
llvm-svn: 139957
2011-09-16 22:15:51 +00:00
Jim Grosbach a46765300d Thumb2 assembly parsing and encoding for STRH.
llvm-svn: 139956
2011-09-16 22:12:19 +00:00
Jim Grosbach d372cb7312 Remove test of undocumented format.
llvm-svn: 139955
2011-09-16 22:09:58 +00:00
Jim Grosbach 85348bd8cd Thumb2 assembly parsing and encoding for STRB.
llvm-svn: 139954
2011-09-16 22:09:19 +00:00