- Apr 02, 2012
-
-
Nadav Rotem authored
Do not try to optimize swizzles of shuffles if the source shuffle has more than a single user, except when the source shuffle is also a swizzle. llvm-svn: 153864
-
Craig Topper authored
Make MCInstrInfo available to the MCInstPrinter. This will be used to remove getInstructionName and the static data it contains since the same tables are already in MCInstrInfo. llvm-svn: 153860
-
- Apr 01, 2012
-
-
Nadav Rotem authored
1. Simplify xor/and/or (bitcast(A), bitcast(B)) -> bitcast(op (A,B)) (and also scalar_to_vector). 2. Xor/and/or are indifferent to the swizzle operation (shuffle of one src). Simplify xor/and/or (shuff(A), shuff(B)) -> shuff(op (A, B)) 3. Optimize swizzles of shuffles: shuff(shuff(x, y), undef) -> shuff(x, y). 4. Fix an X86ISelLowering optimization which was very bitcast-sensitive. Code which was previously compiled to this: movd (%rsi), %xmm0 movdqa .LCPI0_0(%rip), %xmm2 pshufb %xmm2, %xmm0 movd (%rdi), %xmm1 pshufb %xmm2, %xmm1 pxor %xmm0, %xmm1 pshufb .LCPI0_1(%rip), %xmm1 movd %xmm1, (%rdi) ret Now compiles to this: movl (%rsi), %eax xorl %eax, (%rdi) ret llvm-svn: 153848
-
Lang Hames authored
llvm-svn: 153846
-
Andrew Trick authored
llvm-svn: 153827
-
- Mar 31, 2012
-
-
Rafael Espindola authored
This is the CodeGen equivalent of r153747. I tested that there is not noticeable performance difference with any combination of -O0/-O2 /-g when compiling gcc as a single compilation unit. llvm-svn: 153817
-
- Mar 30, 2012
-
-
Bill Wendling authored
here but it has no other uses, then we have a problem. E.g., int foo (const int *x) { char a[*x]; return 0; } If we assign 'a' a vreg and fast isel later on has to use the selection DAG isel, it will want to copy the value to the vreg. However, there are no uses, which goes counter to what selection DAG isel expects. <rdar://problem/11134152> llvm-svn: 153705
-
- Mar 29, 2012
-
-
Eric Christopher authored
http://llvm.org/docs/SourceLevelDebugging.html#objcproperty including type and DECL. Expand the metadata needed accordingly. rdar://11144023 llvm-svn: 153639
-
Jakob Stoklund Olesen authored
Some targets still mess up the liveness information, but that isn't verified after MRI->invalidateLiveness(). The verifier can still check other useful things like register classes and CFG, so it should be enabled after all passes. llvm-svn: 153615
-
Jakob Stoklund Olesen authored
The late scheduler depends on accurate liveness information if it is breaking anti-dependencies, so we should be able to verify it. Relax the terminator checking in the machine code verifier so it can handle the basic blocks created by if conversion. llvm-svn: 153614
-
- Mar 28, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 153599
-
Jakob Stoklund Olesen authored
Branch folding invalidates liveness and disables liveness verification on some targets. llvm-svn: 153597
-
Jakob Stoklund Olesen authored
Extract the liveness verification into its own method. This makes it possible to run the machine code verifier after liveness information is no longer required to be valid. llvm-svn: 153596
-
Jakob Stoklund Olesen authored
This avoids the silly double search: if (isLiveIn(Reg)) removeLiveIn(Reg); llvm-svn: 153592
-
Pete Cooper authored
llvm-svn: 153579
-
Eric Christopher authored
llvm-svn: 153571
-
Eric Christopher authored
and not the rest of the member tag. Fixes PR11695 llvm-svn: 153570
-
- Mar 27, 2012
-
-
Lang Hames authored
will always be tiny sets, so DenseSet is overkill (SmallSet won't work as we need iteration support). llvm-svn: 153529
-
Eric Christopher authored
Fixes PR10105 llvm-svn: 153524
-
Jakob Stoklund Olesen authored
llvm-svn: 153518
-
Jakob Stoklund Olesen authored
Branch folding can use a register scavenger to update liveness information when required. Don't do that if liveness information is already invalid. llvm-svn: 153517
-
Chris Lattner authored
llvm-svn: 153513
-
Jakob Stoklund Olesen authored
Late optimization passes like branch folding and tail duplication can transform the machine code in a way that makes it expensive to keep the register liveness information up to date. There is a fuzzy line between register allocation and late scheduling where the liveness information degrades. The MRI::tracksLiveness() flag makes the line clear: While true, liveness information is accurate, and can be used for register scavenging. Once the flag is false, liveness information is not accurate, and can only be used as a hint. Late passes generally don't need the liveness information, but they will sometimes use the register scavenger to help update it. The scavenger enforces strict correctness, and we have to spend a lot of code to update register liveness that may never be used. llvm-svn: 153511
-
Evan Cheng authored
register that's read by the preheader terminator. rdar://11095580 llvm-svn: 153492
-
Lang Hames authored
copies being considered for removal. Make sure to track all of the copies, rather than just the most recent encountered, by holding a DenseSet instead of an unsigned in SrcMap. No test case - couldn't reduce something with a sane size. llvm-svn: 153487
-
Lang Hames authored
llvm-svn: 153483
-
- Mar 26, 2012
-
-
Eric Christopher authored
backtrace locations. Testcase forthcoming, but I wanted to get some testing here. Should fix: PR12323 PR12314 rdar://11091100 llvm-svn: 153471
-
Benjamin Kramer authored
llvm-svn: 153438
-
Craig Topper authored
llvm-svn: 153429
-
Eric Christopher authored
llvm-svn: 153428
-
- Mar 24, 2012
-
-
Hal Finkel authored
llvm-svn: 153372
-
Jim Grosbach authored
Dump the hex representation to the comment stream as well as the float value. llvm-svn: 153346
-
- Mar 23, 2012
-
-
Lang Hames authored
llvm-svn: 153341
-
- Mar 22, 2012
-
-
-
-
Eric Christopher authored
metadata operand as an actual operand, leading to an assert. Error out in this case. rdar://11007633 llvm-svn: 153234
-
Chad Rosier authored
execution-time regression for nsieve-bits on the ARMv7 -O0 -g nightly tester. This may also improve compile-time on architectures that would otherwise generate a libcall for urem (e.g., ARM) or fall back to the DAG selector. rdar://10810716 llvm-svn: 153230
-
- Mar 21, 2012
-
-
Jim Grosbach authored
Type legalization can zero-extend the elements of the build_vector node, so, for example, we may have an <8 x i8> with i32 elements of value 255. That should return 'true' for the vector being all ones. llvm-svn: 153203
-
Andrew Trick authored
llvm-svn: 153162
-
Andrew Trick authored
llvm-svn: 153161
-