Chris Lattner
57e5760947
add m_BitCast for matching a bitcast.
...
llvm-svn: 112222
2010-08-26 21:35:52 +00:00
Chris Lattner
91fafbd4e8
change the canonical form of "cond ? -1 : 0" to be
...
"sext cond" instead of a select. This simplifies some instcombine
code, matches the policy for zext (cond ? 1 : 0 -> zext), and allows
us to generate better code for a testcase on ppc.
llvm-svn: 94339
2010-01-24 00:09:49 +00:00
Chris Lattner
89b1b63bdf
teach instcombine to optimize pointer difference idioms involving constant
...
expressions. This is a step towards comment #4 in PR3351.
llvm-svn: 92401
2010-01-01 22:29:12 +00:00
Chris Lattner
2a0366af9e
add a helper for matching "1".
...
llvm-svn: 83760
2009-10-11 07:51:25 +00:00
Duncan Sands
0d5fa5f018
Mark more constants unsigned, as warned about by icc ( #68 ).
...
Patch by Erick Tryzelaar.
llvm-svn: 81116
2009-09-06 12:56:52 +00:00
Dan Gohman
9a6b2f19e5
Remove a bunch more now-unnecessary Context arguments.
...
llvm-svn: 78809
2009-08-12 16:23:25 +00:00
Owen Anderson
0ce2151b36
Move ConstantExpr to 2.5 API.
...
llvm-svn: 77494
2009-07-29 18:55:55 +00:00
Owen Anderson
256c2c250e
Move ConstantFP construction back to the 2.5-ish API.
...
llvm-svn: 77247
2009-07-27 20:59:43 +00:00
Eli Friedman
88f1b31a57
Fix obvious typo.
...
llvm-svn: 75563
2009-07-14 00:09:42 +00:00
Owen Anderson
7076f1ffb7
Push LLVMContext through the PatternMatch API.
...
llvm-svn: 75255
2009-07-10 17:35:01 +00:00
Dan Gohman
5f6f8101d5
Split the Add, Sub, and Mul instruction opcodes into separate
...
integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.
For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.
This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt
llvm-svn: 72897
2009-06-04 22:49:04 +00:00
Misha Brukman
7ee4196e74
Removed trailing whitespace.
...
llvm-svn: 65196
2009-02-20 22:51:36 +00:00
Chris Lattner
ff7c07ce73
no need to negate the APInt for 0.
...
llvm-svn: 61777
2009-01-06 00:06:25 +00:00
Chris Lattner
33b4e3aad4
Change m_ConstantInt and m_SelectCst to take their constant integers
...
as template arguments instead of as instance variables, exposing more
optimization opportunities to the compiler earlier.
llvm-svn: 61776
2009-01-05 23:53:12 +00:00
Chris Lattner
e10764369d
make m_ConstantInt(int64_t) safely match ConstantInt's that are larger than i64.
...
This fixes an instcombine crash on PR3235.
llvm-svn: 61775
2009-01-05 23:45:50 +00:00
Misha Brukman
2d4b2dd2d3
* Alphabetized system headers per the style guide
...
* Minor spacing and comment cleanups
llvm-svn: 61590
2009-01-02 20:26:30 +00:00
Chris Lattner
047dc0a77a
add a new m_Specific pattern that matches only if we have a specific Value*.
...
llvm-svn: 59393
2008-11-16 04:38:30 +00:00
Chris Lattner
f612178d64
add a new template for matching a select between two constants.
...
llvm-svn: 59391
2008-11-16 04:33:10 +00:00
Dan Gohman
50061675c5
Canonicalize sext(i1) to i1?-1:0, and update various instcombine
...
optimizations accordingly.
llvm-svn: 58457
2008-10-30 20:40:10 +00:00
Chris Lattner
69724eed32
add support for pattern matching 'neg'
...
llvm-svn: 50883
2008-05-09 05:20:27 +00:00
Chris Lattner
a39e69f292
add match support for casts.
...
llvm-svn: 45744
2008-01-08 07:02:44 +00:00
Chris Lattner
e0b1ee937a
Don't attribute in file headers anymore. See llvmdev for the
...
discussion of this change. Boy are my fingers tired. ;-)
llvm-svn: 45411
2007-12-29 19:59:42 +00:00
Chris Lattner
545c1c43be
Add m_Zero().
...
llvm-svn: 45255
2007-12-20 04:47:44 +00:00
Chris Lattner
1de26b7677
m_not should match vector not
...
llvm-svn: 37587
2007-06-15 06:13:47 +00:00
Dan Gohman
2d4b1767ab
Rename Value::getValueType to getValueID, to avoid confusion with
...
other things named getValueType.
llvm-svn: 35964
2007-04-13 18:12:09 +00:00
Andrew Lenharth
3c51b17d7b
I love non-deturminism. Returning objects with references to stack objects is a bad idea (TM).
...
llvm-svn: 34210
2007-02-13 00:37:50 +00:00
Reid Spencer
591bfa1e0b
Changes to support making the shift instructions be true BinaryOperators.
...
This feature is needed in order to support shifts of more than 255 bits
on large integer types. This changes the syntax for llvm assembly to
make shl, ashr and lshr instructions look like a binary operator:
shl i32 %X, 1
instead of
shl i32 %X, i8 1
Additionally, this should help a few passes perform additional optimizations.
llvm-svn: 33776
2007-02-02 02:16:23 +00:00
Reid Spencer
e33c18f4d2
For PR970:
...
Clean up handling of isFloatingPoint() and dealing with PackedType.
Patch by Gordon Henriksen!
llvm-svn: 33415
2007-01-21 00:29:26 +00:00
Zhou Sheng
23d24526b2
For PR1043:
...
Merge ConstantIntegral and ConstantBool into ConstantInt.
Remove ConstantIntegral and ConstantBool from LLVM.
llvm-svn: 33073
2007-01-11 12:24:14 +00:00
Reid Spencer
4428c3483b
For PR950:
...
This patch removes the SetCC instructions and replaces them with the ICmp
and FCmp instructions. The SetCondInst instruction has been removed and
been replaced with ICmpInst and FCmpInst.
llvm-svn: 32751
2006-12-23 06:05:41 +00:00
Reid Spencer
992d9788b3
For PR950:
...
The long awaited CAST patch. This introduces 12 new instructions into LLVM
to replace the cast instruction. Corresponding changes throughout LLVM are
provided. This passes llvm-test, llvm/test, and SPEC CPUINT2000 with the
exception of 175.vpr which fails only on a slight floating point output
difference.
llvm-svn: 31931
2006-11-27 01:05:10 +00:00
Reid Spencer
da1f5b882a
For PR950:
...
This patch converts the old SHR instruction into two instructions,
AShr (Arithmetic) and LShr (Logical). The Shr instructions now are not
dependent on the sign of their operands.
llvm-svn: 31542
2006-11-08 06:47:33 +00:00
Reid Spencer
3d33eff52e
Fix a small bug noticed on code review.
...
llvm-svn: 31476
2006-11-06 18:47:14 +00:00
Reid Spencer
1abf69e923
For PR950:
...
Replace the REM instruction with UREM, SREM and FREM.
llvm-svn: 31369
2006-11-02 01:53:59 +00:00
Reid Spencer
6833ffe8b8
For PR950:
...
Make necessary changes to support DIV -> [SUF]Div. This changes llvm to
have three division instructions: signed, unsigned, floating point. The
bytecode and assembler are bacwards compatible, however.
llvm-svn: 31195
2006-10-26 06:15:43 +00:00
Chris Lattner
3c4ca91dbd
Add support for pattern matching cast operations
...
llvm-svn: 30454
2006-09-18 05:17:11 +00:00
Chris Lattner
497d2b6701
Add some more matcher classes for shifts.
...
llvm-svn: 28804
2006-06-15 19:25:28 +00:00
Chris Lattner
307a2b55bb
Fix typo that caused build failures for things trying to use m_Or.
...
llvm-svn: 26153
2006-02-13 23:06:39 +00:00
Chris Lattner
96f29dbdbe
Make this slightly more efficient by pushing actual type information down
...
into the evaluator. This shrinks a release build of instcombine's text
section from 216363 to 215975 bytes (on PPC).
llvm-svn: 23468
2005-09-27 06:38:05 +00:00
Misha Brukman
8018cc9e05
Remove trailing whitespace
...
llvm-svn: 21411
2005-04-21 20:48:15 +00:00
Chris Lattner
1d52a24587
Add support for shifts
...
llvm-svn: 17702
2004-11-13 19:32:45 +00:00
Chris Lattner
83c911936d
Minor efficiency improvements
...
llvm-svn: 15461
2004-08-04 04:45:29 +00:00
Misha Brukman
33a80cd54d
Enable compilation.
...
llvm-svn: 15344
2004-07-30 14:33:07 +00:00
Chris Lattner
ace669f381
Check in some useful helper routines for doing ML-style pattern matching on
...
the LLVM IR.
llvm-svn: 15341
2004-07-30 07:45:00 +00:00