- Jan 05, 2012
-
-
Benjamin Kramer authored
llvm-svn: 147618
-
Rafael Espindola authored
llvm-svn: 147615
-
Chandler Carruth authored
llvm-svn: 147605
-
Chandler Carruth authored
a combined-away node and the result of the combine isn't substantially smaller than the input, it's just canonicalized. This is the first part of a significant (7%) performance gain for Snappy's hot decompression loop. llvm-svn: 147604
-
Andrew Trick authored
Minor postra scheduler cleanup. It could result in more precise antidependence latency on ARM in exceedingly rare cases. llvm-svn: 147594
-
Jakob Stoklund Olesen authored
The register allocators don't currently support adding reserved registers while they are running. Extend the MRI API to keep track of the set of reserved registers when register allocation started. Target hooks like hasFP() and needsStackRealignment() can look at this set to avoid reserving more registers during register allocation. llvm-svn: 147577
-
- Jan 04, 2012
-
-
Craig Topper authored
Allow vector shuffle normalizing to use concat vector even if the sources are commuted in the shuffle mask. llvm-svn: 147527
-
Craig Topper authored
llvm-svn: 147525
-
Chris Lattner authored
Before we'd get: $ clang t.c fatal error: error in backend: Invalid operand for inline asm constraint 'i'! Now we get: $ clang t.c t.c:16:5: error: invalid operand for inline asm constraint 'i'! "movq (%4), %%mm0\n" ^ Which at least gets us the inline asm that is the problem. llvm-svn: 147502
-
- Jan 03, 2012
-
-
Jakob Stoklund Olesen authored
This can only happen if the set of reserved registers changes during register allocation. <rdar://problem/10625436> llvm-svn: 147486
-
Nadav Rotem authored
llvm-svn: 147484
-
Owen Anderson authored
Remove the restriction that target intrinsics can only involve legal types. Targets can perfects well support intrinsics on illegal types, as long as they are prepared to perform custom expansion during type legalization. For example, a target where i64 is illegal might still support the i64 intrinsic operation using pairs of i32's. ARM already does some expansions like this for non-intrinsic operations. llvm-svn: 147472
-
Lang Hames authored
llvm-svn: 147471
-
Nick Lewycky authored
llvm-svn: 147454
-
Elena Demikhovsky authored
The failure seen on win32, when i64 type is illegal. It happens on stage of conversion VECTOR_SHUFFLE to BUILD_VECTOR. The failure message is: llc: SelectionDAG.cpp:784: void VerifyNodeCommon(llvm::SDNode*): Assertion `(I->getValueType() == EltVT || (EltVT.isInteger() && I->getValueType().isInteger() && EltVT.bitsLE(I->getValueType()))) && "Wrong operand type!"' failed. I added a special test that checks vector shuffle on win32. llvm-svn: 147445
-
- Jan 01, 2012
-
-
Rafael Espindola authored
llvm-svn: 147400
-
Elena Demikhovsky authored
The failure seen on win32, when i64 type is illegal. It happens on stage of conversion VECTOR_SHUFFLE to BUILD_VECTOR. The failure message is: llc: SelectionDAG.cpp:784: void VerifyNodeCommon(llvm::SDNode*): Assertion `(I->getValueType() == EltVT || (EltVT.isInteger() && I->getValueType().isInteger() && EltVT.bitsLE(I->getValueType()))) && "Wrong operand type!"' failed. I added a special test that checks vector shuffle on win32. llvm-svn: 147399
-
- Dec 28, 2011
-
-
Nadav Rotem authored
Promotion of the mask operand needs to be done using PromoteTargetBoolean, and not padded with garbage. llvm-svn: 147309
-
- Dec 26, 2011
-
-
Eli Friedman authored
Make sure DAGCombiner doesn't introduce multiple loads from the same memory location. PR10747, part 2. llvm-svn: 147283
-
- Dec 25, 2011
-
-
Nadav Rotem authored
llvm-svn: 147272
-
- Dec 23, 2011
-
-
Dylan Noblesmith authored
llvm-svn: 147197
-
- Dec 22, 2011
-
-
Pete Cooper authored
llvm-svn: 147127
-
Pete Cooper authored
Fixes <rdar://problem/10584116> llvm-svn: 147125
-
Jakub Staszak authored
don't get any serious benefit there. llvm-svn: 147101
-
- Dec 21, 2011
-
-
Jakub Staszak authored
- Add some constantness. llvm-svn: 147090
-
Lang Hames authored
Oops - LiveIntervalUnion.cpp file does use std::find. Moving STL header include to LiveIntervalUnion.cpp file. llvm-svn: 147089
-
Lang Hames authored
llvm-svn: 147088
-
Jakob Stoklund Olesen authored
llvm-svn: 147071
-
- Dec 20, 2011
-
-
Lang Hames authored
llvm-svn: 146987
-
Jakub Staszak authored
llvm-svn: 146986
-
Chandler Carruth authored
likely to stay either way that discussion ends up resolving itself. llvm-svn: 146966
-
-
Dan Gohman authored
llvm-svn: 146927
-
- Dec 19, 2011
-
-
Evan Cheng authored
unpredicated. That is, turn subeq r0, r1, #1 addne r0, r1, #1 into sub r0, r1, #1 addne r0, r1, #1 For targets where conditional instructions are always executed, this may be beneficial. It may remove pseudo anti-dependency in out-of-order execution CPUs. e.g. op r1, ... str r1, [r10] ; end-of-life of r1 as div result cmp r0, #65 movne r1, #44 ; raw dependency on previous r1 moveq r1, #12 If movne is unpredicated, then op r1, ... str r1, [r10] cmp r0, #65 mov r1, #44 ; r1 written unconditionally moveq r1, #12 Both mov and moveq are no longer depdendent on the first instruction. This gives the out-of-order execution engine more freedom to reorder them. This has passed entire LLVM test suite. But it has not been enabled for any ARM variant pending more performance evaluation. rdar://8951196 llvm-svn: 146914
-
Eli Friedman authored
llvm-svn: 146897
-
Jakob Stoklund Olesen authored
Now that getMatchingSuperRegClass() returns accurate results, it can be used to compute constraints imposed by instructions using a sub-register of a virtual register. This means we can recompute the register class of any virtual register by combining the constraints from all its uses. llvm-svn: 146874
-
- Dec 18, 2011
-
-
Joerg Sonnenberger authored
attribute themselve. llvm-svn: 146851
-
- Dec 17, 2011
-
-
Rafael Espindola authored
asm parsing and testcase. llvm-svn: 146801
-
Eric Christopher authored
llvm-svn: 146784
-
Eric Christopher authored
llvm-svn: 146783
-