- Nov 17, 2010
-
-
Evan Cheng authored
and xor. The 32-bit move immediates can be hoisted out of loops by machine LICM but the isel hacks were preventing them. Instead, let peephole optimization pass recognize registers that are defined by immediates and the ARM target hook will fold the immediates in. Other changes include 1) do not fold and / xor into cmp to isel TST / TEQ instructions if there are multiple uses. This happens when the 'and' is live out, machine sink would have sinked the computation and that ends up pessimizing code. The peephole pass would recognize situations where the 'and' can be toggled to define CPSR and eliminate the comparison anyway. 2) Move peephole pass to after machine LICM, sink, and CSE to avoid blocking important optimizations. rdar://8663787, rdar://8241368 llvm-svn: 119548
-
- Nov 06, 2010
-
-
Chris Lattner authored
fixed physical registers. Start moving fp comparison aliases to the .td file (which default to using %st1 if nothing is specified). llvm-svn: 118352
-
Chris Lattner authored
add fixed immediate values. Move the aad and aam aliases to use this, and document it. llvm-svn: 118350
-
Chris Lattner authored
result instruction operand numbering matched the result pattern. Fixing this allows us to move the xchg/test aliases to the .td file. llvm-svn: 118334
-
Chris Lattner authored
operand list instead of the operand list redundantly declared on the alias or instruction. With this change, we finally remove the ins/outs list on the alias. Before: def : InstAlias<(outs GR16:$dst), (ins GR8 :$src), "movsx $src, $dst", (MOVSX16rr8W GR16:$dst, GR8:$src)>; After: def : InstAlias<"movsx $src, $dst", (MOVSX16rr8W GR16:$dst, GR8:$src)>; This also makes the alias mechanism more general and powerful, which will be exploited in subsequent patches. llvm-svn: 118329
-
Chris Lattner authored
file instead of the asmmatcher. llvm-svn: 118324
-
- Nov 02, 2010
-
-
Chris Lattner authored
filling them in one at a time. Previously this iterated over the asmoperands, which left the problem of "holes". The new approach simplifies things. llvm-svn: 118104
-
- Nov 01, 2010
-
-
Chris Lattner authored
aliases installed and working. They now work when the matched pattern and the result instruction have exactly the same operand list. This is now enough for us to define proper aliases for movzx and movsx, implementing rdar://8017633 and PR7459. Note that we do not accept instructions like: movzx 0(%rsp), %rsi GAS accepts this instruction, but it doesn't make any sense because we don't know the size of the memory operand. It could be 8/16/32 bits. llvm-svn: 117901
-
Chris Lattner authored
todo: the result field. llvm-svn: 117894
-
Chris Lattner authored
CodeGenInstruction into its own helper class. No functionality change. llvm-svn: 117893
-
Chris Lattner authored
llvm-svn: 117892
-
Chris Lattner authored
simplify CodeGenInstruction. No functionality change. llvm-svn: 117891
-
Chris Lattner authored
CodeGenInstruction::FlattenAsmStringVariants method. Use it to simplify the code in AsmWriterInst, which now no longer needs to worry about variants. llvm-svn: 117886
-
- Oct 13, 2010
-
-
Jim Grosbach authored
operand values. This is useful for operands which require additional trickery to encode into the instruction. For example, the ARM shifted immediate and shifted register operands. llvm-svn: 116353
-
- Oct 11, 2010
-
-
Jim Grosbach authored
try to match them by name first. If there is no by-name match, fall back to assuming they are in order (this was the previous behavior). llvm-svn: 116211
-
- Oct 08, 2010
-
-
Jim Grosbach authored
llvm-svn: 116068
-
- Sep 24, 2010
-
-
Owen Anderson authored
reflection, this isn't going to achieve the purpose I intended it for. Back to the drawing board! llvm-svn: 114710
-
Owen Anderson authored
Not intended functionality change, as nothing uses this yet. llvm-svn: 114702
-
- Aug 08, 2010
-
-
Bill Wendling authored
useful after all. llvm-svn: 110531
-
- Aug 06, 2010
-
-
rdar://problem/7405933Bill Wendling authored
need the Compare flag after all. --- Reverse-merging r109901 into '.': U include/llvm/Target/TargetInstrDesc.h U include/llvm/Target/Target.td U utils/TableGen/InstrInfoEmitter.cpp U utils/TableGen/CodeGenInstruction.cpp U utils/TableGen/CodeGenInstruction.h llvm-svn: 110424
-
- Jul 31, 2010
-
-
Bill Wendling authored
later to identify and possibly remove superfluous compare instructions -- those that are testing for and setting a status flag that should already be set. llvm-svn: 109901
-
- Mar 27, 2010
-
-
Chris Lattner authored
from two places in CodeGenDAGPatterns.cpp, and use it in DAGISelMatcherGen.cpp instead of using an incorrect predicate that happened to get lucky on our current targets. llvm-svn: 99726
-
- Mar 18, 2010
-
-
Chris Lattner authored
llvm-svn: 98879
-
Chris Lattner authored
Add checking that the input/output operand list in spelled right. llvm-svn: 98865
-
- Feb 28, 2010
-
-
Dan Gohman authored
llvm-svn: 97348
-
- Feb 10, 2010
-
-
Chris Lattner authored
llvm-svn: 95808
-
Chris Lattner authored
for representing constraint info semantically instead of as a c expression that will be blatted out to the .inc file. Fix X86RecognizableInstr to use this instead of parsing C code :). llvm-svn: 95753
-
- Oct 29, 2009
-
-
Dan Gohman authored
bunch of associated comments, because it doesn't have anything to do with DAGs or scheduling. This is another step in decoupling MachineInstr emitting from scheduling. llvm-svn: 85517
-
- Oct 01, 2009
-
-
Evan Cheng authored
set, these flags indicate the instructions source / def operands have special register allocation requirement that are not captured in their register classes. Post-allocation passes (e.g. post-alloc scheduler) should not change their allocations. e.g. ARM::LDRD require the two definitions to be allocated even / odd register pair. llvm-svn: 83196
-
- Dec 03, 2008
-
-
Dan Gohman authored
llvm-svn: 60487
-
- May 29, 2008
-
-
Bill Wendling authored
instruction to execute. This can be used for transformations (like two-address conversion) to remat an instruction instead of generating a "move" instruction. The idea is to decrease the live ranges and register pressure and all that jazz. llvm-svn: 51660
-
- Mar 15, 2008
-
-
Evan Cheng authored
llvm-svn: 48381
-
- Jan 10, 2008
-
-
Chris Lattner authored
x86 backend where instructions were not marked maystore/mayload, and perf issues where instructions were not marked neverHasSideEffects. It would be really nice if we could write patterns for copy instructions. I have audited all the x86 instructions down to MOVDQAmr. The flags on others and on other targets are probably not right in all cases, but no clients currently use this info that are enabled by default. llvm-svn: 45829
-
- Jan 08, 2008
-
-
Chris Lattner authored
This is currently not set by anything. llvm-svn: 45748
-
- Jan 07, 2008
-
-
Chris Lattner authored
Evan, please review the comments I added to getNumDefs to make sure that they are accurate, thx. llvm-svn: 45687
-
Chris Lattner authored
just unconditionally use the def name of the instruction. llvm-svn: 45684
-
Chris Lattner authored
llvm-svn: 45667
-
- Jan 06, 2008
-
-
Chris Lattner authored
llvm-svn: 45656
-
Chris Lattner authored
llvm-svn: 45645
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45419
-