- Sep 21, 2012
-
-
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
-
- Sep 20, 2012
-
-
Bill Wendling authored
llvm-svn: 164309
-
Bill Wendling authored
llvm-svn: 164308
-
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
-
- Sep 19, 2012
-
-
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
-
Bill Schmidt authored
lib/Target/PowerPC/PPCISelLowering.{h,cpp} Rename LowerFormalArguments_Darwin to LowerFormalArguments_Darwin_Or_64SVR4. Rename LowerFormalArguments_SVR4 to LowerFormalArguments_32SVR4. Receive small structs right-justified in LowerFormalArguments_Darwin_Or_64SVR4. Rename LowerCall_Darwin to LowerCall_Darwin_Or_64SVR4. Rename LowerCall_SVR4 to LowerCall_32SVR4. Pass small structs right-justified in LowerCall_Darwin_Or_64SVR4. test/CodeGen/PowerPC/structsinregs.ll New test. llvm-svn: 164228
-
Craig Topper authored
Remove code for setting the VEX L-bit as a function of operand size from the code emitters and the disassembler table builder. Fix a couple instructions that were still missing VEX_L. llvm-svn: 164204
-
Craig Topper authored
Add explicit VEX_L tags to all 256-bit instructions. This will allow us to remove code from the code emitters that examined operands to set the L-bit. llvm-svn: 164202
-
- Sep 18, 2012
-
-
-
Roman Divacky authored
llvm-svn: 164155
-
Akira Hatanaka authored
llvm-svn: 164150
-
Roman Divacky authored
Patch by Adhemerval Zanella. llvm-svn: 164141
-
Roman Divacky authored
llvm-svn: 164139
-
Roman Divacky authored
Patch by Adhemerval Zanella. llvm-svn: 164138
-
Roman Divacky authored
store this and use it to not emit long nops when the CPU is geode which doesnt support them. Fixes PR11212. llvm-svn: 164132
-
James Molloy authored
More domain conversion; convert VFP VMOVS to NEON instructions in more cases - when we may clobber the other S-lane by converting an S to a D instruction, make an effort to work out if the S lane is clobberable or not. llvm-svn: 164114
-
Andrew Trick authored
llvm-svn: 164092
-
Evan Cheng authored
aligned address. Based on patch by David Peixotto. Also use vld1.64 / vst1.64 with 128-bit alignment to take advantage of alignment hints. rdar://12090772, rdar://12238782 llvm-svn: 164089
-
Andrew Trick authored
I have to work out the Target/CodeGen header dependencies before putting this back. llvm-svn: 164072
-
Andrew Trick authored
llvm-svn: 164061
-
Jan Wen Voung authored
While we are setting the earlier def to true, also make it live. llvm-svn: 164056
-
- Sep 17, 2012
-
-
Akira Hatanaka authored
we will do that when we implement the full save/restore. Patch by Reed Kotler. llvm-svn: 164051
-
Benjamin Kramer authored
LLVM_ATTRIBUTE_USED forces emission of a function. To silence unused function warnings use LLVM_ATTRIBUTE_UNUSED. llvm-svn: 164036
-
Silviu Baranga authored
llvm-svn: 164030
-
- Sep 16, 2012
-
-
Craig Topper authored
llvm-svn: 164001
-
Nadav Rotem authored
It had patterns for zext-loading and extending. This commit adds patterns for loading a wide type, performing a bitcast, and extending. This is an odd pattern, but it is commonly used when writing code with intrinsics. rdar://11897677 llvm-svn: 163995
-
- Sep 15, 2012
-
-
Craig Topper authored
llvm-svn: 163974
-
Craig Topper authored
llvm-svn: 163973
-
Benjamin Kramer authored
This was only an issue if sse is disabled. llvm-svn: 163967
-
Akira Hatanaka authored
use load/store fragments defined in TargetSelectionDAG.td in place of them. Unaligned loads/stores are either expanded or lowered to target-specific nodes, so instruction selection should see only aligned load/store nodes. No changes in functionality. llvm-svn: 163960
-
Akira Hatanaka authored
Patch by Reed Kotler. llvm-svn: 163956
-
- Sep 14, 2012
-
-
Andrew Trick authored
llvm-svn: 163922
-
Andrew Trick authored
This models the A9 processor at the level of instruction operands, as opposed to the itinerary, which models each operation at the level of pipeline stages. The two primary motivations are: 1) Allow MachineScheduler to model A9 as an out-of-order processor. It can now distinguish between hazards that force interlocking vs. buffered resources. 2) Reduce long-term maintenance by allowing the itinerary and target hooks to eventually be removed. Note that almost all of the complexity in the new model exists to model instruction variants, which the itinerary cannot handle. Instead the scheduler previously relied on processor-specific target hooks which are incomplete and buggy. llvm-svn: 163921
-
Sergei Larin authored
This patch introduces a possibility for Hexagon MI scheduler to perform some target specific post- processing on the scheduling DAG prior to scheduling. llvm-svn: 163903
-