| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Permit explicit $fcc<X> operand in c.cond.fmt instruction.
Add c.cond.fmt to the MIPS to microMIPS instruction mapping table.
Check that $fcc1 - $fcc7 are unusable for MIPS-I to MIPS-III for
c.cond.fmt, bc1t, bc1f.
Reviewers: seanbruno, zoran.jovanovic, vkalintiris
Differential Revision: https://reviews.llvm.org/D24510
llvm-svn: 292117
|
| |
|
|
|
|
|
| |
This reverts commit r281022. Mips buildbot broke, due to unhandled register
class FCC.
llvm-svn: 281033
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As part of this effort, remove MipsFCmp nodes and use tablegen
patterns rather than custom lowering through C++.
Unexpectedly, this improves codesize for microMIPS as previous floating
point setcc expansions would materialize 0 and 1 into GPRs before using
the relevant mov[tf].[sd] instruction. Now $zero is used directly.
Reviewers: dsanders, vkalintiris, zoran.jovanovic
Differential Review: https://reviews.llvm.org/D23118
llvm-svn: 281022
|
| |
|
|
|
|
|
|
| |
instructions
Differential Revision: https://reviews.llvm.org/D16452
llvm-svn: 280909
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
MIPSR6 introduces a class of branches called compact branches. Unlike the
traditional MIPS branches which have a delay slot, compact branches do not
have a delay slot. The instruction following the compact branch is only
executed if the branch is not taken and must not be a branch.
It works by generating compact branches for MIPS32R6 when the delay slot
filler cannot fill a delay slot. Then, inspecting the generated code for
forbidden slot hazards (a compact branch with an adjacent branch or other
CTI) and inserting nops to clear this hazard.
Patch by Simon Dardis.
Reviewers: vkalintiris, dsanders
Subscribers: MatzeB, dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D16353
llvm-svn: 263444
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D10537
llvm-svn: 247697
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: This required adding the instruction predicate HasMips32r5.
Patch by Scott Egerton.
Reviewers: dsanders, vkalintiris
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D11136
llvm-svn: 242666
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Octeon CPUs use dmtc2 rt,imm16 and dmfcp2 rt,imm16 for the crypto coprocessor.
E.g. dmtc2 rt,0x4057 starts calculation of sha-1.
I had to introduce a new deconding namespace to avoid a decoding conflict.
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D10083
llvm-svn: 238439
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D8661
llvm-svn: 235505
|
| |
|
|
|
|
|
|
|
| |
This commits adds the octeon branch instructions bbit0/bbit032/bbit1/bbit132.
It also includes patterns for instruction selection and test cases.
Reviewed by D. Sanders
llvm-svn: 226573
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Patch by Amaury Pouly
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D6421
llvm-svn: 222899
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5240
llvm-svn: 222347
|
| |
|
|
|
|
|
|
|
|
|
| |
accept default cc0 register...
It causes a number of regressions when -fintegrated-as is enabled. This happens
because there are codegen-only instructions that incorrectly uses the first
operand as the encoding for the $fcc register. The regressions do not occur when
-via-file-asm is also given.
llvm-svn: 215847
|
| |
|
|
|
|
| |
register. This patch enables the instruction to accept other fcc registers. The aliases with default fcc0 registers are also defined.
llvm-svn: 215698
|
| |
|
|
|
|
|
|
|
|
| |
Summary:
This instruction is re-encoded in MIPS32r6/MIPS64r6 without changing the
restrictions. We hadn't implemented it for earlier ISA's so it has been added to those too.
Differential Revision: http://reviews.llvm.org/D4265
llvm-svn: 211590
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
cache and pref were added in MIPS-III, and MIPS32 but were re-encoded in
MIPS32r6/MIPS64r6 to use a 9-bit offset rather than the 16-bit offset
available to earlier cores.
Resolved the decoding conflict between pref and lwc3.
Depends on D4115
Reviewers: zoran.jovanovic, jkolek, vmedic
Reviewed By: vmedic
Differential Revision: http://reviews.llvm.org/D4116
llvm-svn: 210900
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
with Hazard Barrier).
Summary: These instructions are available in ISAs >= mips32/mips64. For mips32r6/mips64r6, jr.hb has a new encoding format.
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D4019
llvm-svn: 210654
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: vmedic, dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D3571
llvm-svn: 208301
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
!listconcat
Summary:
The overall idea is to chop the Predicates list into subsets that are
usually overridden independently. This allows subclasses to partially
override the predicates of their superclasses without having to re-add all
the existing predicates.
This patch starts the process by moving HasStdEnc into a new
EncodingPredicates list and almost everything else into
AdditionalPredicates.
It has revealed a couple likely bugs where 'let Predicates' has removed
the HasStdEnc predicate.
No functional change (confirmed by diffing tablegen-erated files).
Depends on D3549, D3506
Reviewers: vmedic
Differential Revision: http://reviews.llvm.org/D3550
llvm-svn: 208184
|
| |
|
|
|
|
|
|
|
| |
This patch adds the Octeon cnMips instructions seqi/snei and v3mulu/vmm0/vmulu.
It is only for the assembler. Test case is included.
Reviewed by: Daniel.Sanders@imgtec.com
llvm-svn: 205631
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Add negative tests for pause
Reviewers: matheusalmeida
Reviewed By: matheusalmeida
Differential Revision: http://llvm-reviews.chandlerc.com/D3246
llvm-svn: 205537
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Adds the instructions ext/ext32/cins/cins32.
It also changes pop/dpop to accept the two operand version and
adds a simple pattern to generate baddu.
Tests for the two operand versions (including baddu/dmul/dpop/pop)
and the code generation pattern for baddu are included.
Reviewed by: Daniel.Sanders@imgtec.com
llvm-svn: 205449
|
| |
|
|
|
|
|
|
|
| |
Adds the Octeon cnMips instructions "load multiplier register MPLx" and "load product register Px".
Includes tests.
Reviews by: Daniel.Sanders@imgtec.com
llvm-svn: 205343
|
| |
|
|
|
|
|
|
|
|
| |
The Octeon cpu from Cavium Networks is mips64r2 based and has an extended
instruction set. In order to utilize this with LLVM, a new cpu feature "octeon"
and a subtarget feature "cnmips" is added. A small set of new instructions
(baddu, dmul, pop, dpop, seq, sne) is also added. LLVM generates dmul, pop and
dpop instructions with option -mcpu=octeon or -mattr=+cnmips.
llvm-svn: 204337
|
| |
|
|
|
|
| |
Differential Revision: http://llvm-reviews.chandlerc.com/D3112
llvm-svn: 204325
|
| |
|
|
| |
llvm-svn: 198009
|
| |
|
|
| |
llvm-svn: 197815
|
| |
|
|
| |
llvm-svn: 197696
|
| |
|
|
| |
llvm-svn: 194569
|
| |
|
|
| |
llvm-svn: 194205
|
| |
|
|
| |
llvm-svn: 193992
|
| |
|
|
| |
llvm-svn: 193623
|
| |
|
|
| |
llvm-svn: 190746
|
| |
|
|
| |
llvm-svn: 190744
|
| |
|
|
|
|
|
|
| |
which is
equivalent to "beq $zero, $zero, offset".
llvm-svn: 190220
|
| |
|
|
|
|
| |
cases are included in patch.
llvm-svn: 190152
|
| |
|
|
|
|
| |
cases are included in patch.
llvm-svn: 190148
|
| |
|
|
| |
llvm-svn: 189213
|
| |
|
|
| |
llvm-svn: 188176
|
| |
|
|
|
|
| |
class AsmParser as suggested.
llvm-svn: 187569
|
| |
|
|
| |
llvm-svn: 187443
|
| |
|
|
|
|
| |
register operands.
llvm-svn: 187242
|
| |
|
|
|
|
| |
operands.
llvm-svn: 187238
|
| |
|
|
|
|
| |
examples are given.
llvm-svn: 186507
|
| |
|
|
|
|
| |
matcher to emit mnemonics contain '.' characters. This makes asm parser code simpler and more efficient.
llvm-svn: 186397
|
| |
|
|
|
|
| |
cases are added.
llvm-svn: 186151
|
| |
|
|
| |
llvm-svn: 186000
|
| |
|
|
|
|
| |
cases are added.
llvm-svn: 185999
|
| |
|
|
|
|
|
| |
By default, a teq instruction is inserted after integer divide. No divide-by-zero
checks are performed if option "-mnocheck-zero-division" is used.
llvm-svn: 182306
|
| |
|
|
|
|
| |
Patch by Zoran Jovanovic.
llvm-svn: 180241
|