summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/sse-minmax.ll
Commit message (Collapse)AuthorAgeFilesLines
* When unsafe math is used, we can use commutative FMAX and FMIN. In some casesNadav Rotem2012-08-191-48/+32
| | | | | | | | | | | | | | | | | | | this allows for better code generation. Added a new DAGCombine transformation to convert FMAX and FMIN to FMANC and FMINC, which are commutative. For example: movaps %xmm0, %xmm1 movsd LC(%rip), %xmm0 minsd %xmm1, %xmm0 becomes: minsd LC(%rip), %xmm0 llvm-svn: 162187
* X86 Peephole: fold loads to the source register operand if possible.Manman Ren2012-08-021-20/+40
| | | | | | | | | | Add more comments and use early returns to reduce nesting in isLoadFoldable. Also disable folding for V_SET0 to avoid introducing a const pool entry and a const pool load. rdar://10554090 and rdar://11873276 llvm-svn: 161207
* X86 Peephole: fold loads to the source register operand if possible.Manman Ren2012-08-021-43/+23
| | | | | | | | | | | | Machine CSE and other optimizations can remove instructions so folding is possible at peephole while not possible at ISel. This patch is a rework of r160919 and was tested on clang self-host on my local machine. rdar://10554090 and rdar://11873276 llvm-svn: 161152
* Revert r160920 and r160919 due to dragonegg and clang selfhost failureManman Ren2012-07-291-23/+43
| | | | llvm-svn: 160927
* X86 Peephole: fold loads to the source register operand if possible.Manman Ren2012-07-281-3/+3
| | | | | | Trying to fix the bot by specifying a triple in the failing testing cases. llvm-svn: 160920
* X86 Peephole: fold loads to the source register operand if possible.Manman Ren2012-07-281-40/+20
| | | | | | | | | Machine CSE and other optimizations can remove instructions so folding is possible at peephole while not possible at ISel. rdar://10554090 and rdar://11873276 llvm-svn: 160919
* Remove the "-promote-elements" flag. This flag is now enabled by default.Nadav Rotem2012-06-041-3/+3
| | | | llvm-svn: 157925
* Remove -join-physregs from the test suite.Jakob Stoklund Olesen2012-05-171-144/+141
| | | | | | | | | | | | | | This option has been disabled for a while, and it is going away so I can clean up the coalescer code. The tests that required physreg joining to be enabled were almost all of the form "tiny function with interference between arguments and return value". Such functions are usually inlined in the real world. The problem exposed by phys_subreg_coalesce-3.ll is real, but fairly rare. llvm-svn: 157027
* Add mcpu to tests to prevent them from using AVX instructions on Sandy ↵Craig Topper2012-04-271-3/+3
| | | | | | Bridge after r155618. llvm-svn: 155696
* Make X86::FsFLD0SS / FsFLD0SD real pseudo-instructions.Jakob Stoklund Olesen2011-11-291-40/+40
| | | | | | | | | Like V_SET0, these instructions are expanded by ExpandPostRA to xorps / vxorps so they can participate in execution domain swizzling. This also makes the AVX variants redundant. llvm-svn: 145440
* Synthesize x86 max/min instructions also for vectors (i.e. produceDuncan Sands2011-09-171-3/+35
| | | | | | | | | maxps and maxpd). This broke the sse41-blend.ll testcase by causing maxpd to be produced rather than a cmp+blend pair, which is the reason I tweaked it. Gives a small speedup on doduc with dragonegg when the GCC vectorizer is used. llvm-svn: 139986
* Prepare remaining tests for -join-physreg going away.Jakob Stoklund Olesen2011-05-041-3/+6
| | | | llvm-svn: 130893
* Split -enable-finite-only-fp-math to two options:Evan Cheng2010-07-151-2/+2
| | | | | | -enable-no-nans-fp-math and -enable-no-infs-fp-math. All of the current codegen fp math optimizations only care whether the fp arithmetics arguments and results can never be NaN. llvm-svn: 108465
* -enable-unsafe-fp-math should not imply -enable-finite-only-fp-math.Evan Cheng2010-07-131-1/+1
| | | | llvm-svn: 108254
* Fix a few testsJakob Stoklund Olesen2010-07-091-60/+60
| | | | llvm-svn: 108011
* When forming SSE min and max nodes for UGE and ULE comparisons, it'sDan Gohman2010-02-241-13/+429
| | | | | | | | | | | necessary to swap the operands to handle NaN and negative zero properly. Also, reintroduce logic for checking for NaN conditions when forming SSE min and max instructions, fixed to take into consideration NaNs and negative zeros. This allows forming min and max instructions in more cases. llvm-svn: 97025
* Actually enable the -enable-unsafe-fp-math tests.Dan Gohman2010-02-221-144/+144
| | | | llvm-svn: 96796
* Remove the logic for reasoning about NaNs from the code that formsDan Gohman2010-02-221-44/+168
| | | | | | | | | | SSE min and max instructions. The real thing this code needs to be concerned about is negative zero. Update the sse-minmax.ll test accordingly, and add tests for -enable-unsafe-fp-math mode as well. llvm-svn: 96775
* Recognize SSE min and max opportunities in even more cases.Dan Gohman2009-09-211-1/+320
| | | | | | | | | | And fix a bug with the behavior of min/max instructions formed from fcmp uge comparisons. Also, use FiniteOnlyFPMath() for this code instead of UnsafeFPMath, as it is more specific. llvm-svn: 82466
* Eliminate more uses of llvm-as and llvm-dis.Dan Gohman2009-09-081-1/+1
| | | | llvm-svn: 81290
* Recognize more opportunities to use SSE min and max instructions,Dan Gohman2009-09-031-0/+73
swapping the operands if necessary. llvm-svn: 80940
OpenPOWER on IntegriCloud