Commit Graph

7130 Commits

Author SHA1 Message Date
Chris Lattner 236ced1487 All good classes with virtual functions should have virtual dtors...
llvm-svn: 7630
2003-08-06 05:39:03 +00:00
Chris Lattner bb43caeb95 Add an instruction selector emitter skeleton
llvm-svn: 7629
2003-08-06 04:47:56 +00:00
Chris Lattner 36498143ba convert over to using TableGen backends
llvm-svn: 7628
2003-08-06 04:36:35 +00:00
Chris Lattner 7179feb5e2 Switch code over to being a TableGenBackend
llvm-svn: 7627
2003-08-06 04:32:07 +00:00
Chris Lattner 4708d5ce31 Add more helper methods
llvm-svn: 7626
2003-08-06 04:31:26 +00:00
Chris Lattner 5f2e204a46 New common interface for backends to use
llvm-svn: 7625
2003-08-06 04:23:04 +00:00
Sumant Kowshik 5ca0380a65 Added POOLFLAGS option to run pool allocation
llvm-svn: 7624
2003-08-06 01:03:28 +00:00
Chris Lattner 9994870cb3 "fix" coding style stuff
Change some <>'s into &lt;&gt;'s

llvm-svn: 7623
2003-08-05 22:54:23 +00:00
Chris Lattner 385a6b2589 Completely eliminate the per-machine-instruction regsUsed set.
This substantially shrinks the size of each machine instruction, which should
make allocation faster and the cache footprint of the machine code lighter.

Here are some timings for code generation of the larger benchmarks we have.
This are timings of code generation phases of the X86 JIT, when compiled in
debug mode:

		Before	After	Diff
164.gzip:
  InstSel	0.0878	0.0722	-21.6%
  RegAlloc	0.2031	0.1757	-15.6%
  TOTAL		0.5585	0.4999	-11.7%
Ptrdist-bc:
  InstSel	0.0878	0.0722	-21.6%
  RegAlloc	0.2070	0.1933	- 7.1%
  TOTAL		0.6972	0.6464	- 7.9%
197.parser:
  InstSel	0.2148	0.2148	- 0.0%
  RegAlloc	0.4941	0.4277	-15.5%
  TOTAL		1.3749	1.2851	- 7.0%
175.vpr:
  InstSel	0.2519	0.2109	-19.4%
  RegAlloc	0.5976	0.5663	- 5.5%
  TOTAL		1.6933	1.6347	- 3.5%
254.gap:
  InstSel	1.1328	0.9921	-14.2%
  RegAlloc	2.6933	2.4804	- 8.6%
  TOTAL		7.7871	7.2499	- 7.4%

llvm-svn: 7622
2003-08-05 22:39:13 +00:00
Chris Lattner 30e987470f Use a new local data structure instead of the MachineInstr::regsUsed set
llvm-svn: 7621
2003-08-05 22:11:13 +00:00
Chris Lattner 92f5fb598c Add a map
llvm-svn: 7620
2003-08-05 22:09:31 +00:00
Chris Lattner e62a2a76e5 Minor cleanups
llvm-svn: 7619
2003-08-05 22:03:27 +00:00
Chris Lattner b05d3508d6 Physical registers no longer live in the regsUsed set for each machine instr
llvm-svn: 7618
2003-08-05 21:55:58 +00:00
Chris Lattner 020b544cbc Do not insert physical regsiters into the regsUsed set
llvm-svn: 7617
2003-08-05 21:55:20 +00:00
John Criswell 1943f88a79 Reverted back to using OR for cmp/mv operations for lex/yacc output.
The shell AND/OR operators short-circuit on command success/failure, which is
the inverse of exit status (i.e. 0 means success, non-zero means failure).

llvm-svn: 7616
2003-08-05 21:38:28 +00:00
John Criswell 4d79702a4c Switched from using diff to cmp for two reasons:
o Not all versions of diff have the -q option
	o The cmp program is probably faster than diff
Fixed the logic that only copies the file over if no differences are found.

llvm-svn: 7615
2003-08-05 21:21:58 +00:00
Tanya Lattner dc3c9a8545 Fixed minor bug in SafeToHoist and made some changes suggested by Chris.
llvm-svn: 7614
2003-08-05 20:39:02 +00:00
Tanya Lattner b96c7a6985 Added LICM test cases to:
1) Check that trapping instructionns that are not guaranteed to execute are not hoisted.
2) Check that trapping instructions that are guaranteed to execute are hoisted.

llvm-svn: 7613
2003-08-05 18:52:42 +00:00
Tanya Lattner 57c03df032 Fixed LICM bug that hoists trapping instructions that are not guaranteed to execute.
llvm-svn: 7612
2003-08-05 18:45:46 +00:00
Chris Lattner adc5a89a3b Minor changes:
* Expand most tabs into spaces
  * Move #define DEBUG_TYPE to top of file to avoid warning

llvm-svn: 7611
2003-08-05 18:44:12 +00:00
Chris Lattner 61182a2021 Add more verbose comment
llvm-svn: 7610
2003-08-05 18:38:37 +00:00
Chris Lattner 44309a112f Add a comment to the method decl
llvm-svn: 7609
2003-08-05 18:38:16 +00:00
Chris Lattner 3df51d517c Remove unused method
llvm-svn: 7608
2003-08-05 17:09:08 +00:00
Sumant Kowshik 766e284526 Added declaration of mergeInGlobalsGraph
llvm-svn: 7607
2003-08-05 17:06:18 +00:00
Sumant Kowshik 1d869b78f5 Added function mergeInGlobalsGraph which merges in the entire globals graph with the graph of a function
llvm-svn: 7606
2003-08-05 17:04:41 +00:00
Sumant Kowshik 0383a65103 Major bug fixes including a memory leak and tracking some exceptional conditions. Also added support for including global and indirect call information in the DS graphs used by the pool allocation
llvm-svn: 7605
2003-08-05 17:01:54 +00:00
Chris Lattner ee937c80ed Specify DEBUG_TYPE's for the JIT debug messages
llvm-svn: 7604
2003-08-05 17:00:32 +00:00
Chris Lattner 21343336d6 This method has now been changed to preserve flags for us!
llvm-svn: 7603
2003-08-05 16:59:24 +00:00
Chris Lattner cd4f4320b0 All callers of these methods actually wanted them to preserve the flags,
so get rid of the def/use parameters that were getting passed in.

**** This now changes the semantics of these methods to preserve the flags,
     not clobber them!

llvm-svn: 7602
2003-08-05 16:58:46 +00:00
Sumant Kowshik e815b78deb Added the declaration of InlineIndirectCalls
llvm-svn: 7601
2003-08-05 16:56:59 +00:00
Chris Lattner 1d6ba3e359 Factor shared code
llvm-svn: 7600
2003-08-05 16:34:44 +00:00
Chris Lattner edc8c54e16 Fix bug: SimplifyCFG/2003-08-05-InvokeCrash.ll
Fix bug: SimplifyCFG/2003-08-05-MishandleInvoke.ll

llvm-svn: 7599
2003-08-05 16:27:44 +00:00
Chris Lattner cc88b0ad42 new testcases that simplifycfg breaks
llvm-svn: 7598
2003-08-05 16:11:36 +00:00
Misha Brukman 1e88cfb42e * Removed `using' declaration, now use full namespace qualifier std::string
* Simplified code by using an inline function instead of copy-pasted code

llvm-svn: 7597
2003-08-05 16:01:50 +00:00
Chris Lattner d1e2aaef4f If we're debugging the SimplifyCFG pass, we _REALLY_ don't want to use it for
narrowing, no matter what.

llvm-svn: 7596
2003-08-05 15:51:05 +00:00
Chris Lattner 463d6a5e7c Implement TODO: print out short form of Invoke if possible
llvm-svn: 7595
2003-08-05 15:34:45 +00:00
Misha Brukman 689398fe76 Only test the vector of functions if it is non-empty.
llvm-svn: 7594
2003-08-05 15:26:21 +00:00
Misha Brukman 790a6f5e6c Stop special-casing annul and predict bits (which are Sparc-specific anyway)
since those bits are now hard-coded in Sparc*.td files.

llvm-svn: 7593
2003-08-05 14:35:35 +00:00
Misha Brukman 5c68269dfd * Set annul bit to be 0, because the Sparc backend currently does not use it.
* Use the name of the predict field instead of just the const 1 in the
  Instruction.

llvm-svn: 7592
2003-08-05 14:34:38 +00:00
Chris Lattner 92a199dca7 Fix bugs handling ESP in alloca references
llvm-svn: 7591
2003-08-05 04:13:58 +00:00
Chris Lattner 9c9b4c54fa No functional changes, comment the fix I just put in
llvm-svn: 7590
2003-08-05 03:59:01 +00:00
Chris Lattner 01349f463c The CodeEmitterGenerator used to consider ANY uninitialized field as being an
operand (unless it's annul or predict).  Now we only consider fields to be
operands if they are uninitialized AND used in the "Inst" field.

llvm-svn: 7589
2003-08-05 03:53:04 +00:00
Chris Lattner 506fa6843e Revert previous change, and be really anal about what physical registers can do.
llvm-svn: 7588
2003-08-05 00:49:09 +00:00
Chris Lattner 7c257321c7 This is the real fix for the previous register allocator problem.
Physical registers should not float around.

llvm-svn: 7587
2003-08-05 00:48:47 +00:00
Misha Brukman f7586ceeb2 Reformatted code to match the prevalent LLVM style; fit code into 80 columns.
llvm-svn: 7586
2003-08-05 00:02:06 +00:00
Misha Brukman 8f7304a32d ElectricFence found this bug where we were reading past the vector boundary.
llvm-svn: 7585
2003-08-04 23:48:40 +00:00
Chris Lattner 4b637cc666 Don't bother calculating info unless its needed. May reduce number of stack slots created.
llvm-svn: 7584
2003-08-04 23:42:37 +00:00
Chris Lattner 815b85e3ba * Fix spelling of 'necessary'
* Add a lot more DEBUG output, which is better structured than before
* Fix bug: Jello/2003-08-04-PhysRegLiveFailure.llx

llvm-svn: 7583
2003-08-04 23:36:39 +00:00
Chris Lattner 732a3883ed New testcase, identified by Vikram, reduced by Brian
llvm-svn: 7582
2003-08-04 23:28:44 +00:00
Chris Lattner 148747e162 Add patterns for (mov R, R) (mov R, I) and subtracts. The moves are to enable
testing, the subtracts are because I was in the neighborhood.

llvm-svn: 7581
2003-08-04 21:18:19 +00:00