- Feb 25, 2012
-
-
Akira Hatanaka authored
add/sub instructions. llvm-svn: 151415
-
- Feb 24, 2012
-
-
Akira Hatanaka authored
reserving a physical register ($gp or $28) for that purpose. This will completely eliminate loads that restore the value of $gp after every function call, if the register allocator assigns a callee-saved register, or eliminate unnecessary loads if it assigns a temporary register. example: .cpload $25 // set $gp. ... .cprestore 16 // store $gp to stack slot 16($sp). ... jalr $25 // function call. clobbers $gp. lw $gp, 16($sp) // not emitted if callee-saved reg is chosen. ... lw $2, 4($gp) ... jalr $25 // function call. lw $gp, 16($sp) // not emitted if $gp is not live after this instruction. ... llvm-svn: 151402
-
Benjamin Kramer authored
llvm-svn: 151398
-
Jim Grosbach authored
llvm-svn: 151384
-
Michael J. Spencer authored
used by the Win32 _ftol2 runtime function. Patch by Joe Groff! llvm-svn: 151382
-
Hal Finkel authored
llvm-svn: 151374
-
Richard Osborne authored
Patch by Ahmed Charles llvm-svn: 151360
-
Pete Cooper authored
Turn avx insert intrinsic calls into INSERT_SUBVECTOR DAG nodes and remove duplicate patterns for selecting the intrinsics llvm-svn: 151342
-
Jia Liu authored
llvm-svn: 151341
-
Jia Liu authored
llvm-svn: 151340
-
Jia Liu authored
llvm-svn: 151339
-
Jia Liu authored
llvm-svn: 151337
-
Jia Liu authored
llvm-svn: 151332
-
Jakob Stoklund Olesen authored
I'll let the buildbots determine the compile time improvements from this change, but 464.h264ref has 5% faster codegen at -O2. This patch does cause some assembly changes. Branch folding can make different decisions about calls with dead return values. CriticalAntiDepBreaker may choose different registers because its liveness tracking is affected. MachineCopyPropagation may sometimes leave a dead copy behind. llvm-svn: 151331
-
Jim Grosbach authored
llvm-svn: 151318
-
Jim Grosbach authored
The tied source operand of tMUL is the second source operand, not the first like every other two-address thumb instruction. Special case it in the size reduction pass to make sure we create the tMUL instruction properly. llvm-svn: 151315
-
Dan Gohman authored
bits of the value carying the boolean condition, as their contents are undefined. This fixes rdar://10887484. llvm-svn: 151310
-
- Feb 23, 2012
-
-
Roman Divacky authored
llvm-svn: 151278
-
Kevin Enderby authored
rdar://10873652 As part of this I updated the llvm-mc disassembler C API to always call the SymbolLookUp call back even if there is no getOpInfo call back. If there is a getOpInfo call back that is tried first and then if that gets no information then the SymbolLookUp is called. I also made the code more robust by memset(3)'ing to zero the LLVMOpInfo1 struct before then setting SymbolicOp.Value before for the call to getOpInfo. And also don't use any values from the LLVMOpInfo1 struct if getOpInfo returns 0. And also don't use any of the ReferenceType or ReferenceName values from SymbolLookUp if it returns NULL. rdar://10873563 and rdar://10873683 For the X86 target also fixed bugs so the annotations get printed. Also fixed a few places in the ARM target that was not producing symbolic operands for some instructions. rdar://10878166 llvm-svn: 151267
-
Brendon Cahoon authored
Also, some basic clean up. Patch by Evandro Menezes. llvm-svn: 151266
-
Duncan Sands authored
llvm-svn: 151251
-
Evan Cheng authored
of x are zero. This optimizes rev + lsr 16 to rev16. rdar://10750814 llvm-svn: 151230
-
Evan Cheng authored
value is zero. Instead of a cmov + op, issue an conditional op instead. e.g. cmp r9, r4 mov r4, #0 moveq r4, #1 orr lr, lr, r4 should be: cmp r9, r4 orreq lr, lr, #1 That is, optimize (or x, (cmov 0, y, cond)) to (or.cond x, y). Similarly extend this to xor as well as (and x, (cmov -1, y, cond)) => (and.cond x, y). It's possible to extend this to ADD and SUB but I don't think they are common. rdar://8659097 llvm-svn: 151224
-
- Feb 22, 2012
-
-
Hal Finkel authored
The standard function epilog includes a .size directive, but ppc64 uses an alternate local symbol to tag the actual start of each function. Until recently, binutils accepted the .size directive as: .size test1, .Ltmp0-test1 however, using this directive with recent binutils will result in the error: .size expression for XXX does not evaluate to a constant so we must use the label which actually tags the start of the function. llvm-svn: 151200
-
Michael J. Spencer authored
Patch by Joe Groff! llvm-svn: 151183
-
Chad Rosier authored
llvm-svn: 151169
-
Sirish Pande authored
llvm-svn: 151166
-
Craig Topper authored
Declare register classes as const. Fix a couple pointers to register classes that weren't already const. llvm-svn: 151138
-
Craig Topper authored
Make all pointers to TargetRegisterClass const since they are all pointers to static data that should not be modified. llvm-svn: 151134
-
Aaron Ballman authored
llvm-svn: 151123
-
Jakob Stoklund Olesen authored
llvm-svn: 151113
-
Akira Hatanaka authored
llvm-svn: 151107
-
Jakob Stoklund Olesen authored
Even if a call instruction has %SP<imp-def> operands, it doesn't change the value of the stack pointer. llvm-svn: 151104
-
- Feb 21, 2012
-
-
Evan Cheng authored
llvm-svn: 151083
-
Andrew Trick authored
Passes after RegAlloc should be able to rely on MRI->getNumVirtRegs() == 0. This makes sharing code for pre/postRA passes more robust. Now, to check if a pass is running before the RA pipeline begins, use MRI->isSSA(). To check if a pass is running after the RA pipeline ends, use !MRI->getNumVirtRegs(). PEI resets virtual regs when it's done scavenging. PTX will either have to provide its own PEI pass or assign physregs. llvm-svn: 151032
-
- Feb 20, 2012
-
-
James Molloy authored
Teach TargetSelectionDAG about lengthening loads for vector types and set v4i8 as legal. Allow FP_TO_UINT for v4i16 from v4i32. llvm-svn: 150956
-
- Feb 19, 2012
-
-
Ahmed Charles authored
llvm-svn: 150918
-
Craig Topper authored
Remove some unneeded includes and fix ordering in X86ISelLowering.cpp. Remove unneeded 'using namespace'. llvm-svn: 150916
-
Craig Topper authored
llvm-svn: 150913
-
Craig Topper authored
Make a bunch of X86ISelLowering shuffle functions static now that they are no longer needed by isel. llvm-svn: 150908
-