Commit Graph

3191 Commits

Author SHA1 Message Date
Chris Lattner 4a16110da7 Add another testcase
llvm-svn: 3355
2002-08-15 19:38:03 +00:00
Chris Lattner 83b396b830 Write constexpr casts using the cast X to Y notation, not using the implicit
type result

llvm-svn: 3354
2002-08-15 19:37:43 +00:00
Chris Lattner d8ecff793a Parse const expr cast instruction the same way the instruction is formed
llvm-svn: 3353
2002-08-15 19:37:11 +00:00
Chris Lattner d81cc45169 Add a note mentioning that bools promote to 0 or 1
llvm-svn: 3352
2002-08-15 19:36:05 +00:00
Chris Lattner 7f1c98d060 Move ConstExpr production to unify ConstVal stuff
llvm-svn: 3351
2002-08-15 18:17:28 +00:00
Chris Lattner 61643a01c3 Fix bug: test/Regression/Assembler/2002-08-15-UnresolvedGlobalReference.ll
llvm-svn: 3350
2002-08-15 17:58:33 +00:00
Chris Lattner 6e3f31d072 There seem to be issues with constant exprs
llvm-svn: 3349
2002-08-15 17:04:40 +00:00
Chris Lattner 7f8e677715 Simplify the code
llvm-svn: 3348
2002-08-15 16:15:36 +00:00
Chris Lattner 3732acab85 Handle more cases of cast-of-cast in more general forms.
llvm-svn: 3347
2002-08-15 16:15:25 +00:00
Chris Lattner 8d1118fd8f Remove the last traces of the NOT instruction
llvm-svn: 3346
2002-08-15 16:14:49 +00:00
Chris Lattner 47744689d0 Add a bunch of testcases for cast-of-casts that should be removed.
llvm-svn: 3345
2002-08-15 16:13:29 +00:00
Vikram S. Adve 2ba6b60374 Change opLabel numbers for Not and BNot.
Also, these tree nodes are now binary, not unary.

llvm-svn: 3344
2002-08-15 14:20:45 +00:00
Vikram S. Adve 3db97eb499 Unary Not (boolean and bitwise) is no longer a separate LLVM instruction
but is instead implemented with XOR.  Note that the InstrForest opLabels
for Not and BNot remain the same, i.e., the XOR is recognized and
represented as a (boolean or bitwise) Not when building the instruction
trees.  But these tree nodes are now binary, not unary.

llvm-svn: 3343
2002-08-15 14:19:22 +00:00
Vikram S. Adve caed269085 Revise code generation for unary Not (boolean and bitwise), which is
no longer a separate instruction but is instead implemented with XOR.

llvm-svn: 3342
2002-08-15 14:17:37 +00:00
Vikram S. Adve 243f187791 Added more helper functions for binary instructions emulating
unary Neg and Not: isNeg, isNot, getNegArgument, and getNotArgument.

llvm-svn: 3341
2002-08-15 14:15:48 +00:00
Vikram S. Adve f352eaf351 Add tests for unary NOT operations.
llvm-svn: 3340
2002-08-15 14:09:56 +00:00
Chris Lattner 0bb75910e2 Implement capability to fold this:
uint %test4(int %A, int %B) {
        %COND = setlt int %A, %B                ; <bool> [#uses=1]
        %result = cast bool %COND to uint               ; <uint> [#uses=1]
        ret uint %result
}
into a single cast instruction.

llvm-svn: 3339
2002-08-14 23:21:10 +00:00
Chris Lattner ac4e8c6ea4 Fix testcase to actually test what we think we are
llvm-svn: 3338
2002-08-14 23:01:19 +00:00
Chris Lattner 768c2b6bfe Avoid creating 'load X, 0' instead of just 'load X'
This _trivial_ change causes GCSE and LICM to be much more effective at
hoisting loads.  Before it would not be able to eliminate 'load X' if there
was just a dominating 'load X, 0' because the expressions were not identical.

llvm-svn: 3337
2002-08-14 22:11:52 +00:00
Chris Lattner 313fd77767 Avoid inserting an entry block unless we need it
llvm-svn: 3336
2002-08-14 21:35:02 +00:00
Chris Lattner 0c5e293a4a Gross, some whitespace escaped
llvm-svn: 3335
2002-08-14 20:07:01 +00:00
Chris Lattner eb4ba3cd53 Fix bug in documentation
llvm-svn: 3334
2002-08-14 20:06:13 +00:00
Chris Lattner 6499ee2e7a *** empty log message ***
llvm-svn: 3333
2002-08-14 19:29:38 +00:00
Chris Lattner c652333636 This file does not belong here.
llvm-svn: 3332
2002-08-14 19:29:32 +00:00
Chris Lattner 1115d58b7c Fix tests that use the now dead not instruction
llvm-svn: 3331
2002-08-14 19:28:22 +00:00
Chris Lattner 07a5218b6e Fix testcases that used to now dead 'not' instruction
llvm-svn: 3330
2002-08-14 19:28:09 +00:00
Chris Lattner 94126ed044 Change not's to xors
llvm-svn: 3329
2002-08-14 19:26:34 +00:00
Chris Lattner 330b7ac76c Remove support for Not ConstantExpr. This simplifies the unary case to only
have to support the cast instruction, so the function is renamed to getCast.

llvm-svn: 3328
2002-08-14 18:24:09 +00:00
Chris Lattner b80b69cc3e Fix bug introduced in last checkin due to CastInst not being visible
llvm-svn: 3327
2002-08-14 18:22:19 +00:00
Chris Lattner 8fd96fcdaf Remove support for unary operators.
llvm-svn: 3326
2002-08-14 18:19:46 +00:00
Chris Lattner 9c968aaa5a Remove reference to GenericUnaryInst class
llvm-svn: 3325
2002-08-14 18:18:50 +00:00
Chris Lattner 875d512b49 Remove support for unary instructions
llvm-svn: 3324
2002-08-14 18:18:28 +00:00
Chris Lattner b193ff8f70 Remove support for NOT instruction
llvm-svn: 3323
2002-08-14 18:18:02 +00:00
Chris Lattner 0f4093938a Remove extra #includes
llvm-svn: 3322
2002-08-14 18:17:32 +00:00
Chris Lattner 725b9e5033 Remove constant propogation support for NOT instruction
llvm-svn: 3321
2002-08-14 18:17:07 +00:00
Chris Lattner 7a74051566 Remove support for NOT instruction
llvm-svn: 3320
2002-08-14 18:00:52 +00:00
Chris Lattner cd09f750bf Remove information about dead 'not' instruction
llvm-svn: 3319
2002-08-14 17:55:59 +00:00
Chris Lattner 6e1a1b1289 Remove support for unary operators
llvm-svn: 3318
2002-08-14 17:53:45 +00:00
Chris Lattner 3733c7374e Implement two constructor functions for "unary" instructions
llvm-svn: 3317
2002-08-14 17:52:27 +00:00
Chris Lattner 4ec79c3e6f Remove support forNOT instruction
llvm-svn: 3316
2002-08-14 17:52:06 +00:00
Chris Lattner 31ae863284 - Fix InstCombine pass to not generate or process NOT instructions
- Fixed testcases to not use them either.

llvm-svn: 3315
2002-08-14 17:51:49 +00:00
Chris Lattner b7a74232bc Expose two new static methods from BinaryOperator: createNeg, createNot
llvm-svn: 3314
2002-08-14 17:51:29 +00:00
Chris Lattner b3c2af69fe Remove support for NOT instruction
llvm-svn: 3313
2002-08-14 17:45:39 +00:00
Chris Lattner 0764967cd7 Remove illegal test now that not instruction does not exist.
llvm-svn: 3312
2002-08-14 17:44:00 +00:00
Chris Lattner c59703b1fa Make sure there is SOME output always so the test is not rerun when unneccesary.
llvm-svn: 3311
2002-08-14 17:38:15 +00:00
Chris Lattner f9b9af0887 The not instruction is just a specialized form of XOR
llvm-svn: 3310
2002-08-14 17:37:04 +00:00
Chris Lattner db3b202be8 AsmParser turns 'not' instructions into 'xor' instructions now.
llvm-svn: 3309
2002-08-14 17:12:33 +00:00
Chris Lattner 31408f7a80 Return null on failure, instead of aborting.
llvm-svn: 3308
2002-08-14 17:12:13 +00:00
Vikram S. Adve 2d01206a37 Add method MachineInstr::substituteValue() which substitutes
one Value with another one in all operands and implicit references
of the machine instruction.

Also add method MachineOperand::getVRegValueOrNull().

llvm-svn: 3307
2002-08-14 16:54:11 +00:00
Vikram S. Adve fa99db77a8 Add method MachineInstr::substituteValue() which substitutes
one Value with another one in all operands and implicit references
of the machine instruction.

llvm-svn: 3306
2002-08-14 16:52:58 +00:00