- Apr 12, 2012
-
-
Kevin Enderby authored
of a VST instruction. llvm-svn: 154544
-
Akira Hatanaka authored
- FCOPYSIGN nodes that have operands of different types were not handled. - Different code was generated depending on the endianness of the target. Additionally, code is added that emits INS and EXT instructions, if they are supported by target (they are R2 instructions). llvm-svn: 154540
-
- Apr 11, 2012
-
-
Chad Rosier authored
llvm-svn: 154522
-
Jim Grosbach authored
While there is an encoding for it in VUZP, the result of that is undefined, so we should avoid it. Define the instruction as a pseudo for VTRN.32 instead, as the ARM ARM indicates. rdar://11222366 llvm-svn: 154511
-
Jim Grosbach authored
While there is an encoding for it in VZIP, the result of that is undefined, so we should avoid it. Define the instruction as a pseudo for VTRN.32 instead, as the ARM ARM indicates. rdar://11221911 llvm-svn: 154505
-
Sylvestre Ledru authored
Thanks to Pino Toscano for the patch llvm-svn: 154500
-
Benjamin Kramer authored
FoldingSet is implemented as a chained hash table. When there is a hash collision during insertion, which is common as we fill the table until a load factor of 2.0 is hit, we walk the chained elements, comparing every operand with the new element's operands. This can be very expensive if the MDNode has many operands. We sacrifice a word of space in MDNode to cache the full hash value, reducing compares on collision to a minimum. MDNode grows from 28 to 32 bytes + operands on x86. On x86_64 the new bits fit nicely into existing padding, not growing the struct at all. The actual speedup depends a lot on the test case and is typically between 1% and 2% for C++ code with clang -c -O0 -g. llvm-svn: 154497
-
Benjamin Kramer authored
llvm-svn: 154496
-
Benjamin Kramer authored
llvm-svn: 154495
-
Nadav Rotem authored
llvm-svn: 154494
-
Duncan Sands authored
binary and assembly. Patch by Carlo Kok. Emitting was inspired by but not based on the D llvm bindings. llvm-svn: 154493
-
Chandler Carruth authored
Yea, 'NumCallerCallersAnalyzed' isn't a great name, suggestions welcome. llvm-svn: 154492
-
Nadav Rotem authored
Fix a dagcombine optimization which assumes that the vsetcc result type is always of the same size as the compared values. This is ture for SSE/AVX/NEON but not for all targets. llvm-svn: 154490
-
-
Nadav Rotem authored
Original message: Modify the code that lowers shuffles to blends from using blendvXX to vblendXX. blendV uses a register for the selection while Vblend uses an immediate. On sandybridge they still have the same latency and execute on the same execution ports. llvm-svn: 154483
-
Evan Cheng authored
predicates. Also remove NEON2 since it's not really useful and it is confusing. If NEON + VFP4 implies NEON2 but NEON2 doesn't imply NEON + VFP4, what does it really mean? rdar://10139676 llvm-svn: 154480
-
Craig Topper authored
llvm-svn: 154479
-
Craig Topper authored
llvm-svn: 154478
-
Craig Topper authored
llvm-svn: 154473
-
-
Charles Davis authored
ret instructions. llvm-svn: 154468
-
Kevin Enderby authored
for all opcodes handed by DecodeVLDInstruction() in ARMDisassembler.cpp . llvm-svn: 154459
-
Jim Grosbach authored
rdar://11222742 llvm-svn: 154457
-
Evan Cheng authored
1. The new instruction itinerary entries are not properly described. 2. The asm parser can't handle vfms and vfnms. 3. There were no assembler, disassembler test cases. 4. HasNEON2 has the wrong assembler predicate. rdar://10139676 llvm-svn: 154456
-
Jakob Stoklund Olesen authored
Allow cheap instructions to be hoisted if they are register pressure neutral or better. This happens if the instruction is the last loop use of another virtual register. Only expensive instructions are allowed to increase loop register pressure. llvm-svn: 154455
-
Jakob Stoklund Olesen authored
Hoisting a value that is used by a PHI in the loop will introduce a copy because the live range is extended to cross the PHI. The same applies to PHIs in exit blocks. Also use this opportunity to make HasLoopPHIUse() non-recursive. llvm-svn: 154454
-
Owen Anderson authored
Move the constant-folding support for FP_ROUND in SelectionDAG from the one-operand version of getNode() to the two-operand version, since it became a two-operand node at sound point. Zap a testcase that this allows us to completely fold away. llvm-svn: 154447
-
Kostya Serebryany authored
- don't isntrument reads from constant globals. Saves ~1.5% of instrumented instructions on CPU2006 (counting static instructions, not their execution). - don't insrument reads from vtable (which is a global constant too). Saves ~5%. I did not measure the run-time impact of this, but it is certainly non-negative. llvm-svn: 154444
-
- Apr 10, 2012
-
-
-
Duncan Sands authored
multiplication by a denormal, and some tests checking that. llvm-svn: 154431
-
Bill Wendling authored
StringMap. This was redundant and unnecessarily bloated the MDString class. Because the MDString class is a "Value" and will never have a "name", and because the Name field in the Value class is a pointer to a StringMap entry, we repurpose the Name field for an MDString. It stores the StringMap entry in the Name field, and uses the normal methods to get the string (name) back. PR12474 llvm-svn: 154429
-
Chad Rosier authored
llvm-svn: 154427
-
Chad Rosier authored
llvm-svn: 154426
-
Eric Christopher authored
llvm-svn: 154425
-
Kostya Serebryany authored
a write to the same temp follows in the same BB. Also add stats printing. On Spec CPU2006 this optimization saves roughly 4% of instrumented reads (which is 3% of all instrumented accesses): Writes : 161216 Reads : 446458 Reads-before-write: 18295 llvm-svn: 154418
-
Eric Christopher authored
don't elide the branch instruction if it's the only one in the block, otherwise it's ok. PR9796 and rdar://11215207 llvm-svn: 154417
-
Owen Anderson authored
llvm-svn: 154414
-
Jim Grosbach authored
We were incorrectly conflating some add variants which don't have a cc_out operand with the mirroring sub encodings, which do. Part of the awesome non-orthogonality legacy of thumb1. Similarly, handling of add/sub of an immediate was sometimes incorrectly removing the cc_out operand for add/sub register variants. rdar://11216577 llvm-svn: 154411
-
David Blaikie authored
llvm-svn: 154398
-
Nadav Rotem authored
of the same size as the compared values. This is ture for SSE/AVX/NEON but not for all targets. llvm-svn: 154397
-