- May 29, 2012
-
-
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
-
Benjamin Kramer authored
vector.begin()-1 is invalid too. llvm-svn: 157525
-
Chris Lattner authored
llvm-svn: 157523
-
- May 26, 2012
-
-
Benjamin Kramer authored
Found by libstdc++'s debug mode. llvm-svn: 157522
-
Benjamin Kramer authored
SelectionDAGBuilder: When emitting small compare chains for switches order them by using edge weights. SimplifyCFG tends to form a lot of 2-3 case switches when merging branches. Move the most likely condition to the front so it is checked first and the others can be skipped. This is currently not as effective as it could be because SimplifyCFG destroys profiling metadata when merging branches and switches. Merging branch weight metadata is tricky though. This code touches at most 3 cases so I didn't use a proper sorting algorithm. llvm-svn: 157521
-
Duncan Sands authored
then it doesn't alter the instructions composing it, however it would continue to move the instructions to just before the expression root. Ensure it doesn't move them either, so now it really does nothing if there is nothing to do. That commit also ensured that nsw etc flags weren't cleared if the expression was not being changed. Tweak this a bit so that it doesn't clear flags on the initial part of a computation either if that part didn't change but later bits did. llvm-svn: 157518
-
Benjamin Kramer authored
llvm-svn: 157516
-
Benjamin Kramer authored
llvm-svn: 157515
-