- Feb 20, 2008
-
-
Bill Wendling authored
changes. (Sorry for any formatting changes that creeped in.) llvm-svn: 47362
-
Chris Lattner authored
AddNodeIDNode does profiling for a ConstantSDNode, but so does SelectionDAG::getConstant. This profiling should be moved to a common static function in ConstantSDNode. llvm-svn: 47359
-
Bill Wendling authored
- Constified some MachineOperand values. - Added/Modified some comments. llvm-svn: 47358
-
- Feb 19, 2008
-
-
Devang Patel authored
llvm-svn: 47348
-
Evan Cheng authored
PR1909: Tail merging pass ran wild. It makes no sense to merge blocks in order to save a single instruction since a branch will be inserted for each BB. llvm-svn: 47301
-
Evan Cheng authored
- When DAG combiner is folding a bit convert into a BUILD_VECTOR, it should check if it's essentially a SCALAR_TO_VECTOR. Avoid turning (v8i16) <10, u, u, u> to <10, 0, u, u, u, u, u, u>. Instead, simply convert it to a SCALAR_TO_VECTOR of the proper type. - X86 now normalize SCALAR_TO_VECTOR to (BIT_CONVERT (v4i32 SCALAR_TO_VECTOR)). Get rid of X86ISD::S2VEC. llvm-svn: 47290
-
- Feb 18, 2008
-
-
Evan Cheng authored
- For now, conservatively ignore copy MI whose source is a physical register. Commuting its def MI can cause a physical register live interval to be live through a loop (since we know it's live coming into the def MI). llvm-svn: 47281
-
Roman Levenstein authored
New helper function getMBBFromIndex() that given an index in any instruction of an MBB returns a pointer the MBB. Reviewed by Evan. llvm-svn: 47267
-
Evan Cheng authored
For now, avoid commuting def MI for copy MI's whose source is not killed. That simply trade a live interval for another and because only the non-two-address operands can be folded into loads, may end up pessimising code. llvm-svn: 47262
-
- Feb 16, 2008
-
-
Andrew Lenharth authored
I cannot find a libgcc function for this builtin. Therefor expanding it to a noop (which is how it use to be treated). If someone who knows the x86 backend better than me could tell me how to get a lock prefix on an instruction, that would be nice to complete x86 support. llvm-svn: 47213
-
Duncan Sands authored
br_cc. This fixes 5 "make check" failures. llvm-svn: 47212
-
Evan Cheng authored
llvm-svn: 47208
-
Andrew Lenharth authored
llvm-svn: 47204
-
Bill Wendling authored
llvm-svn: 47200
-
Dan Gohman authored
it actually does. Simplify CountOperands a little by reusing ComputeMemOperandsEnd. And reword some comments for both. llvm-svn: 47198
-
Dan Gohman authored
llvm-svn: 47196
-
Scott Michel authored
tblgen will complain if a sign-extended constant does not fit into a data type smaller than i32, e.g., i16. This causes a problem when certain hex constants are used, such as 0xff for byte masks or immediate xor values. tblgen will try the sign-extended value first and, if the sign extended value would overflow, it tries to see if the unsigned value will fit. Consequently, a software developer can now safely incant: (XORHIr16 R16C:$rA, 0xffff) which is somewhat clearer and more informative than incanting: (XORHIr16 R16C:$rA, (i16 -1)) even if the two are bitwise equivalent. Tblgen also outputs the 64-bit unsigned constant in the generated ISel code when getTargetConstant() is invoked. llvm-svn: 47188
-
- Feb 15, 2008
-
-
Evan Cheng authored
llvm-svn: 47179
-
Dan Gohman authored
with the TIED_TO attribute. llvm-svn: 47177
-
Dan Gohman authored
that should be checked for the TIED_TO attribute instead of using CountOperands. llvm-svn: 47176
-
Duncan Sands authored
in a ret node. These are created as i32 constants but on some platforms i32 is not legal. This fixes 26 "make check" failures, for example Alpha/2005-07-12-TwoMallocCalls.ll. llvm-svn: 47172
-
Evan Cheng authored
register defs and uses after each successful coalescing. - Also removed a number of hacks and fixed some subtle kill information bugs. llvm-svn: 47167
-
Evan Cheng authored
machine instr will change its definition register. llvm-svn: 47166
-
Evan Cheng authored
llvm-svn: 47164
-
Dan Gohman authored
with a hard-coded operand number. llvm-svn: 47163
-
- Feb 14, 2008
-
-
Chris Lattner authored
llvm-svn: 47128
-
Duncan Sands authored
the return value is zero-extended if it isn't sign-extended. It may also be any-extended. Also, if a floating point value was returned in a larger floating point type, pass 1 as the second operand to FP_ROUND, which tells it that all the precision is in the original type. I think this is right but I could be wrong. Finally, when doing libcalls, set isZExt on a parameter if it is "unsigned". Currently isSExt is set when signed, and nothing is set otherwise. This should be right for all calls to standard library routines. llvm-svn: 47122
-
Nate Begeman authored
1) ConstantFP is now expand by default 2) ConstantFP is not turned into TargetConstantFP during Legalize if it is legal. This allows ConstantFP to be handled like Constant, allowing for targets that can encode FP immediates as MachineOperands. As a bonus, fix up Itanium FP constants, which now correctly match, and match more constants! Hooray. llvm-svn: 47121
-
Nate Begeman authored
FP Immediates, crazily enough llvm-svn: 47117
-
Dan Gohman authored
llvm-svn: 47101
-
- Feb 13, 2008
-
-
Dan Gohman authored
llvm-svn: 47098
-
Dan Gohman authored
to pass the mask APInt by value, not by reference. llvm-svn: 47096
-
Nicolas Geoffray authored
llvm-svn: 47079
-
Duncan Sands authored
CTTZ and CTPOP. The expansion code differs from that in LegalizeDAG in that it chooses to take the CTLZ/CTTZ count from the Hi/Lo part depending on whether the Hi/Lo value is zero, not on whether CTLZ/CTTZ of Hi/Lo returned 32 (or whatever the width of the type is) for it. I made this change because the optimizers may well know that Hi/Lo is zero and exploit it. The promotion code for CTTZ also differs from that in LegalizeDAG: it uses an "or" to get the right result when the original value is zero, rather than using a compare and select. This also means the value doesn't need to be zero extended. llvm-svn: 47075
-
Evan Cheng authored
llvm-svn: 47060
-
Evan Cheng authored
llvm-svn: 47058
-
Evan Cheng authored
Fix a potential serious problem where kills belonging to the val# defined by a two-address instruction is also on the val# that defines the input. llvm-svn: 47057
-
Evan Cheng authored
* Ignore copy instructions which have already been coalesced. llvm-svn: 47056
-
Chris Lattner authored
node as soon as we create it in SDISel. Previously we would lower it in legalize. The problem with this is that it only exposes the argument loads implied by FORMAL_ARGUMENTs after legalize, so that only dag combine 2 can hack on them. This causes us to miss some optimizations because datatype expansion also happens here. Exposing the loads early allows us to do optimizations on them. For example we now compile arg-cast.ll to: _foo: movl $2147483647, %eax andl 8(%esp), %eax ret where we previously produced: _foo: subl $12, %esp movsd 16(%esp), %xmm0 movsd %xmm0, (%esp) movl $2147483647, %eax andl 4(%esp), %eax addl $12, %esp ret It might also make sense to do this for ISD::CALL nodes, which have implicit stores on many targets. llvm-svn: 47054
-
Chris Lattner authored
llvm-svn: 47052
-