- Jan 12, 2014
-
-
Venkatraman Govindaraju authored
llvm-svn: 199033
-
Saleem Abdulrasool authored
The implicit immediate 0 forms are assembly aliases, not distinct instruction encodings. Fix the initial implementation introduced in r198914 to an alias to avoid two separate instruction definitions for the same encoding. An InstAlias is insufficient in this case as the necessary due to the need to add a new additional operand for the implicit zero. By using the AsmPsuedoInst, fall back to the C++ code to transform the instruction to the equivalent _POST_IMM form, inserting the additional implicit immediate 0. llvm-svn: 199032
-
Venkatraman Govindaraju authored
llvm-svn: 199031
-
Jakob Stoklund Olesen authored
This is different from the argument passing convention which puts the first float argument in %f1. With this patch, all returned floats are treated as if the 'inreg' flag were set. This means multiple float return values get packed in %f0, %f1, %f2, ... Note that when returning a struct in registers, clang will set the 'inreg' flag on the return value, so that behavior is unchanged. This also happens when returning a float _Complex. llvm-svn: 199028
-
Joerg Sonnenberger authored
llvm-svn: 199027
-
Joerg Sonnenberger authored
assemble the various mul instructions. llvm-svn: 199026
-
Hans Wennborg authored
case when the lookup table doesn't have any holes. This means we can build a lookup table for switches like this: switch (x) { case 0: return 1; case 1: return 2; case 2: return 3; case 3: return 4; default: exit(1); } The default case doesn't yield a constant result here, but that doesn't matter, since a default result is only necessary for filling holes in the lookup table, and this table doesn't have any holes. This makes us transform 505 more switches in a clang bootstrap, and shaves 164 KB off the resulting clang binary. llvm-svn: 199025
-
Venkatraman Govindaraju authored
llvm-svn: 199024
-
Saleem Abdulrasool authored
A 32-bit immediate value can be formed from a constant expression and loaded into a register. Add support to emit this into an object file. Because this value is a constant, a relocation must *not* be produced for it. llvm-svn: 199023
-
- Jan 11, 2014
-
-
Rui Ueyama authored
llvm-svn: 199022
-
Rui Ueyama authored
llvm-svn: 199021
-
Rui Ueyama authored
llvm-svn: 199020
-
Rui Ueyama authored
llvm-svn: 199019
-
Rui Ueyama authored
llvm-svn: 199018
-
Benjamin Kramer authored
llvm-svn: 199017
-
Benjamin Kramer authored
llvm-svn: 199016
-
Arnold Schwaighofer authored
I saw no compile or execution time regressions on x86_64 -mavx -O3. radar://13075509 llvm-svn: 199015
-
Venkatraman Govindaraju authored
[Sparc] Bundle instruction with delay slow and its filler. Now, we can use -verify-machineinstrs with SPARC backend. llvm-svn: 199014
-
Benjamin Kramer authored
llvm-svn: 199013
-
Jakob Stoklund Olesen authored
llvm-svn: 199012
-
Alp Toker authored
This commit prospectively brings the benefits of r198766 to older supported Python versions (2.5+). Tested with Python 2.6, 2.7, 3.1 and 3.3 (!) llvm-svn: 199009
-
Alp Toker authored
Patch by Jasper Neumann! llvm-svn: 199007
-
Alp Toker authored
On the other hand, exec(compile()) doesn't work in older Python versions in the 2.x series. This commit introduces exec(compile()) with a fallback to plain exec(). That'll hopefully hit the sweet spot in terms of version support. Followup to r198766 which added enhanced source locations for lit cfg parsing. llvm-svn: 199006
-
Chandler Carruth authored
pipeline string. Add tests that cover this now that we have execution dumping in the pass managers. llvm-svn: 199005
-
Chandler Carruth authored
mode that can be used to debug the execution of everything. No support for analyses here, that will come later. This already helps show parts of the opt commandline integration that isn't working. Tests of that will start using it as the bugs are fixed. llvm-svn: 199004
-
Chandler Carruth authored
llvm-svn: 199003
-
NAKAMURA Takumi authored
Excuse me, I hope msc16 builders would be fine till its end day. Introduce nullptr then. ;) llvm-svn: 199001
-
NAKAMURA Takumi authored
llvm-svn: 199000
-
NAKAMURA Takumi authored
XMM(s) are really spilling for targeting Win64. llvm-svn: 198999
-
Chandler Carruth authored
manager. I cannot emphasize enough that this is a WIP. =] I expect it to change a great deal as things stabilize, but I think its really important to get *some* functionality here so that the infrastructure can be tested more traditionally from the commandline. The current design is looking something like this: ./bin/opt -passes='module(pass_a,pass_b,function(pass_c,pass_d))' So rather than custom-parsed flags, there is a single flag with a string argument that is parsed into the pass pipeline structure. This makes it really easy to have nice structural properties that are very explicit. There is one obvious and important shortcut. You can start off the pipeline with a pass, and the minimal context of pass managers will be built around the entire specified pipeline. This makes the common case for tests super easy: ./bin/opt -passes=instcombine,sroa,gvn But this won't introduce any of the complexity of the fully inferred old system -- we only ever do this for the *entire* argument, and we only look at the first pass. If the other passes don't fit in the pass manager selected it is a hard error. The other interesting aspect here is that I'm not relying on any registration facilities. Such facilities may be unavoidable for supporting plugins, but I have alternative ideas for plugins that I'd like to try first. My plan is essentially to build everything without registration until we hit an absolute requirement. Instead of registration of pass names, there will be a library dedicated to parsing pass names and the pass pipeline strings described above. Currently, this is directly embedded into opt for simplicity as it is very early, but I plan to eventually pull this into a library that opt, bugpoint, and even Clang can depend on. It should end up as a good home for things like the existing PassManagerBuilder as well. There are a bunch of FIXMEs in the code for the parts of this that are just stubbed out to make the patch more incremental. A quick list of what's coming up directly after this: - Support for function passes and building the structured nesting. - Support for printing the pass structure, and FileCheck tests of all of this code. - The .def-file based pass name parsing. - IR priting passes and the corresponding tests. Some obvious things that I'm not going to do right now, but am definitely planning on as the pass manager work gets a bit further: - Pull the parsing into library, including the builders. - Thread the rest of the target stuff into the new pass manager. - Wire support for the new pass manager up to llc. - Plugin support. Some things that I'd like to have, but are significantly lower on my priority list. I'll get to these eventually, but they may also be places where others want to contribute: - Adding nice error reporting for broken pass pipeline descriptions. - Typo-correction for pass names. llvm-svn: 198998
-
Nick Lewycky authored
llvm-svn: 198997
-
Nick Lewycky authored
Add a new attribute 'enable_if' which can be used to control overload resolution based on the values of the function arguments at the call site. llvm-svn: 198996
-
Nick Lewycky authored
template argument deduction. llvm-svn: 198995
-
Rui Ueyama authored
llvm-svn: 198994
-
Rui Ueyama authored
Refactor the parser so that the parser can return arbitrary type of parse result other than a vector of ExportDesc. Parsers for non-EXPORTS directives will be implemented in different patches. No functionality change. llvm-svn: 198993
-
Richard Smith authored
variable to the return slot. Patch by David Wiberg, with test case alterations by me. llvm-svn: 198991
-
Jim Ingham authored
llvm-svn: 198990
-
Warren Hunt authored
This patch more cleanly seperates the concepts of Preferred Alignment and Required Alignment. Most notable that changes to Required Alignment do *not* impact preferred alignment until late in struct layout. This is observable when using pragma pack and non-virtual bases and the use of tail padding when laying them out. Test cases included. llvm-svn: 198988
-
Nick Kledzik authored
llvm-svn: 198987
-
Nick Kledzik authored
The main goal of this patch is to allow "mach-o encoded as yaml" and "native encoded as yaml" documents to be intermixed. They are distinguished via yaml tags at the start of the document. This will enable all mach-o test cases to be written using yaml instead of checking in object files. The Registry was extend to allow yaml tag handlers to be registered. The mach-o Reader adds a yaml tag handler for the tag "!mach-o". Additionally, this patch fixes some buffer ownership issues. When parsing mach-o binaries, the mach-o atoms can have pointers back into the memory mapped .o file. But with yaml encoded mach-o, name and content are ephemeral, so a copyRefs parameter was added to cause the mach-o atoms to make their own copy. llvm-svn: 198986
-