| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
in their asmstring. Fix the two x86 "NOREX" instructions that have them.
If these comments are important, the instlowering stuff can print them.
llvm-svn: 117897
|
| |
|
|
|
|
|
| |
various X86 and ARM instructions that are bitten by this as isCodeGenOnly,
as they are.
llvm-svn: 117884
|
| |
|
|
| |
llvm-svn: 117879
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
looks like is happening:
Without the peephole optimizer:
(1) sub r6, r6, #32
orr r12, r12, lr, lsl r9
orr r2, r2, r3, lsl r10
(x) cmp r6, #0
ldr r9, LCPI2_10
ldr r10, LCPI2_11
(2) sub r8, r8, #32
(a) movge r12, lr, lsr r6
(y) cmp r8, #0
LPC2_10:
ldr lr, [pc, r10]
(b) movge r2, r3, lsr r8
With the peephole optimizer:
ldr r9, LCPI2_10
ldr r10, LCPI2_11
(1*) subs r6, r6, #32
(2*) subs r8, r8, #32
(a*) movge r12, lr, lsr r6
(b*) movge r2, r3, lsr r8
(1) is used by (x) for the conditional move at (a). (2) is used by (y) for the
conditional move at (b). After the peephole optimizer, these the flags resulting
from (1*) are ignored and only the flags from (2*) are considered for both
conditional moves.
llvm-svn: 117876
|
| |
|
|
| |
llvm-svn: 117867
|
| |
|
|
|
|
|
|
| |
Use this to make the X86 and ARM targets set isCodeGenOnly=1
automatically for their instructions that have Format=Pseudo,
resolving a hack in tblgen.
llvm-svn: 117862
|
| |
|
|
|
|
|
| |
and make it a hard error for instructions to not have an asm string.
These instructions should be marked isCodeGenOnly.
llvm-svn: 117861
|
| |
|
|
|
|
| |
got a dulicated line).
llvm-svn: 117860
|
| |
|
|
| |
llvm-svn: 117859
|
| |
|
|
|
|
|
|
|
|
|
| |
Instead of silently ignoring these instructions, emit a hard error and
force the target author to either refactor the target or mark the
instruction 'isCodeGenOnly'.
Mark a few instructions in ARM and MBlaze as isCodeGenOnly the are
doing this.
llvm-svn: 117858
|
| |
|
|
|
|
| |
how the push/pop mnemonic aliases are wrong.
llvm-svn: 117857
|
| |
|
|
|
|
|
| |
calling convention out of the fast and normal ISel files, and
into the calling convention TD file.
llvm-svn: 117856
|
| |
|
|
|
|
|
| |
which has the same logic specified in the CallingConv TD file.
This brings FastISel in line with the standard X86 ISel.
llvm-svn: 117855
|
| |
|
|
|
|
| |
it would be a bit too big :-)
llvm-svn: 117849
|
| |
|
|
| |
llvm-svn: 117848
|
| |
|
|
|
|
|
| |
"In32BitMode" and "In64BitMode" into tblgen, allow any
predicate that inherits from AssemblerPredicate.
llvm-svn: 117831
|
| |
|
|
|
|
|
|
|
|
|
| |
directives, allowing things like this:
def : MnemonicAlias<"pop", "popl">, Requires<[In32BitMode]>;
def : MnemonicAlias<"pop", "popq">, Requires<[In64BitMode]>;
Move the rest of the X86 MnemonicAliases over to the .td file.
llvm-svn: 117830
|
| |
|
|
| |
llvm-svn: 117824
|
| |
|
|
| |
llvm-svn: 117823
|
| |
|
|
| |
llvm-svn: 117822
|
| |
|
|
| |
llvm-svn: 117821
|
| |
|
|
|
|
| |
for shl. Caught by inspection.
llvm-svn: 117820
|
| |
|
|
| |
llvm-svn: 117819
|
| |
|
|
| |
llvm-svn: 117818
|
| |
|
|
| |
llvm-svn: 117817
|
| |
|
|
| |
llvm-svn: 117816
|
| |
|
|
|
|
|
| |
just remaps one mnemonic to another. Convert a few of the X86 aliases
from .cpp to .td code.
llvm-svn: 117815
|
| |
|
|
|
|
| |
it claiming not to have side-effects is no longer needed.
llvm-svn: 117789
|
| |
|
|
| |
llvm-svn: 117787
|
| |
|
|
| |
llvm-svn: 117785
|
| |
|
|
|
|
|
|
|
| |
consider it to be readonly. In fact, don't even consider it to be
readonly if it does a volatile load from an AllocaInst either (it
is debatable as to whether readonly would be correct or not in this
case; play safe for the moment). This fixes PR8279.
llvm-svn: 117783
|
| |
|
|
| |
llvm-svn: 117782
|
| |
|
|
| |
llvm-svn: 117773
|
| |
|
|
| |
llvm-svn: 117771
|
| |
|
|
|
|
| |
traffic.
llvm-svn: 117769
|
| |
|
|
| |
llvm-svn: 117766
|
| |
|
|
| |
llvm-svn: 117765
|
| |
|
|
|
|
| |
a basic block.
llvm-svn: 117764
|
| |
|
|
|
|
| |
elsewhere.
llvm-svn: 117763
|
| |
|
|
| |
llvm-svn: 117762
|
| |
|
|
| |
llvm-svn: 117761
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There were a number of issues to fix up here:
* The "device" argument of the llvm.memory.barrier intrinsic should be
used to distinguish the "Full System" domain from the "Inner Shareable"
domain. It has nothing to do with using DMB vs. DSB instructions.
* The compiler should never need to emit DSB instructions. Remove the
ARMISD::SYNCBARRIER node and also remove the instruction patterns for DSB.
* Merge the separate DMB/DSB instructions for options only used for the
disassembler with the default DMB/DSB instructions. Add the default
"full system" option ARM_MB::SY to the ARM_MB::MemBOpt enum.
* Add a separate ARMISD::MEMBARRIER_MCR node for subtargets that implement
a data memory barrier using the MCR instruction.
* Fix up encodings for these instructions (except MCR).
I also updated the tests and added a few new ones to check for DMB options
that were not currently being exercised.
llvm-svn: 117756
|
| |
|
|
| |
llvm-svn: 117753
|
| |
|
|
|
|
| |
conditional. Check for those instructions explicitly.
llvm-svn: 117747
|
| |
|
|
|
|
| |
defs. rdar://8610857.
llvm-svn: 117745
|
| |
|
|
| |
llvm-svn: 117742
|
| |
|
|
| |
llvm-svn: 117741
|
| |
|
|
| |
llvm-svn: 117740
|
| |
|
|
|
|
| |
encoder functions.
llvm-svn: 117738
|
| |
|
|
| |
llvm-svn: 117737
|