| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 163721
|
| |
|
|
|
|
| |
instructions. Also fix Intel syntax for gather instructions to use 'DWORD PTR' or 'QWORD PTR' to match gas.
llvm-svn: 160420
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Support the following intrinsics:
llvm.x86.avx2.gather.d.pd, llvm.x86.avx2.gather.q.pd
llvm.x86.avx2.gather.d.pd.256, llvm.x86.avx2.gather.q.pd.256
llvm.x86.avx2.gather.d.ps, llvm.x86.avx2.gather.q.ps
llvm.x86.avx2.gather.d.ps.256, llvm.x86.avx2.gather.q.ps.256
Modified Disassembler to handle VSIB addressing mode.
llvm-svn: 159221
|
| |
|
|
|
|
|
|
|
| |
The TableGenBackend base class doesn't do much, and will be removed
completely soon.
Patch by Sean Silva!
llvm-svn: 158311
|
| |
|
|
|
|
| |
coprocessor number was removed for this instruction.
llvm-svn: 155000
|
| |
|
|
| |
llvm-svn: 153935
|
| |
|
|
|
|
|
|
|
| |
The arm_neon intrinsics can create virtual registers from the DPair
register class which allows both even-odd and odd-even D-register pairs.
This fixes PR12389.
llvm-svn: 153603
|
| |
|
|
|
|
| |
Register pair, all lanes subscripting.
llvm-svn: 152157
|
| |
|
|
|
|
|
| |
Register pair VLD1/VLD2 all-lanes instructions. Kill off more of the
pseudos as a result.
llvm-svn: 152150
|
| |
|
|
|
|
| |
Use the new composite physical registers.
llvm-svn: 152063
|
| |
|
|
|
|
|
|
|
| |
With the new composite physical registers to represent arbitrary pairs
of DPR registers, we don't need the pseudo-registers anymore. Get rid of
a bunch of them that use DPR register pairs and just use the real
instructions directly instead.
llvm-svn: 152045
|
| |
|
|
|
|
| |
Original patch by Kay Tiong Khoo. Few tweaks by me for code density and to reduce replication.
llvm-svn: 150873
|
| |
|
|
| |
llvm-svn: 150304
|
| |
|
|
|
|
| |
rdar://10558523
llvm-svn: 147189
|
| |
|
|
| |
llvm-svn: 147025
|
| |
|
|
| |
llvm-svn: 146003
|
| |
|
|
| |
llvm-svn: 145726
|
| |
|
|
| |
llvm-svn: 145504
|
| |
|
|
| |
llvm-svn: 145465
|
| |
|
|
| |
llvm-svn: 145464
|
| |
|
|
|
|
| |
integer variants. rdar://10437054
llvm-svn: 144608
|
| |
|
|
| |
llvm-svn: 142691
|
| |
|
|
| |
llvm-svn: 142682
|
| |
|
|
| |
llvm-svn: 142675
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Next step in the ongoing saga of NEON load/store assmebly parsing. Handle
VLD1 instructions that take a two-register register list.
Adjust the instruction definitions to only have the single encoded register
as an operand. The super-register from the pseudo is kept as an implicit def,
so passes which come after pseudo-expansion still know that the instruction
defines the other subregs.
llvm-svn: 142670
|
| |
|
|
| |
llvm-svn: 142441
|
| |
|
|
| |
llvm-svn: 142356
|
| |
|
|
| |
llvm-svn: 142321
|
| |
|
|
| |
llvm-svn: 142303
|
| |
|
|
|
|
|
|
| |
NEON immediates are "interesting". Start of the work to handle parsing them
in an 'as' compatible manner. Getting the matcher to play nicely with
these and the floating point immediates from VFP is an extra fun wrinkle.
llvm-svn: 142293
|
| |
|
|
| |
llvm-svn: 141786
|
| |
|
|
|
|
| |
This should unbreak the picky buildbots.
llvm-svn: 141575
|
| |
|
|
|
|
|
|
|
|
| |
The table is indexed by opcode, so simply removing pseudo-instructions
creates a wrong mapping from opcode to table entry.
Add a test case for xorps which has a very high opcode that exposes this
problem.
llvm-svn: 141562
|
| |
|
|
| |
llvm-svn: 141446
|
| |
|
|
|
|
| |
was done by creating a new register group that excludes AX registers. Fixes PR10345. Also added aliases for flipping the order of the operands of xchg <reg>, %eax.
llvm-svn: 141274
|
| |
|
|
|
|
| |
This is the first step towards splitting LLVM and Clang's tblgen executables.
llvm-svn: 140951
|
| |
|
|
| |
llvm-svn: 140560
|
| |
|
|
| |
llvm-svn: 140078
|
| |
|
|
| |
llvm-svn: 139381
|
| |
|
|
| |
llvm-svn: 139267
|
| |
|
|
|
|
|
|
|
| |
The immediate offset of the non-writeback i8 form (encoding T4) allows
negative offsets only. The positive offset form of the encoding is the
LDRT instruction. Immediate offsets in the range [0,255] use encoding T3
instead.
llvm-svn: 139254
|
| |
|
|
|
|
| |
decoding bug this uncovered.
llvm-svn: 138675
|
| |
|
|
|
|
|
| |
Fix the test FIXME and add parsing support for the ADD (SP plus immediate)
and ADD (SP plus register) instruction forms.
llvm-svn: 138488
|
| |
|
|
|
|
|
|
|
| |
Add the predicate operand to the instructions. Update the back end
accordingly where the instructions are used. Restrict the SP operands
to actually only be SP, as otherwise these break assembly parsing for the
normal instruction variants.
llvm-svn: 138445
|
| |
|
|
|
|
| |
to tighten our decoding of BFI.
llvm-svn: 137168
|
| |
|
|
|
|
| |
range 1-32, with 32 encoded as 0.
llvm-svn: 137062
|
| |
|
|
|
|
| |
complement offsets. Add an appropriate immediate type for them.
llvm-svn: 136896
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Memory operand parsing is a bit haphazzard at the moment, in no small part
due to the even more haphazzard representations of memory operands in the .td
files. Start cleaning that all up, at least a bit.
The addressing modes in the .td files will be being simplified to not be
so monolithic, especially with regards to immediate vs. register offsets
and post-indexed addressing. addrmode3 is on its way with this patch, for
example.
This patch is foundational to enable going back to smaller incremental patches
for the individual memory referencing instructions themselves. It does just
enough to get the basics in place and handle the "make check" regression tests
we already have.
Follow-up work will be fleshing out the details and adding more robust test
cases for the individual instructions, starting with ARM mode and moving from
there into Thumb and Thumb2.
llvm-svn: 136845
|
| |
|
|
|
|
| |
Use a more descriptive name so the code is more self-documenting.
llvm-svn: 136704
|
| |
|
|
|
|
|
|
|
|
|
|
| |
llvm-mc gives an "invalid operand" error for instructions that take an unsigned
immediate which have the high bit set such as:
pblendw $0xc5, %xmm2, %xmm1
llvm-mc treats all x86 immediates as signed values and range checks them.
A small number of x86 instructions use the imm8 field as a set of bits.
This change only changes those instructions and where the high bit is not
ignored. The others remain unchanged.
llvm-svn: 136287
|