- Apr 10, 2009
-
-
Chris Lattner authored
It turns out that there are still several problems with this, will file a bugzilla. llvm-svn: 68749
-
Bill Wendling authored
llvm-svn: 68747
-
Dan Gohman authored
code that uses it by using SelectionDAG::getVTList instead. llvm-svn: 68744
-
Owen Anderson authored
llvm-svn: 68730
-
- Apr 09, 2009
-
-
Bob Wilson authored
register destinations that are tied to source operands. The TargetInstrDescr::findTiedToSrcOperand method silently fails for inline assembly. The existing MachineInstr::isRegReDefinedByTwoAddr was very close to doing what is needed, so this revision makes a few changes to that method and also renames it to isRegTiedToUseOperand (for consistency with the very similar isRegTiedToDefOperand and because it handles both two-address instructions and inline assembly with tied registers). llvm-svn: 68714
-
Sanjiv Gupta authored
The way we are trying to figure out banksel immediate operand may yield different results for different type of insns. This will eventually need to be changed but currently let us prevent the crash in cases of incorrect detection of banksel operand. llvm-svn: 68713
-
Sanjiv Gupta authored
Arguments to indirect calls were being passed incorrectly. They are not fixed to start after return value. llvm-svn: 68705
-
Chris Lattner authored
llvm-svn: 68690
-
Sanjiv Gupta authored
r68576 unconverd a bug in PIC16 port (Thanks to Dan Gohman) where we were custom lowering an ADD to ADDC. llvm-svn: 68671
-
Owen Anderson authored
Convert TargetRegisterInfo's super-register checking to use a pre-computed hash table just like subregister checking does. llvm-svn: 68669
-
Dan Gohman authored
llvm-svn: 68666
-
- Apr 08, 2009
-
-
Rafael Espindola authored
Tested by bootstrapping llvm-gcc and using that to build llvm. llvm-svn: 68645
-
Bob Wilson authored
ARMTargetLowering::isLegalAddressingMode. llvm-svn: 68619
-
Rafael Espindola authored
llvm-svn: 68603
-
Sanjiv Gupta authored
Emit .line debug directives for stoppoints. The debug location is retrieved by the MachineInstr itself, rather than by custom handling the DBG_STOPPOINT nodes. llvm-svn: 68602
-
Sanjiv Gupta authored
Every function has the address of its frame in the beginning of code section. The frame address is retrieved and used to pass arguments. llvm-svn: 68597
-
Dan Gohman authored
with SUBREG_TO_REG, teach SimpleRegisterCoalescing to coalesce SUBREG_TO_REG instructions (which are similar to INSERT_SUBREG instructions), and teach the DAGCombiner to take advantage of this on targets which support it. This eliminates many redundant zero-extension operations on x86-64. This adds a new TargetLowering hook, isZExtFree. It's similar to isTruncateFree, except it only applies to actual definitions, and not no-op truncates which may not zero the high bits. Also, this adds a new optimization to SimplifyDemandedBits: transform operations like x+y into (zext (add (trunc x), (trunc y))) on targets where all the casts are no-ops. In contexts where the high part of the add is explicitly masked off, this allows the mask operation to be eliminated. Fix the DAGCombiner to avoid undoing these transformations to eliminate casts on targets where the casts are no-ops. Also, this adds a new two-address lowering heuristic. Since two-address lowering runs before coalescing, it helps to be able to look through copies when deciding whether commuting and/or three-address conversion are profitable. Also, fix a bug in LiveInterval::MergeInClobberRanges. It didn't handle the case that a clobber range extended both before and beyond an existing live range. In that case, multiple live ranges need to be added. This was exposed by the new subreg coalescing code. Remove 2008-05-06-SpillerBug.ll. It was bugpoint-reduced, and the spiller behavior it was looking for no longer occurrs with the new instruction selection. llvm-svn: 68576
-
Bill Wendling authored
builds. --- Reverse-merging (from foreign repository) r68552 into '.': U test/CodeGen/X86/tls8.ll U test/CodeGen/X86/tls10.ll U test/CodeGen/X86/tls2.ll U test/CodeGen/X86/tls6.ll U lib/Target/X86/X86Instr64bit.td U lib/Target/X86/X86InstrSSE.td U lib/Target/X86/X86InstrInfo.td U lib/Target/X86/X86RegisterInfo.cpp U lib/Target/X86/X86ISelLowering.cpp U lib/Target/X86/X86CodeEmitter.cpp U lib/Target/X86/X86FastISel.cpp U lib/Target/X86/X86InstrInfo.h U lib/Target/X86/X86ISelDAGToDAG.cpp U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp U lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.h U lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.h U lib/Target/X86/X86ISelLowering.h U lib/Target/X86/X86InstrInfo.cpp U lib/Target/X86/X86InstrBuilder.h U lib/Target/X86/X86RegisterInfo.td llvm-svn: 68560
-
- Apr 07, 2009
-
-
Rafael Espindola authored
This introduces a small regression on the generated code quality in the case we are just computing addresses, not loading values. Will work on it and on X86-64 support. llvm-svn: 68552
-
rdar://problem/6584986Jim Grosbach authored
When compiling in Thumb mode, only the low (R0-R7) registers are available for most instructions. Breaking the low registers into a new register class handles this. Uses of R12, SP, etc, are handled explicitly where needed with copies inserted to move results into low registers where the rest of the code generator can deal with them. llvm-svn: 68545
-
- Apr 06, 2009
-
-
Bob Wilson authored
Patch by Richard Pennington. llvm-svn: 68464
-
Sanjiv Gupta authored
Map stack based frameindices for spills to zero based indices that can be accessed based on an external symbol defining the location of temporary data for a function. For example: we have spill slots addressed as foo.tmp + 0, foo.tmp + 1 etc. llvm-svn: 68442
-
- Apr 03, 2009
-
-
Bob Wilson authored
llvm-svn: 68405
-
Bob Wilson authored
llvm-svn: 68404
-
Oscar Fuentes authored
llvm-svn: 68384
-
Anton Korobeynikov authored
llvm-svn: 68383
-
Anton Korobeynikov authored
llvm-svn: 68382
-
Anton Korobeynikov authored
llvm-svn: 68381
-
Anton Korobeynikov authored
llvm-svn: 68380
-
Mon P Wang authored
movq for v2i64 on x86-32. llvm-svn: 68368
-
- Apr 02, 2009
-
-
Sanjiv Gupta authored
llvm-svn: 68333
-
Sanjiv Gupta authored
To convert the StopPoint insn into an assembler directive by ISel, we need to have access to the line number field. So we convert that info as an operand by custom handling DBG_STOPPOINT in legalize. llvm-svn: 68329
-
Sanjiv Gupta authored
Params are not being generated as static globals now. The caller passes them onto the callee's stack directly and the callee loads the argvals from its own stack. Clang generated frameindexes validatd by recalculating the stack as if all frameindexes represent 1-byte slots. llvm-svn: 68327
-
Chris Lattner authored
llvm-svn: 68253
-
- Apr 01, 2009
-
-
Dan Gohman authored
is appropriate. This helps visually differentiate host-oriented calculations from target-oriented calculations. llvm-svn: 68227
-
Dan Gohman authored
less ambiguous and less C-specific. llvm-svn: 68219
-
Bob Wilson authored
assembly. llvm-svn: 68218
-
- Mar 31, 2009
-
-
Evan Cheng authored
llvm-svn: 68133
-
Dan Gohman authored
entered via fall-through. Don't miss fallthroughs from blocks terminated by conditional branches. Also, move isOnlyReachableByFallthrough out of line. llvm-svn: 68129
-
Rafael Espindola authored
llvm-svn: 68109
-