1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
Commit Graph

4228 Commits

Author SHA1 Message Date
Hal Finkel
8cf5de5774 Add a basic-block autovectorization pass.
This is the initial checkin of the basic-block autovectorization pass along with some supporting vectorization infrastructure.
Special thanks to everyone who helped review this code over the last several months (especially Tobias Grosser).

llvm-svn: 149468
2012-02-01 03:51:43 +00:00
Dan Gohman
8be3999ea3 basic-aa does support AliasAnalysis chaining now.
llvm-svn: 149293
2012-01-30 23:05:41 +00:00
Talin
d6b8c10155 DenseMap::find_as() and unit tests.
llvm-svn: 149229
2012-01-30 06:55:43 +00:00
Jim Grosbach
84b2fe36c8 Tidy up. s/Low Level Virtual Machine/LLVM/.
LLVM isn't an acronym anymore.

llvm-svn: 148985
2012-01-25 22:00:23 +00:00
Nick Lewycky
ccdb5138b7 Fix broken link.
llvm-svn: 148692
2012-01-23 08:47:21 +00:00
Kostya Serebryany
b37a1263e1 Extend Attributes to 64 bits
Problem: LLVM needs more function attributes than currently available (32 bits).
One such proposed attribute is "address_safety", which shows that a function is being checked for address safety (by AddressSanitizer, SAFECode, etc).

Solution:
- extend the Attributes from 32 bits to 64-bits
- wrap the object into a class so that unsigned is never erroneously used instead
- change "unsigned" to "Attributes" throughout the code, including one place in clang.
- the class has no "operator uint64 ()", but it has "uint64_t Raw() " to support packing/unpacking.
- the class has "safe operator bool()" to support the common idiom:  if (Attributes attr = getAttrs()) useAttrs(attr);
- The CTOR from uint64_t is marked explicit, so I had to add a few explicit CTOR calls
- Add the new attribute "address_safety". Doing it in the same commit to check that attributes beyond first 32 bits actually work.
- Some of the functions from the Attribute namespace are worth moving inside the class, but I'd prefer to have it as a separate commit.

Tested:
"make check" on Linux (32-bit and 64-bit) and Mac (10.6)
built/run spec CPU 2006 on Linux with clang -O2.


This change will break clang build in lib/CodeGen/CGCall.cpp.
The following patch will fix it.

llvm-svn: 148553
2012-01-20 17:56:17 +00:00
Chad Rosier
ce02cd3faa Fix typo.
llvm-svn: 148497
2012-01-19 21:50:08 +00:00
Jakob Stoklund Olesen
77ce60119b Add a new kind of MachineOperand: MO_RegisterMask.
Register masks will be used as a compact representation of large clobber
lists.  Currently, an x86 call instruction has some 40 operands
representing call-clobbered registers.  That's more than 1kB of useless
operands per call site.

A register mask operand references a bit mask of call-preserved
registers, everything else is clobbered.  The bit mask will typically
come from TargetRegisterInfo::getCallPreservedMask().

By abandoning ImplicitDefs for call-clobbered registers, it also becomes
possible to share call instruction descriptions between calling
conventions, and we can get rid of the WINCALL* instructions.

This patch introduces the new operand kind.  Future patches will add
RegMask support to target-independent passes before finally the fixed
clobber lists can be removed from call instruction descriptions.

llvm-svn: 148250
2012-01-16 19:22:00 +00:00
Joe Abbey
f61ffb3134 Adding a Hexagon cell for segmented stacks, as they have been implemented for X86 and not Sparc...
Committed as obvious

llvm-svn: 148237
2012-01-16 13:16:05 +00:00
Duncan Sands
5a44c5a303 Try to clarify a little how exception handling works.
llvm-svn: 148136
2012-01-13 19:59:16 +00:00
Bill Wendling
18abc22050 Revert accidental commit.
llvm-svn: 148065
2012-01-12 23:06:28 +00:00
Bill Wendling
ce528914e7 Fix the code that was WRONG.
The registers are placed into the saved registers list in the reverse order,
which is why the original loop was written to loop backwards.

llvm-svn: 148064
2012-01-12 23:05:03 +00:00
Eli Bendersky
af558b888a Fix dead link
llvm-svn: 147721
2012-01-07 04:11:27 +00:00
Eli Bendersky
161651f80a test commit (verifyiing commit access)
llvm-svn: 147600
2012-01-05 08:18:41 +00:00
Jakob Stoklund Olesen
a33612c1f2 Freeze reserved registers before starting register allocation.
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
2012-01-05 00:26:49 +00:00
Eric Christopher
173e9e8cf2 Fix typo.
llvm-svn: 147456
2012-01-03 18:38:37 +00:00
Duncan Sands
ec8ede7bf4 Correct spelling.
llvm-svn: 147435
2012-01-02 16:55:01 +00:00
NAKAMURA Takumi
ad71e57658 Happy new year 2012!
llvm-svn: 147395
2012-01-01 08:16:56 +00:00
Nadav Rotem
7898dcf3bb Update the LangRef documentation: the codegen does support this instruction.
llvm-svn: 147274
2011-12-25 21:32:35 +00:00
Nadav Rotem
682f1c2187 Add a few lines to the release notes:
1. pointer-vector
2. type legalizer changes and vector-select
3. X86 ISA changes.

llvm-svn: 146964
2011-12-20 08:02:50 +00:00
Dan Gohman
80dc86c550 Add a line to ReleaseNotes for half float.
llvm-svn: 146939
2011-12-20 01:10:56 +00:00
Jakob Stoklund Olesen
7b1b08eb77 Remove a register class that can just as well be synthesized.
Add the new TableGen register class synthesizer feature to the release
notes.

llvm-svn: 146875
2011-12-19 16:53:40 +00:00
Dan Gohman
9c8c9a8f62 The powers that be have decided that LLVM IR should now support 16-bit
"half precision" floating-point with a first-class type.

This patch adds basic IR support (but not codegen support).

llvm-svn: 146786
2011-12-17 00:04:22 +00:00
Eric Christopher
3c533091a7 Fix spacing.
llvm-svn: 146782
2011-12-16 23:42:35 +00:00
Eric Christopher
598f7d7c76 Update documentation.
llvm-svn: 146781
2011-12-16 23:42:33 +00:00
Devang Patel
59f6d6e2d1 Clarify and fix subprogram description.
llvm-svn: 146743
2011-12-16 17:50:04 +00:00
Jakob Stoklund Olesen
3d0382e29d Note ARM constant island alignment in the release notes.
The command line option should be removed, but not until the feature has
gotten a lot of testing. The ARMConstantIslandPass tends to have subtle
bugs that only show up after a while.

llvm-svn: 146739
2011-12-16 16:07:41 +00:00
Evan Cheng
638936d9cb Add a blurb about MachineInstr bundling support.
llvm-svn: 146603
2011-12-14 22:57:45 +00:00
Evan Cheng
1dcc7d089e Add high level description of MachineInstr bundles.
llvm-svn: 146589
2011-12-14 21:32:14 +00:00
Duncan Sands
1de7ae0e43 Vectors are not aggregate types (see isAggregateType).
llvm-svn: 146561
2011-12-14 15:44:20 +00:00
Kostya Serebryany
4579e0c874 mention AddressSanitizer in 3.1 release notes
llvm-svn: 146505
2011-12-13 19:46:24 +00:00
Chris Lattner
e407984265 Rip llvm 3.0 out of the release notes, making room for LLVM 3.1
llvm-svn: 146493
2011-12-13 17:55:30 +00:00
Bill Wendling
b61c025aa2 Use the example from clang, not the GCC frontend, which doesn't exist anymore.
llvm-svn: 146461
2011-12-13 01:07:07 +00:00
Daniel Dunbar
a16a63f190 llvm-build: Switch to using the common subdirectory list instead of
autodiscovery.

llvm-svn: 146437
2011-12-12 22:45:59 +00:00
Daniel Dunbar
ecff3756fa llvm-build: Add sketchy support for preserving comments when using
--write-llvmbuild.

llvm-svn: 146434
2011-12-12 22:45:35 +00:00
Tony Linthicum
61adbf8dc5 Hexagon backend support
llvm-svn: 146412
2011-12-12 21:14:40 +00:00
Daniel Dunbar
30d6a45140 LLVMBuild: Remove trailing newline, which irked me.
llvm-svn: 146409
2011-12-12 19:48:00 +00:00
Chandler Carruth
b0340663fe Update the LangRef documentation for llvm.ctlz and llvm.cttz to specify
the behavior with the newly added flag for undefined results on a zero
input.

I'm terrible at documentation, so comments and suggestions welcome here.

llvm-svn: 146361
2011-12-12 04:36:04 +00:00
Bill Wendling
4f3e4c6380 Random cleanups. No description changes.
llvm-svn: 146288
2011-12-09 22:41:40 +00:00
Bill Wendling
5a91169c03 Revert r146041 et al. The FunctionPass doesn't take an address but the ID.
llvm-svn: 146268
2011-12-09 19:11:02 +00:00
Chad Rosier
00721ab85b Typo.
llvm-svn: 146234
2011-12-09 02:00:44 +00:00
Bill Wendling
31110c8c27 Also pass in correct initializer here.
llvm-svn: 146044
2011-12-07 18:18:11 +00:00
Bill Wendling
e335d0861c Correct initializer in example.
llvm-svn: 146041
2011-12-07 18:02:44 +00:00
Jakub Staszak
1f05c26ed0 Make Release Notes HTML 4.01 Strict.
llvm-svn: 145991
2011-12-06 23:33:07 +00:00
Anshuman Dasgupta
d2971cca39 Add documentation for machine-independent DFA packetizer
llvm-svn: 145988
2011-12-06 23:12:42 +00:00
Jakub Staszak
5fd1d873c7 Add link to builtin_expect in Release Notes.
llvm-svn: 145979
2011-12-06 22:31:27 +00:00
Jakub Staszak
e109ff236b Add link to llvm.expect in Release Notes.
llvm-svn: 145964
2011-12-06 20:56:36 +00:00
Dan Gohman
02bdcdd326 Fix a subtle semantic issue with poison values that came up in
recent discussions. Poison can't make every value that depends on
it act in maximally undefined ways, because the optimizer may still
hoist code following the usual rules for undef. Make Poison invoke
its full undefined behavior only when it reaches an instruction with
externally visible side effects.

llvm-svn: 145913
2011-12-06 03:35:58 +00:00
Dan Gohman
7d881a178c Line up the comments in a code example.
llvm-svn: 145908
2011-12-06 03:31:14 +00:00
Dan Gohman
db3a5dbdb5 Rename "Trap Values" to "Poison Values", to better reflect their
purpose, and to avoid ambiguity with other uses of the word "trap"
in LangRef.

llvm-svn: 145907
2011-12-06 03:18:47 +00:00