Jozef Kolek
12c6982b3b
[mips][microMIPS] Implement LWSP and SWSP instructions
...
Differential Revision: http://reviews.llvm.org/D6416
llvm-svn: 224771
2014-12-23 16:16:33 +00:00
Colin LeMahieu
4b1eac4dda
[Hexagon] Adding memb instruction. Fixing whitespace in test from 224730.
...
llvm-svn: 224735
2014-12-22 21:40:43 +00:00
Colin LeMahieu
af1e5de141
[Hexagon] Adding classes and load unsigned byte instruction, updating usages.
...
llvm-svn: 224730
2014-12-22 21:20:03 +00:00
Colin LeMahieu
0f850bde0e
[Hexagon] Removing old variants of instructions and updating references.
...
llvm-svn: 224612
2014-12-19 20:29:29 +00:00
Colin LeMahieu
38ce8cd2e2
[Hexagon] Adding bit extraction and table indexing instructions.
...
llvm-svn: 224610
2014-12-19 20:01:08 +00:00
Colin LeMahieu
3c7f664d5a
[Hexagon] Adding bit insertion instructions.
...
llvm-svn: 224609
2014-12-19 19:54:38 +00:00
Colin LeMahieu
d63ef93b4b
[Hexagon] Adding more xtype shift instructions.
...
llvm-svn: 224608
2014-12-19 19:51:35 +00:00
Colin LeMahieu
cc09d1ccc5
[Hexagon] Adding xtype shift instructions.
...
llvm-svn: 224604
2014-12-19 19:34:50 +00:00
Colin LeMahieu
f3db884efb
[Hexagon] Adding transfers to and from control registers.
...
llvm-svn: 224599
2014-12-19 19:06:32 +00:00
Colin LeMahieu
5ccbb1298b
[Hexagon] Adding loop0/1 sp0/1/2loop0 instructions.
...
llvm-svn: 224556
2014-12-19 00:06:53 +00:00
Colin LeMahieu
174476ed96
Reverting 224550, was not ready for commit.
...
llvm-svn: 224552
2014-12-18 23:36:15 +00:00
Colin LeMahieu
9000481cda
[Hexagon] Adding loop0/1 sp0/1/2loop0 instructions.
...
llvm-svn: 224550
2014-12-18 23:27:51 +00:00
Colin LeMahieu
aa1bade7b4
[Hexagon] Updating doubleword shift usages to new versions.
...
llvm-svn: 224391
2014-12-16 23:36:15 +00:00
Colin LeMahieu
f5acc8c625
[Hexagon] Adding tstbit/bitclr/bitset instructions.
...
llvm-svn: 224374
2014-12-16 21:28:58 +00:00
Colin LeMahieu
615757f2f1
[Hexagon] Adding bit count and twiddling instructions.
...
llvm-svn: 224367
2014-12-16 20:57:56 +00:00
Colin LeMahieu
6fce46baf6
[Hexagon] Adding asr/lsr/asl reg/imm, asl with saturation, asr with rounding. Doubleword abs/neg/not. Interleave and deinterleave instructions.
...
llvm-svn: 224365
2014-12-16 20:40:23 +00:00
Colin LeMahieu
1944a8cd04
[Hexagon] Adding absolute value, and negate with saturation
...
llvm-svn: 224346
2014-12-16 17:44:49 +00:00
Colin LeMahieu
455f24aa77
[Hexagon] Adding saturate and swizzle instructions.
...
llvm-svn: 224343
2014-12-16 16:27:17 +00:00
Zoran Jovanovic
2deca34803
[mips][microMIPS] Implement SWP and LWP instructions
...
Differential Revision: http://reviews.llvm.org/D5667
llvm-svn: 224338
2014-12-16 14:59:10 +00:00
Vladimir Medic
a489a631ae
Add disassembler tests for mips4 platform. There are no functional changes.
...
llvm-svn: 224335
2014-12-16 13:02:25 +00:00
Colin LeMahieu
d9a00a9c38
[Hexagon] Adding doubleword multiplies with and without accumulation.
...
llvm-svn: 224293
2014-12-16 00:07:24 +00:00
Colin LeMahieu
18c927620a
[Hexagon] Adding halfword to doubleword multiplies.
...
llvm-svn: 224289
2014-12-15 23:29:37 +00:00
Colin LeMahieu
64ffd52943
[Hexagon] Adding logical-logical accumulation instructions and tests.
...
llvm-svn: 224288
2014-12-15 23:19:07 +00:00
Colin LeMahieu
71e11a1d0d
[Hexagon] Adding a number of additional multiply forms with tests.
...
llvm-svn: 224282
2014-12-15 22:10:37 +00:00
Colin LeMahieu
4a46429305
[Hexagon] Adding misc multiply encodings and tests.
...
llvm-svn: 224273
2014-12-15 21:17:03 +00:00
Colin LeMahieu
26f884aedf
[Hexagon] Adding doubleworld accumulating multiplies of halfwords.
...
llvm-svn: 224267
2014-12-15 20:17:46 +00:00
Colin LeMahieu
572c53e258
[Hexagon] Adding accumulating half word multiplies.
...
llvm-svn: 224266
2014-12-15 20:10:28 +00:00
Colin LeMahieu
d1704cdc07
[Hexagon] Adding multiply with rnd/sat/rndsat
...
llvm-svn: 224265
2014-12-15 20:01:59 +00:00
Colin LeMahieu
fe4012a969
[Hexagon] Adding encoding bits for halfword multiplies.
...
llvm-svn: 224261
2014-12-15 19:22:07 +00:00
Reid Kleckner
b736bf3899
Move mips1 tests to test/MC/Disassembler/Mips/mips1
...
This matches the pattern of the mips2 and 3 tests, as well as our normal
conventions.
llvm-svn: 224254
2014-12-15 17:56:02 +00:00
Vladimir Medic
d7ecf49e97
Add disassembler tests for mips3 platform. There are no functional changes.
...
llvm-svn: 224253
2014-12-15 16:19:34 +00:00
Vladimir Medic
19703a0bd6
Add disassembler tests for mips2 platform. There are no functional changes.
...
llvm-svn: 224252
2014-12-15 15:58:20 +00:00
Vladimir Medic
a67937331d
This is the first in a series of patches that add missing disassembler tests for mips platform. The patches are divided per version of mips CPU to keep the patches smaller and ease the review. There are no functional changes, code is changed only if new tests reveal a bug.This patch adds disassembler tests for mips1 CPU.
...
llvm-svn: 224251
2014-12-15 15:22:33 +00:00
Colin LeMahieu
90482a77b1
[Hexagon] Adding double word add/min/minu/max/maxu instructions and tests.
...
llvm-svn: 224153
2014-12-12 21:29:25 +00:00
Colin LeMahieu
984ef17d66
[Hexagon] Adding J class call instructions.
...
llvm-svn: 224150
2014-12-12 21:12:27 +00:00
Colin LeMahieu
eb52f69f59
[Hexagon] Adding encoding information for sign extend word instruction.
...
llvm-svn: 224026
2014-12-11 16:43:06 +00:00
Colin LeMahieu
220adb6370
[Hexagon] Adding combine ri/ir instructions.
...
llvm-svn: 223971
2014-12-10 22:23:07 +00:00
Colin LeMahieu
db0b13cef0
[Hexagon] Adding encodings for JR class instructions. Updating complier usages.
...
llvm-svn: 223967
2014-12-10 21:24:10 +00:00
Colin LeMahieu
8872d20788
[Hexagon] Adding JR class predicated call reg instructions.
...
llvm-svn: 223933
2014-12-10 18:24:16 +00:00
Colin LeMahieu
b030c254c0
[Hexagon] Fixing broken tests.
...
llvm-svn: 223823
2014-12-09 20:36:53 +00:00
Colin LeMahieu
4af437fee5
[Hexagon] Updating rr/ri 32/64 transfer encodings and adding tests.
...
llvm-svn: 223821
2014-12-09 20:23:30 +00:00
Colin LeMahieu
b580d7d8c8
[Hexagon] Adding word combine dot-new form and replacing old combine opcode.
...
llvm-svn: 223815
2014-12-09 19:23:45 +00:00
Colin LeMahieu
30dcb232b0
[Hexagon] Updating predicate register transfers and adding tstbit to allow select selection. Updating ll tests with predicate transfers that previously had nop encodings.
...
llvm-svn: 223800
2014-12-09 18:16:49 +00:00
Colin LeMahieu
f5b4d655d2
[Hexagon] Adding any8, all8, and/or/xor/andn/orn/not predicate register forms, mask, and vitpack instructions and patterns.
...
llvm-svn: 223710
2014-12-08 23:07:59 +00:00
Colin LeMahieu
df96b071f1
[Hexagon] Fixing broken test.
...
llvm-svn: 223704
2014-12-08 22:29:06 +00:00
Colin LeMahieu
b6c4dd96f9
[Hexagon] Adding xtype doubleword add, sub, and, or, xor and patterns.
...
llvm-svn: 223702
2014-12-08 22:19:14 +00:00
Colin LeMahieu
9bfe5473da
[Hexagon] Adding xtype doubleword comparisons. Removing unused multiclass.
...
llvm-svn: 223701
2014-12-08 21:56:47 +00:00
Colin LeMahieu
025f860638
[Hexagon] Adding xtype parity, min, minu, max, maxu instructions.
...
llvm-svn: 223693
2014-12-08 21:19:18 +00:00
Colin LeMahieu
8d1376c60e
[Hexagon] Adding xtype halfword add/sub ll/hl/lh/hh/sat/<<16 instructions.
...
llvm-svn: 223692
2014-12-08 20:33:01 +00:00
Colin LeMahieu
cc46cd8eec
[Hexagon] Adding add/sub with saturation. Removing unused def. Cleaning up shift patterns.
...
llvm-svn: 223680
2014-12-08 18:33:49 +00:00
Colin LeMahieu
b56e6cd9b9
[Hexagon] Adding combine reg, reg with predicated forms.
...
llvm-svn: 223667
2014-12-08 17:33:06 +00:00
Colin LeMahieu
a55070dbdd
[Hexagon] Adding packhl instruction.
...
llvm-svn: 223664
2014-12-08 17:01:18 +00:00
Colin LeMahieu
2c77a35e6e
[Hexagon] Adding sub/and/or reg, imm forms
...
llvm-svn: 223522
2014-12-05 21:38:29 +00:00
Colin LeMahieu
9665f98c10
[Hexagon] Updating mux_ir/ri/ii/rr with encoding bits
...
llvm-svn: 223515
2014-12-05 21:09:27 +00:00
Colin LeMahieu
19985e9a8d
[Hexagon] Adding tfrih/l instructions.
...
llvm-svn: 223506
2014-12-05 20:07:19 +00:00
Colin LeMahieu
a4ab58101a
[Hexagon] Adding add reg, imm form with encoding bits and test.
...
llvm-svn: 223504
2014-12-05 19:51:23 +00:00
Colin LeMahieu
383c36e3a8
[Hexagon] Adding DoubleRegs decoder. Moving C2_mux and A2_nop. Adding combine imm-imm form.
...
llvm-svn: 223494
2014-12-05 18:24:06 +00:00
Colin LeMahieu
7f0a430c7d
[Hexagon] Adding combine reg-reg forms.
...
llvm-svn: 223485
2014-12-05 17:38:36 +00:00
Colin LeMahieu
01785bb063
[Hexagon] Marking several instructions as isCodeGenOnly=0 and adding direct disassembly tests for many instructions.
...
llvm-svn: 223482
2014-12-05 17:27:39 +00:00
Colin LeMahieu
2c08dc33db
[Hexagon] Adding lit exception if Hexagon isn't built.
...
llvm-svn: 223335
2014-12-04 04:28:38 +00:00
Colin LeMahieu
5d6f03bd5a
[Hexagon] Marking some instructions as CodeGenOnly=0 and adding disassembly tests.
...
llvm-svn: 223334
2014-12-04 03:41:21 +00:00
Asiri Rathnayake
a0199b9a59
Add support for ARM modified-immediate assembly syntax.
...
Certain ARM instructions accept 32-bit immediate operands encoded as a 8-bit
integer value (0-255) and a 4-bit rotation (0-30, even). Current ARM assembly
syntax support in LLVM allows the decoded (32-bit) immediate to be specified
as a single immediate operand for such instructions:
mov r0, #4278190080
The ARMARM defines an extended assembly syntax allowing the encoding to be made
more explicit, as in:
mov r0, #255 , #8 ; (same 32-bit value as above)
The behaviour of the two instructions can be different w.r.t flags, which is
documented under "Modified immediate constants" in ARMARM. This patch enables
support for this extended syntax at the MC layer.
llvm-svn: 223113
2014-12-02 10:53:20 +00:00
Vladimir Medic
b682ddf33a
The andi16, addiusp and jraddiusp micromips instructions were missing dedicated decoder methods in MipsDisassembler.cpp to properly decode immediate operands. These methods are added together with corresponding tests.
...
llvm-svn: 223006
2014-12-01 11:12:04 +00:00
Charlie Turner
30895f9ab8
Add post-decode checking of HVC instruction.
...
Add checkDecodedInstruction for post-decode checking of instructions, to catch
the corner cases like HVC that don't fit into the general pattern. Needed to
check for an invalid condition field in instruction encoding despite HVC not
taking a predicate.
Patch by Matthew Wahab.
Change-Id: I48e28de981d7a9e43569594da3c45fb478b4f795
llvm-svn: 222992
2014-12-01 08:50:27 +00:00
Charlie Turner
7de905cd17
Add Thumb HVC and ERET virtualisation extension instructions.
...
Patch by Matthew Wahab.
Change-Id: I131f71c1150d5fa797066a18e09d526c19bf9016
llvm-svn: 222990
2014-12-01 08:39:19 +00:00
Charlie Turner
4d88ae2002
Add ARM ERET and HVC virtualisation extension instructions.
...
Patch by Matthew Wahab.
Change-Id: Iad75f078fbaa4ecc7d7a4820ad9b3930679cbbbb
llvm-svn: 222989
2014-12-01 08:33:28 +00:00
Hal Finkel
378107daa4
[PowerPC] Add asm support for cache-inhibited ld/st instructions
...
Add assembler support for the fixed-point cache-inhibited load/store
instructions. These are hypervisor-level only, so don't get too excited ;)
Fixes PR21650.
llvm-svn: 222976
2014-11-30 10:15:56 +00:00
Jozef Kolek
c7e220f6e0
[mips][microMIPS] Implement NOP aliases
...
This patch implements microMIPS 16-bit (MOVE16 $0, $0) and
32-bit (SLL $0, $0, 0) NOP aliases.
http://reviews.llvm.org/D6440
llvm-svn: 222953
2014-11-29 13:29:24 +00:00
Charlie Turner
db6c5e7afa
Fix wrong encoding of MRSBanked.
...
Patch by Matthew Wahab.
Change-Id: Ia2a001ca2760028ea360fe77b56f203a219eefbc
llvm-svn: 222920
2014-11-28 15:01:06 +00:00
Daniel Sanders
b4484d62ad
[mips] Add synci instruction.
...
Patch by Amaury Pouly
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D6421
llvm-svn: 222899
2014-11-27 17:28:10 +00:00
Jozef Kolek
aa2b9278fe
[mips][microMIPS] Implement disassembler support for 16-bit instructions LI16, ADDIUR1SP, ADDIUR2 and ADDIUS5
...
Differential Revision: http://reviews.llvm.org/D6419
llvm-svn: 222887
2014-11-27 14:41:44 +00:00
Jozef Kolek
315e7eca1b
[mips][microMIPS] Implement disassembler support for 16-bit instructions LBU16, LHU16, LW16, SB16, SH16 and SW16
...
Differential Revision: http://reviews.llvm.org/D6405
llvm-svn: 222847
2014-11-26 18:56:38 +00:00
Hal Finkel
5901676581
[PowerPC] Add the 'attn' instruction
...
The attn instruction is not part of the Power ISA, but is documented in the A2
user manual, and is accepted by the GNU assembler for the A2 and the POWER4+.
Reported as part of PR21650.
llvm-svn: 222712
2014-11-25 00:30:11 +00:00
Jozef Kolek
ea22c4cfbb
[mips][microMIPS] Implement disassembler support for 16-bit instructions
...
With the help of new method readInstruction16() two bytes are read and
decodeInstruction() is called with DecoderTableMicroMips16, if this fails
four bytes are read and decodeInstruction() is called with
DecoderTableMicroMips32.
Differential Revision: http://reviews.llvm.org/D6149
llvm-svn: 222648
2014-11-24 13:29:59 +00:00
Zoran Jovanovic
a4c4b5fc01
[mips][micromips] Implement SWM32 and LWM32 instructions
...
Differential Revision: http://reviews.llvm.org/D5519
llvm-svn: 222367
2014-11-19 16:44:02 +00:00
Jozef Kolek
55bb542856
[mips][microMIPS] Add disassembler tests for new microMIPS 32-bit
...
instructions: LWXS, BGEZALS, BLTZALS, BEQZC, BNEZC, JALS and JALRS.
http://reviews.llvm.org/D5413
llvm-svn: 222349
2014-11-19 11:49:57 +00:00
Oliver Stannard
c8d452eed8
Fix bashism in tests added by r221341
...
llvm-svn: 221342
2014-11-05 12:40:21 +00:00
Oliver Stannard
9e89d8cc5c
[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.
llvm-svn: 221341
2014-11-05 12:06:39 +00:00
Colin LeMahieu
5241881bbc
[Hexagon] Reverting 220584 to address ASAN errors.
...
llvm-svn: 221210
2014-11-04 00:14:36 +00:00
Charlie Turner
1d8cc909cc
Remove the cortex-a9-mp CPU.
...
This CPU definition is redundant. The Cortex-A9 is defined as
supporting multiprocessing extensions. Remove its definition and
update appropriate tests.
LLVM defines both a cortex-a9 CPU and a cortex-a9-mp CPU. The only
difference between the two CPU definitions in ARM.td is that
cortex-a9-mp contains the feature FeatureMP for multiprocessing
extensions.
This is redundant since the Cortex-A9 is defined as having
multiprocessing extensions in the TRMs. armcc also defines the
Cortex-A9 as having multiprocessing extensions by default.
Change-Id: Ifcadaa6c322be0a33d9d2a39cfdd7da1d75981a7
llvm-svn: 221166
2014-11-03 17:38:00 +00:00
Elena Demikhovsky
4b01b7306c
AVX-512: Fixed encoding of VPBROADCASTM and added SKX forms of this instruction
...
llvm-svn: 220638
2014-10-26 09:52:24 +00:00
Colin LeMahieu
838307b31f
[Hexagon] Resubmission of 220427
...
Modified library structure to deal with circular dependency between HexagonInstPrinter and HexagonMCInst.
Adding encoding bits for add opcode.
Adding llvm-mc tests.
Removing unit tests.
http://reviews.llvm.org/D5624
llvm-svn: 220584
2014-10-24 19:00:32 +00:00
NAKAMURA Takumi
504bbf91cd
Revert r220427, "[Hexagon] Adding encoding bits for add opcode."
...
It brought cyclic dependecy between HexagonAsmPrinter and HexagonDesc.
llvm-svn: 220478
2014-10-23 11:31:22 +00:00
Oliver Stannard
39a85abddf
[Thumb2] Improve disassembly of memory hints
...
Currently, the ARM disassembler will disassemble the Thumb2 memory hint
instructions (PLD, PLDW and PLI), even for targets which do not have
these instructions. This patch adds the required checks to the
disassmebler.
llvm-svn: 220472
2014-10-23 08:52:58 +00:00
Colin LeMahieu
73a51a1a68
[Hexagon] Adding encoding bits for add opcode.
...
Adding llvm-mc tests.
Removing unit tests.
http://reviews.llvm.org/D5624
llvm-svn: 220427
2014-10-22 20:58:35 +00:00
Craig Topper
0676b902ad
[X86] Fix a bug where the disassembler was ignoring the VEX.W bit in 32-bit mode for certain instructions it shouldn't.
...
Unfortunately, this isn't easy to fix since there's no simple way to figure out from the disassembler tables whether the W-bit is being used to select a 64-bit GPR or if its a required part of the opcode. The fix implemented here just looks for "64" in the instruction name and ignores the W-bit in 32-bit mode if its present.
Fixes PR21169.
llvm-svn: 219194
2014-10-07 07:29:50 +00:00
Daniel Sanders
92db6b78f7
[mips] Fix disassembly of [ls][wd]c[23], cache, and pref
...
Fixes PR21015, and PR20993.
Patch by Jun Koi
llvm-svn: 218745
2014-10-01 08:26:55 +00:00
Renato Golin
92c816c68f
Thumb2 M-class MSR instruction support changes
...
This patch implements a few changes related to the Thumb2 M-class MSR instruction:
* better handling of unpredictable encodings,
* recognition of the _g and _nzcvqg variants by the asm parser only if the DSP
extension is available, preferred output of MSR APSR moves with the _<bits>
suffix for v7-M.
Patch by Petr Pavlu.
llvm-svn: 216874
2014-09-01 11:25:07 +00:00
Hal Finkel
584a70c820
[PowerPC] Add support for dcbtst and icbt (prefetch)
...
Adds code generation support for dcbtst (data cache prefetch for write) and
icbt (instruction cache prefetch for read - Book E cores only).
We still end up with a 'cannot select' error for the non-supported prefetch
intrinsic forms. This will be fixed in a later commit.
Fixes PR20692.
llvm-svn: 216339
2014-08-23 23:21:04 +00:00
Tim Northover
ee843ef0fa
ARM: implement MRS/MSR (banked reg) system instructions.
...
These are system-only instructions for CPUs with virtualization
extensions, allowing a hypervisor easy access to all of the various
different AArch32 registers.
rdar://problem/17861345
llvm-svn: 215700
2014-08-15 10:47:12 +00:00
Joerg Sonnenberger
5f6b6cec70
Update disassembler test to check the full dccci/iccci form.
...
llvm-svn: 215283
2014-08-09 14:01:10 +00:00
Joerg Sonnenberger
a3d4dc9eb4
Add RFID instruction.
...
llvm-svn: 215105
2014-08-07 12:39:59 +00:00
Joerg Sonnenberger
412471271e
Add dci/ici instructions for PPC 476 and friends.
...
llvm-svn: 214864
2014-08-05 14:40:32 +00:00
Joerg Sonnenberger
9dedceb71d
Add lswi / stswi for assembler use with a warning to not add patterns
...
for them.
llvm-svn: 214862
2014-08-05 13:34:01 +00:00
Joerg Sonnenberger
5995e0021d
Add PPC 603's tlbld and tlbli instructions.
...
llvm-svn: 214825
2014-08-04 23:49:45 +00:00
Joerg Sonnenberger
6c3e38522a
tlbre / tlbwe / tlbsx / tlbsx. variants for the PPC 4xx CPUs.
...
llvm-svn: 214784
2014-08-04 21:28:22 +00:00
Joerg Sonnenberger
0b2ebcb49d
Add features for PPC 4xx and e500/e500mc instructions.
...
Move the test cases for them into separate files.
llvm-svn: 214724
2014-08-04 15:47:38 +00:00
Joerg Sonnenberger
c03105ba8e
tlbia support
...
llvm-svn: 214640
2014-08-02 20:16:29 +00:00
Joerg Sonnenberger
e8a167ce8f
mfdcr / mtdcr support
...
llvm-svn: 214639
2014-08-02 20:00:26 +00:00
Joerg Sonnenberger
99ab590ac9
Don't use additional arguments for dss and friends to satisfy DSS_Form,
...
when let can do the same thing. Keep the 64bit variants as codegen-only.
While they have a different register class, the encoding is the same for
32bit and 64bit mode. Having both present would otherwise confuse the
disassembler.
llvm-svn: 214636
2014-08-02 15:09:41 +00:00