- Sep 21, 2012
-
-
Chad Rosier authored
llvm-svn: 164415
-
Chad Rosier authored
llvm-svn: 164414
-
Evan Cheng authored
because LiveStackAnalysis was not preserved by VirtRegWriter. This caused big stack usage regression in some cases. rdar://12340383 llvm-svn: 164408
-
Benjamin Kramer authored
We rely on it when doing the transforms. This can happen when there is an indirectbr in the loop. Fixes PR13892. llvm-svn: 164383
-
Chad Rosier authored
non-aligned i32 loads/stores. rdar://12304911 llvm-svn: 164381
-
Benjamin Kramer authored
Fixes PR13250. llvm-svn: 164377
-
Bill Wendling authored
llvm-svn: 164373
-
Michael Liao authored
llvm-svn: 164372
-
Bill Wendling authored
Make the 'get*AlignmentFromAttr' functions into member functions within the Attributes class. Now with fix. llvm-svn: 164370
-
Benjamin Kramer authored
We inserted a placeholder that was never replaced because the function was already visited. Assert that all placeholders have been resolved when tearing down the bitcode reader. Fixes PR13895. llvm-svn: 164369
-
Andrew Trick authored
Quick review against the manual revealed a few obvious mistakes. llvm-svn: 164361
-
Michael Liao authored
- Fix PR5145 and turn on test 8-bit atomic ops llvm-svn: 164358
-
Michael Liao authored
- Rewirte most atomic instructions in templates for both better maintenance and future extensions, such as HLE in TSX. llvm-svn: 164357
-
NAKAMURA Takumi authored
llvm-svn: 164354
-
Akira Hatanaka authored
Patch by Reed Kotler. llvm-svn: 164349
-
Chad Rosier authored
non-halfword-aligned i16 loads/stores. rdar://12304911 llvm-svn: 164345
-
Jim Grosbach authored
llvm-svn: 164344
-
Jim Grosbach authored
llvm-svn: 164343
-
Jim Grosbach authored
The expression based expansion too often results in IR level optimizations splitting the intermediate values into separate basic blocks, preventing the formation of the VBSL instruction as the code author intended. In particular, LICM would often hoist part of the computation out of a loop. rdar://11011471 llvm-svn: 164340
-
Jakob Stoklund Olesen authored
A PHI can't create interference on its own. If two live ranges interfere at a PHI, they must also interfere when leaving one of the PHI predecessors. llvm-svn: 164330
-
Jakob Stoklund Olesen authored
The old-fashioned many-to-one value mapping doesn't always work when merging vector lanes. A value can map to multiple different values, and it can even be necessary to insert new PHIs. When a value number is defined by a copy from a value number that required SSa update, include the live range of the copied value number in the SSA update as well. It is not necessarily a copy of the original value number any longer. llvm-svn: 164329
-
Eric Christopher authored
llvm-svn: 164326
-
Manman Ren authored
We already have HoistThenElseCodeToIf, this patch implements SinkThenElseCodeToEnd. When END block has only two predecessors and each predecessor terminates with unconditional branches, we compare instructions in IF and ELSE blocks backwards and check whether we can sink the common instructions down. rdar://12191395 llvm-svn: 164325
-
- Sep 20, 2012
-
-
Bill Wendling authored
llvm-svn: 164309
-
Bill Wendling authored
llvm-svn: 164308
-
Bill Wendling authored
llvm-svn: 164307
-
Bill Wendling authored
llvm-svn: 164305
-
Nadav Rotem authored
llvm-svn: 164297
-
Craig Topper authored
Change enum type in a static table to uint8_t instead. Saves about 700 hundred bytes of static data. Change unsigned char in same table to uint8_t for explicitness. llvm-svn: 164285
-
Michael Liao authored
- Rewrite/merge pseudo-atomic instruction emitters to address the following issue: * Reduce one unnecessary load in spin-loop previously the spin-loop looks like thisMBB: newMBB: ld t1 = [bitinstr.addr] op t2 = t1, [bitinstr.val] not t3 = t2 (if Invert) mov EAX = t1 lcs dest = [bitinstr.addr], t3 [EAX is implicit] bz newMBB fallthrough -->nextMBB the 'ld' at the beginning of newMBB should be lift out of the loop as lcs (or CMPXCHG on x86) will load the current memory value into EAX. This loop is refined as: thisMBB: EAX = LOAD [MI.addr] mainMBB: t1 = OP [MI.val], EAX LCMPXCHG [MI.addr], t1, [EAX is implicitly used & defined] JNE mainMBB sinkMBB: * Remove immopc as, so far, all pseudo-atomic instructions has all-register form only, there is no immedidate operand. * Remove unnecessary attributes/modifiers in pseudo-atomic instruction td * Fix issues in PR13458 - Add comprehensive tests on atomic ops on various data types. NOTE: Some of them are turned off due to missing functionality. - Revise tests due to the new spin-loop generated. llvm-svn: 164281
-
Bill Wendling authored
llvm-svn: 164268
-
Bill Wendling authored
llvm-svn: 164264
-
Micah Villmow authored
llvm-svn: 164261
-
- Sep 19, 2012
-
-
Jakob Stoklund Olesen authored
A common coalescing conflict in vector code is lane insertion: %dst = FOO %src = BAR %dst:ssub0 = COPY %src The live range of %src interferes with the ssub0 lane of %dst, but that lane is never read after %src would have clobbered it. That makes it safe to merge the live ranges and eliminate the COPY: %dst = FOO %dst:ssub0 = BAR This patch teaches the new coalescer to resolve conflicts where dead vector lanes would be clobbered, at least as long as the clobbered vector lanes don't escape the basic block. llvm-svn: 164250
-
Andrew Kaylor authored
This patch adds memory support functions which will later be used to implement section-specific protection handling in MCJIT. llvm-svn: 164249
-
Preston Gurd authored
to improve compatibility with GNU as. Based on a patch by PaX Team. Fixed assertion failures on non-Darwin and added additional test cases. llvm-svn: 164248
-
Duncan Sands authored
Anthony Bryant. llvm-svn: 164247
-
Preston Gurd authored
This patch is based on the one by PaX Team. Patch by Andy Zhang! llvm-svn: 164246
-
Preston Gurd authored
The directive can be matched with directives other than '.rept' Patch by Andy Zhang! llvm-svn: 164245
-
Michael Liao authored
- Merge the processing of LOAD_ADD with other atomic load-arith operations - Separate the logic getting target constant for atomic-load-op and add an optimization for atomic-load-add on i16 with negative value - Optimize a minor case for atomic-fetch-add i16 with negative operand. Test case is revised. llvm-svn: 164243
-