Commit Graph

1185 Commits

Author SHA1 Message Date
Reid Spencer 76a8d45e32 Fix auto-upgrade of intrinsics to work properly with both assembly and
bytecode reading. This code is crufty, the result of much hacking to get things
working correctly. Cleanup patches will follow.

llvm-svn: 25682
2006-01-27 11:49:27 +00:00
Chris Lattner c981b8e35a add method for constraint parsing
llvm-svn: 25637
2006-01-26 02:21:59 +00:00
Chris Lattner 8547e3ab16 parse and verify the constraint string.
llvm-svn: 25631
2006-01-26 00:48:33 +00:00
Chris Lattner 41eb5cd9c3 Make sure the only user of InlineAsm's are direct calls.
llvm-svn: 25626
2006-01-26 00:08:45 +00:00
Chris Lattner a2d810d935 Print InlineAsm objects
llvm-svn: 25617
2006-01-25 22:26:05 +00:00
Chris Lattner 8bbcda2fda Change inline asms to be uniqued like constants, not embedded in a Module.
llvm-svn: 25610
2006-01-25 18:57:27 +00:00
Chris Lattner eef2fe72c0 Initial checkin of the InlineAsm class
llvm-svn: 25570
2006-01-24 04:13:11 +00:00
Chris Lattner efaf35d52a Pretty print file-scope asm blocks.
llvm-svn: 25568
2006-01-24 00:45:30 +00:00
Chris Lattner 3acaf5cb11 syntax change
llvm-svn: 25567
2006-01-24 00:40:17 +00:00
Chris Lattner 6ed87bdeb4 Print out inline asm strings
llvm-svn: 25556
2006-01-23 23:03:36 +00:00
Reid Spencer 281dcd6ace For PR411:
No functionality changes, just improve the code by a) providing better
function names, b) eliminating a call to get_suffix and c) tightening up
a function elimination test to reduce further checking.

llvm-svn: 25540
2006-01-23 07:42:30 +00:00
Chris Lattner c66da83a89 Speedup and simplify pass registration by the observation that there is
exactly one PassInfo object per RegisterPass object and that their lifetimes
are the same.  As such, there is no reason for the RegisterPass object to
dynamically allocate the PassInfo object at compiler startup time: just inline
the object by-value.  This should reduce codesize, heap size, and startup time. Yaay.

llvm-svn: 25521
2006-01-23 01:01:04 +00:00
Chris Lattner 61590dd739 Remove dead expression.
llvm-svn: 25480
2006-01-20 18:04:43 +00:00
Chris Lattner 06784ff9ab Don't use invalidated use_iterator's. This fixes a crash compiling povray
llvm-svn: 25479
2006-01-20 18:01:41 +00:00
Reid Spencer 75b9567671 Don't forget about casting the result of an upgraded call to an intrinsic
in the case where it needs to cast back to a signed type.

llvm-svn: 25447
2006-01-19 07:00:29 +00:00
Reid Spencer 4cdceb7203 Make get_suffix faster by using a switch on getTypeID rather than a series
of comparisons on the various type objects.

llvm-svn: 25441
2006-01-19 05:37:27 +00:00
Reid Spencer f8592bdea5 Don't accept the ctpop, cttz, or ctlz intrinsics with signed arguments. The
interface requires unsigned arguments.

llvm-svn: 25433
2006-01-19 01:20:03 +00:00
Reid Spencer e0aa7c7ded Add a new interface function to AutoUpgrade for simultaneously upgrading
the Function and the CallInst: UpgradeCallsToIntrinsic(Function*). Also,
re-factor the AutoUpgrade implementation to eliminate some duplication of
code.

llvm-svn: 25432
2006-01-19 01:18:29 +00:00
Robert Bocchino ca27f0320b VMCore support for the insertelement operation.
llvm-svn: 25408
2006-01-17 20:07:22 +00:00
Reid Spencer b4f9a6f110 For PR411:
This patch is an incremental step towards supporting a flat symbol table.
It de-overloads the intrinsic functions by providing type-specific intrinsics
and arranging for automatically upgrading from the old overloaded name to
the new non-overloaded name. Specifically:
  llvm.isunordered -> llvm.isunordered.f32, llvm.isunordered.f64
  llvm.sqrt -> llvm.sqrt.f32, llvm.sqrt.f64
  llvm.ctpop -> llvm.ctpop.i8, llvm.ctpop.i16, llvm.ctpop.i32, llvm.ctpop.i64
  llvm.ctlz -> llvm.ctlz.i8, llvm.ctlz.i16, llvm.ctlz.i32, llvm.ctlz.i64
  llvm.cttz -> llvm.cttz.i8, llvm.cttz.i16, llvm.cttz.i32, llvm.cttz.i64
New code should not use the overloaded intrinsic names. Warnings will be
emitted if they are used.

llvm-svn: 25366
2006-01-16 21:12:35 +00:00
Reid Spencer 84c00ea718 For PR411:
This file makes the helper functions for auto-upgrade of llvm assembly and
bytecode more accessible. This is part of de-overloading of intrinsic
functions to support the flat symbol table (no type planes).

llvm-svn: 25365
2006-01-16 21:06:01 +00:00
Chris Lattner 087bb703d7 Thanks to Daniel Berlin's ETForest fix, we can now use it again for the verifier
llvm-svn: 25345
2006-01-15 21:58:50 +00:00
Chris Lattner 9a7e6c7ae0 ET-Forest has issues with unreachable blocks. Temporarily disable verifiers use
of it until they are resolved.

llvm-svn: 25341
2006-01-15 20:00:51 +00:00
Chris Lattner 5186bd8312 add a missing break that Reid noticed.
llvm-svn: 25328
2006-01-15 08:40:16 +00:00
Chris Lattner c020bcf850 Change ET-Forest to automatically recalculate its DFSnum's if too many slow
queries are made.

Patch by Daniel Berlin!

llvm-svn: 25323
2006-01-14 20:55:09 +00:00
Nate Begeman 82049eba2c Add bswap intrinsics as documented in the Language Reference
llvm-svn: 25309
2006-01-14 01:25:24 +00:00
Chris Lattner c482f16da1 Add recognition and verification of new llvm.stacksave/llvm.stackrestore intrinsics
llvm-svn: 25266
2006-01-13 02:15:39 +00:00
Chris Lattner 4f1d8b3647 Patch #10 from Saem:
"Extracts a few more methods, reduces some redundancy in the code at
the same time."

llvm-svn: 25248
2006-01-12 16:48:23 +00:00
Chris Lattner dc09e40c9d Convert the verifier over to use ETForest instead of DominatorSet. Patch
by Daniel Berlin

llvm-svn: 25242
2006-01-12 06:17:59 +00:00
Jeff Cohen 4e1515789e Fix VC++ compilation error.
llvm-svn: 25214
2006-01-11 16:21:23 +00:00
Chris Lattner a5287eac4f Patch #9 from Saem:
"Cut up the runPasses method into smaller pieces.  The small private
helpers should  be easier to deal with when code shuffling arising
from creating the new specialised batchers, not to mention, they're
much easier to understand.

I inlined them, in case function call overhead would be noticeable --
doubtful."

llvm-svn: 25213
2006-01-11 16:14:49 +00:00
Chris Lattner 21f0c31c43 Simple is good. CVS is for revision control, not file headers
llvm-svn: 25206
2006-01-11 05:39:45 +00:00
Chris Lattner 2b84e01ba0 Simple is good
llvm-svn: 25205
2006-01-11 05:38:55 +00:00
Robert Bocchino de7f1c9a63 Added constant folding support for the extractelement operation.
llvm-svn: 25187
2006-01-10 20:03:46 +00:00
Robert Bocchino 230044839d Added support for the extractelement operation.
llvm-svn: 25181
2006-01-10 19:05:34 +00:00
Reid Spencer 25780d5eac For PR411:
First step in refactoring the SymbolTable is to split it into two classes,
one for a symbol table of types and one for a symbol table of Values.

llvm-svn: 25175
2006-01-10 09:51:48 +00:00
Chris Lattner dfa65542a1 Bugfix for etforest updating. Contributed by Daniel Berlin.
llvm-svn: 25152
2006-01-09 07:58:01 +00:00
Reid Spencer 60e2c4b4e7 Saem Ghani's PassManager Patch #8:
This fixes a "gccass" regression. The -debug-pass=Structure option now
prints all the appropriate output

llvm-svn: 25151
2006-01-08 22:57:07 +00:00
Chris Lattner 6c9cbdba1a Initial implementation of the ET-Forest data structure for dominators and
post-dominators.  This code was written/adapted by Daniel Berlin!

llvm-svn: 25144
2006-01-08 08:22:18 +00:00
Chris Lattner 38e618438f Patch #7 from Saem:
"added the asserts and casts, fixed the comments and started the break
down of the larger methods.  A few more patches and the breakdown
should be complete."

llvm-svn: 25142
2006-01-07 23:16:58 +00:00
Chris Lattner fed8ceb56a Implement a few symbolic constant folding things. X ? Y : Y is Y.
Fold:
seteq ({ short }* cast (int 1 to { short }*), { short }* null)
setlt ({ short }* cast (int 1 to { short }*), { short }* cast (int 2 to { short }*))

to false/true.  These last two commonly occur in the output of compilers that
tag integers, like cozmic's scheme compiler.

Tested by Regression/Assembler/ConstantExprFold.llx

llvm-svn: 25112
2006-01-05 07:49:30 +00:00
Chris Lattner 0f7e9f5180 fix some formatting problems
llvm-svn: 25110
2006-01-05 07:19:51 +00:00
Chris Lattner c47b08154d Patch #6's in Saem's refactor-the-passmanager patch series. From him:
This sanitises the world, blows away the specialisations and adds
traits per passmanager type -- seemed most natural.

llvm-svn: 25085
2006-01-04 07:47:13 +00:00
Chris Lattner 3f60c83911 Saem's patch #5 of the passmanager refactoring
llvm-svn: 25078
2006-01-04 05:02:04 +00:00
Chris Lattner afb8ee6d25 patch #4 in Saem's passmanager refactoring.
llvm-svn: 25077
2006-01-04 04:36:11 +00:00
Chris Lattner 6b52be6a89 implement constant folding of ==/!= on constant packed, simplify some code.
llvm-svn: 25074
2006-01-04 02:20:54 +00:00
Chris Lattner f0f4068196 implement constant folding for the element-wise binary operations
llvm-svn: 25073
2006-01-04 02:15:02 +00:00
Chris Lattner 1171d95d88 don't crash when trying to constant fold packed expressions.
llvm-svn: 25072
2006-01-04 02:03:29 +00:00
Chris Lattner c421a26792 Fix an assertion to allow constant folding of packed values
llvm-svn: 25071
2006-01-04 01:01:04 +00:00
Chris Lattner 6c10dee2fa silence some warnings
llvm-svn: 25066
2006-01-03 17:52:18 +00:00