- May 30, 2012
-
-
rdar://problem/11498613Bob Wilson authored
Besides adding the new insertPass function, this patch uses it to enhance the existing -print-machineinstrs so that the MachineInstrs after a specific pass can be printed. Patch by Bin Zeng! llvm-svn: 157655
-
Jakob Stoklund Olesen authored
Apparently, a friend can't derive from a private class according to gcc. llvm-svn: 157654
-
Jakob Stoklund Olesen authored
The register unit lists are typically much shorter than the register overlap lists, and the backing table for register units has better cache locality because it is smaller. This makes llc about 0.5% faster. The regsOverlap() function isn't that hot. llvm-svn: 157651
-
Jakob Stoklund Olesen authored
Register units are already used internally in TableGen to compute register pressure sets and overlapping registers. This patch makes them available to the code generators. The register unit lists are differentially encoded so they can be reused for many related registers. This keeps the total size of the lists below 200 bytes for most targets. ARM has the largest table at 560 bytes. Add an MCRegUnitIterator for traversing the register unit lists. It provides an abstract interface so the representation can be changed in the future without changing all clients. llvm-svn: 157650
-
Nuno Lopes authored
- hoist checks out of loops where SCEV is smart enough - add additional statistics to measure how much we loose for not supporting interprocedural and pointers loaded from memory llvm-svn: 157649
-
- May 29, 2012
-
-
Douglas Gregor authored
llvm-svn: 157644
-
Evan Cheng authored
llvm-svn: 157640
-
Benjamin Kramer authored
Add intrinsics, code gen, assembler and disassembler support for the SSE4a extrq and insertq instructions. This required light surgery on the assembler and disassembler because the instructions use an uncommon encoding. They are the only two instructions in x86 that use register operands and two immediates. llvm-svn: 157634
-
Lang Hames authored
ranges for the instruction about to be bundled. This fixes a bug in an external project where an assertion was triggered due to spurious 'multiple defs' within the bundle. Patch by Ivan Llopard. Thanks Ivan! llvm-svn: 157632
-
Nicolas Geoffray authored
llvm-svn: 157624
-
Stepan Dyatkovskiy authored
llvm-svn: 157612
-
- May 28, 2012
-
-
Peter Collingbourne authored
llvm-svn: 157594
-
Benjamin Kramer authored
llvm-svn: 157592
-
Benjamin Kramer authored
The test case feeds the following into InstCombine's visitSelect: %tobool8 = icmp ne i32 0, 0 %phitmp = select i1 %tobool8, i32 3, i32 0 Then instcombine replaces the right side of the switch with 0, doesn't notice that nothing changes and tries again indefinitely. This fixes PR12897. llvm-svn: 157587
-
David Blaikie authored
llvm-svn: 157586
-
Meador Inge authored
Attribute bits above 1<<30 are now encoded correctly. Additionally, the encoding/decoding functionality has been hoisted to helper functions in Attributes.h in an effort to help the encoding/decoding to stay in sync with the Attribute bitcode definitions. llvm-svn: 157581
-
Benjamin Kramer authored
llvm-svn: 157577
-
Stepan Dyatkovskiy authored
Implemented IntItem - the wrapper around APInt. Why not to use APInt item directly right now? 1. It will very difficult to implement case ranges as series of small patches. We got several large and heavy patches. Each patch will about 90-120 kb. If you replace ConstantInt with APInt in SwitchInst you will need to changes at the same time all Readers,Writers and absolutely all passes that uses SwitchInst. 2. We can implement APInt pool inside and save memory space. E.g. we use several switches that works with 256 bit items (switch on signatures, or strings). We can avoid value duplicates in this case. 3. IntItem can be easyly easily replaced with APInt. 4. Currenly we can interpret IntItem both as ConstantInt and as APInt. It allows to provide SwitchInst methods that works with ConstantInt for non-updated passes. Why I need it right now? Currently I need to update SimplifyCFG pass (EqualityComparisons). I need to work with APInts directly a lot, so peaces of code ConstantInt *V = ...; if (V->getValue().ugt(AnotherV->getValue()) { ... } will look awful. Much more better this way: IntItem V = ConstantIntVal->getValue(); if (AnotherV < V) { } Of course any reviews are welcome. P.S.: I'm also going to rename ConstantRangesSet to IntegersSubset, and CRSBuilder to IntegersSubsetMapping (allows to map individual subsets of integers to the BasicBlocks). Since in future these classes will founded on APInt, it will possible to use them in more generic ways. llvm-svn: 157576
-
Stepan Dyatkovskiy authored
llvm-svn: 157575
-
Bill Wendling authored
replicating the code for every place it's needed, we instead generate a function that does that for us. This function is local to the executable, so there shouldn't be any writing violations. llvm-svn: 157564
-
Chris Lattner authored
llvm-svn: 157556
-
Chris Lattner authored
llvm-svn: 157555
-
Chris Lattner authored
llvm-svn: 157554
-
-
Benjamin Kramer authored
llvm-svn: 157550
-
Benjamin Kramer authored
llvm-svn: 157548
-
- May 27, 2012
-
-
Benjamin Kramer authored
llvm-svn: 157546
-
Chris Lattner authored
making it stronger and more sane. Delete the code from tblgen that produced the old code. Besides being a path forward in intrinsic sanity, this also eliminates a bunch of machine generated code that was compiled into Function.o llvm-svn: 157545
-
Chris Lattner authored
the old verifier just checked that something "was a pointer", but not that the pointee was correct. llvm-svn: 157544
-
Chris Lattner authored
remove two (useless) tests that use incorrect intrinsic prototypes, detected by the new intrinsic verifier. llvm-svn: 157543
-
Chris Lattner authored
llvm-svn: 157542
-
Peter Collingbourne authored
definition in the map before calling itself to retrieve the DIE for the declaration. Without this change, if this causes getOrCreateSubprogramDIE to be recursively called on the definition, it will create multiple DIEs for that definition. Fixes PR12831. llvm-svn: 157541
-
Chris Lattner authored
llvm-svn: 157540
-
Benjamin Kramer authored
The only missing part is insert(), which uses a pair of parameters and I haven't figured out how to convert it to rvalue references. It's now possible to use a DenseMap with std::unique_ptr values :) llvm-svn: 157539
-
Benjamin Kramer authored
llvm-svn: 157538
-
Chris Lattner authored
it is (at the cost of 45 bytes of extra table space) so that the verifier can start using it. llvm-svn: 157536
-
Benjamin Kramer authored
These tend to be copied around a lot, moving it instead saves a ton of memory accesses. llvm-svn: 157535
-
NAKAMURA Takumi authored
Path::GetTemporaryDirectory(): Add an assertion if TempDirectory is alive, to check when someone would remove the tempdir. llvm-svn: 157529
-
Benjamin Kramer authored
llvm-svn: 157527
-
Benjamin Kramer authored
This is obviosly right but I don't see how to do this with proper vector iterators without building a horrible mess of workarounds. llvm-svn: 157526
-