Chris Lattner
9b3d989cb7
Initial implementation of the JIT interfaces. Relocation is done and stubs
...
for external functions work. CompilationCallback has not been written, and
stubs for internal functions are not generated yet. This means you can call
printf and exit, and use global variables, but cannot call functions local to
a module yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18145 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 06:02:06 +00:00
Chris Lattner
e94c517bb5
Emit relocations for the global variable using instructions. This gets us
...
LA, LOADHiAddr, CALLpcrel, and MovePCtoLR working, though the constant pool
probably is not right.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18144 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:59:53 +00:00
Chris Lattner
163393732a
Implement all of the methods
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18142 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:57:57 +00:00
Chris Lattner
42edd31209
Initial checkin of the 32-bit PPC relocation types
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18141 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:57:38 +00:00
Chris Lattner
e4fce6f19c
Move JITInfo from PPCTM to PPC32TM
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18140 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:56:40 +00:00
Chris Lattner
942d7b5a68
Do not provide the non-specialized PowerPCJITInfo object, it is pretty useless.
...
Instead, let derived classes provide specialized ones.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18139 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:55:38 +00:00
Chris Lattner
6540c6c344
LA is really addi. Be consistent with operand ordering to avoid confusing the code emitter
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18138 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 05:54:25 +00:00
Tanya Lattner
e9cf6b9278
Changed the CreateCodeToLoadConst function to preserve SSA form. This basically means adding extra tmp instructions for intermediate values.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18137 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-23 04:22:29 +00:00
Chris Lattner
f2190b39d0
Remove some dead code
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18136 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 23:07:22 +00:00
Chris Lattner
dd99885da3
Comment out a couple of unused instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18135 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 23:07:01 +00:00
Chris Lattner
90b1b457ef
Do not push two return addresses on the stack when we call external functions who have their addresses taken. This fixes test-call.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18134 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 22:25:30 +00:00
Chris Lattner
213c969c92
Disable this.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18130 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:51:40 +00:00
Chris Lattner
99b394db15
This chunk of code needs to be rewritten
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18127 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:45:54 +00:00
Chris Lattner
2eeda6ed8f
Remove some dead vars and some useless namespacification
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18126 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:42:40 +00:00
Chris Lattner
befc374904
Implement a disgusting hack to work around broken machine code emission of
...
the RDCCR instruction. This fixes a bunch of programs with the JIT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18124 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 21:25:10 +00:00
Tanya Lattner
e1df212fb3
Fixed a bug where I was trying to ModuloSchedule a loop with no instructions but a terminator.
...
Fixed a bug in the schedule generation that was always using the start cycle.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18123 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:41:24 +00:00
Chris Lattner
54a4d6a3cd
Remove JIT-specific code from the code emitter.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18122 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:25:10 +00:00
Chris Lattner
dee0c4b000
New methods implemented
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18121 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:24:42 +00:00
Chris Lattner
534ac45604
Implement the Sparc JIT interfaces, including relocation support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18120 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 20:24:27 +00:00
Brian Gaeke
9ffcf9fddd
Add stub method for long shift codegen.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18100 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 08:02:06 +00:00
Brian Gaeke
6f0b77221c
Update to-do list.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18099 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 08:02:05 +00:00
Chris Lattner
5fd738f0a6
Initial checkin of the V9 relocation types
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18095 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-22 00:40:51 +00:00
Brian Gaeke
c7b4f1033f
Implement setcc on longs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18088 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 08:11:28 +00:00
Brian Gaeke
4351857d78
Add all the rest of the ADD and SUB variants, some of which are important for
...
64-bit support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18087 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 07:13:17 +00:00
Brian Gaeke
5f91de2b38
Support add, sub, mul, div, rem on longs/ulongs (latter 3 by emitting libcalls).
...
Add a big comment containing my notes on how to do setcc for longs/ulongs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18086 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 07:13:16 +00:00
Brian Gaeke
b10fc0343f
Update to-do list.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18085 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 07:13:15 +00:00
Nate Begeman
486ebfd704
Fix Shootout-C++/wc, which was broken by my recent changes to emit fewer
...
reg-reg copies. The necessary conditions for this bug are a GEP that is
used outside the basic block in which it is defined, whose components
other than the pointer are all constant zero, and where the use is
selected before the definition (backwards branch to successsor block).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18084 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 05:14:06 +00:00
Chris Lattner
88f9386cfe
There is no reason to emit function stubs for direct calls.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18082 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:46:06 +00:00
Brian Gaeke
79fe833411
Fix extraStack calculation -- I think in fact it might be getting a bit *too*
...
much stack, but that's better than not enough, which leads to miscompilations.
Fix FP vaarg.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18079 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:35:22 +00:00
Brian Gaeke
e1e2899e96
Update list of failing benchmarks & to-do list.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18078 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 03:35:21 +00:00
Chris Lattner
7fc3824835
ignore generated files
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18073 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 00:01:54 +00:00
Chris Lattner
cdc79e3763
ignore generated files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18072 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-21 00:00:54 +00:00
Chris Lattner
e72e445ed5
Remove all JIT specific code and switch the code generator over to emitting
...
relocations for global references.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18068 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:55:15 +00:00
Chris Lattner
7ddde32ead
Implement the X86 JIT interfaces
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18067 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:54:33 +00:00
Chris Lattner
8dad013038
Describe the X86 target-specific relocations.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18066 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:54:19 +00:00
Chris Lattner
89d64e262c
We implement these interfaces
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18065 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:53:56 +00:00
Chris Lattner
3bf285a676
Adjust to changed interfaces
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18064 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 23:53:26 +00:00
Brian Gaeke
b95cbee930
Support most cases of vaarg (except double).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18055 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 22:50:42 +00:00
Brian Gaeke
087f0858ef
Update failing test cases & to-do list.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18054 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 22:50:41 +00:00
Chris Lattner
f6f0989754
This method was never implemented
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18039 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:19:47 +00:00
Chris Lattner
1deb74d7ee
Remove this method, it's not clear how it could be implemented indep of 32 or 64-bit mode
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18038 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:17:17 +00:00
Chris Lattner
b443bc0da7
getJITStubForFunction is optional and unimplemented, just remove it for now.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18037 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:15:38 +00:00
Chris Lattner
a8b0fa5172
getJITStubForFunction is optional and unimplemented, just remove it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18036 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 04:14:44 +00:00
Brian Gaeke
e6e7e3aadd
Implement vacopy and vanext.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18031 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 03:32:12 +00:00
Misha Brukman
1dc555c0d3
Revert the patch that adds Function* for each 64-bit libc div/mul/rem that we
...
want to do; instead, we can use MachineInstr::addExternalSymbol(char*, bool) and
thus we don't have to modify the Module as we are code generating for it
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18025 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-20 00:10:20 +00:00
Tanya Lattner
def5745314
Made modsched hidden and changed so it matches the style of other options.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18024 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 23:34:33 +00:00
Misha Brukman
d42b167e61
Fix grammar
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18023 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 23:09:40 +00:00
Misha Brukman
d159aafc26
Add protoypes for 64-bit long/ulong div, mul, and rem functions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18019 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 22:14:35 +00:00
Misha Brukman
c29e6a4f16
Fix file comment header
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18018 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 22:09:21 +00:00
Misha Brukman
c11c44f55b
Handle GhostLinkage case for completeness (should not be seen by the asm writer)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18015 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 21:49:19 +00:00
Brian Gaeke
b6c409a13d
Add VANext and VAArg stubs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18012 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 21:08:18 +00:00
Brian Gaeke
d90282db12
Implement va_start.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18011 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:57:24 +00:00
Chris Lattner
3104db054a
Dont' forget to switch back to decimal output
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18010 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:57:07 +00:00
Brian Gaeke
4e459c465e
First part of varargs support: getting all varargs which could possibly
...
be in registers into memory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18006 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 20:31:08 +00:00
Brian Gaeke
2f95ed65e0
va_end can safely be codegen'd to nothing on v8.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18004 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 19:21:34 +00:00
Brian Gaeke
9e672a2d1b
A very sorry stub implementation of varargs intrinsics...
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18003 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 18:53:59 +00:00
Brian Gaeke
507bc71820
Update list of expected test failures.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18002 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 18:48:29 +00:00
Brian Gaeke
a54df2503b
Fix bug in casting to long/ulong.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18001 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 18:48:10 +00:00
Nate Begeman
bc3a5378d0
Eliminate another 6k register copies that the register allocator would just
...
coalesce out of hbd. Speeds up compilation by 2% (0.6s)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17987 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 08:01:16 +00:00
Nate Begeman
8531f6f42a
Generate fewer reg-reg copies for the register allocator to deal with.
...
This eliminates over 2000 in hbd alone.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17973 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-19 02:06:40 +00:00
Tanya Lattner
a9aa809935
Fixed to fit in 80 columns.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17961 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 18:47:29 +00:00
Tanya Lattner
75e8419e48
Adding option to llc for ModuloScheduling. By default it is turned off.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17959 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 18:38:01 +00:00
Brian Gaeke
7c0afe04ab
Rewrite LoadArgumentsToVirtualRegs, making it match almost exactly how
...
visitCallInst works. Support cast of byte/short/int to long.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17949 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 07:43:33 +00:00
Brian Gaeke
7ba2a43866
Update current expected failures list - expand it to include all of
...
SingleSource. Update to-do list (open-coding refers to binary operations on
longs, not to passing them into functions, which we already support.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17948 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 07:43:32 +00:00
Nate Begeman
db869aad8c
Eliminate another common source of moves that the register allocator
...
shouldn't be forced to coalesce for us: folded GEP operations. This too
fires thousands of times across the testsuite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17947 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 07:22:46 +00:00
Nate Begeman
1f5308e5b5
When accessing the base register for global variables, use the register
...
directly rather than making a copy for the register allocator to coalesce.
This kills thousands of live intervals across the testsuite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17946 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 06:51:29 +00:00
Nate Begeman
0113638073
Clean up and fix cast codegen by removing cases that are handled elsewhere,
...
and properly emitting signed short to unsigned int. This fixes the last
regression vs. the CBE, MultiSource/Applications/hbd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17942 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 04:56:53 +00:00
Brian Gaeke
4b92ed6d58
Allocate fewer registers and tighten up alignment restrictions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17929 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-18 00:25:20 +00:00
Brian Gaeke
c935cf111c
Update to-do list.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17927 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 22:33:55 +00:00
Brian Gaeke
b662963d3b
Update list of failing SingleSource Benchmarks
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17926 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 22:33:28 +00:00
Brian Gaeke
b3e0017763
We were (somehow) getting the wrong branch opcode for setcc float instrs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17925 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-17 22:06:56 +00:00
Tanya Lattner
ced8222405
Added my own defMap. Only saving values that are not loop invariant. Fixed a couple of assertions that were triggered due to registers not being allocated. These both had to do with PHINodes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17907 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 21:31:37 +00:00
Chris Lattner
39a83dc37c
Fix a major bug in the signed shr code, which apparently only breaks 134.perl!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17902 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 18:40:52 +00:00
Brian Gaeke
4cda591341
Update list of failing benchmarks
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17895 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 07:32:58 +00:00
Brian Gaeke
b354b7148e
Correct the implicit-defs information for indirect and direct calls.
...
You can't have implicit defs that overlap explicit defs, or implicit
defs that alias one another.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17894 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 07:32:09 +00:00
Chris Lattner
eea9b134fc
Simplify namespaces
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17870 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 04:47:33 +00:00
Chris Lattner
8f1ac9f90d
Remove a dead function, which died when we got GAS emission working (phwew,
...
hold your nose!)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17869 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 04:34:29 +00:00
Chris Lattner
f2d552eca6
Implement a simple FIXME: if we are emitting a basic block address that has
...
already been emitted, we don't have to remember it and deal with it later,
just emit it directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17868 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 04:30:51 +00:00
Chris Lattner
16fe6f5f24
* Merge some win32 ifdefs together
...
* Get rid of "emitMaybePCRelativeValue", either we want to emit a PC relative
value or not: drop the maybe BS. As it turns out, the only places where
the bool was a variable coming in, the bool was a dynamic constant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17867 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-16 04:21:18 +00:00
Chris Lattner
5aa3ed92de
Add debug-only=jit printout, so we see when lazily resolved symbols are
...
set up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17862 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 23:16:55 +00:00
Chris Lattner
36c625d3a5
Simplify and rearrange long shift code
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17861 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 23:16:34 +00:00
Misha Brukman
145a5a3746
Add BCTR and LWZU instruction opcodes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17851 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 21:20:09 +00:00
Brian Gaeke
766d6f3b59
Update list of failing Benchmarks.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17823 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 05:57:26 +00:00
Brian Gaeke
f28688e527
Expand Defs to encompass all the possibly-call-clobbered regs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17822 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-15 05:56:53 +00:00
Misha Brukman
d2691fdf18
GhostLinkage should not reach asm printing stage
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17750 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:03:49 +00:00
Misha Brukman
3a8a42a9b4
Handle GhostLinkage (should not ever reach the assembly printing stage!)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17749 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 21:03:30 +00:00
Misha Brukman
fc256599b3
Fix build on Linux/PowerPC64 using SuSE GCC (#undef PPC)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17744 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 20:34:01 +00:00
Brian Gaeke
da9b3668c2
Fix problem with insertion point for ADJCALLSTACKDOWN.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17733 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 06:32:08 +00:00
Brian Gaeke
5179e41d6e
Update lists of failing unit tests.
...
Exclude bigfib, so that we effectively exclude all C++ benchmarks.
Update to-do list: mention va_start.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17732 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 06:32:07 +00:00
Brian Gaeke
04fe7477b1
Fix NotTest - round up extraStack to the nearest doubleword, if it is
...
not zero.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17728 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 05:19:00 +00:00
Brian Gaeke
b31a828533
Update failing Benchmarks; point out that I'm skipping Shootout-C++.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17725 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 04:43:12 +00:00
Brian Gaeke
1c745818ff
Update expected UnitTests failures.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17723 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 03:22:08 +00:00
Brian Gaeke
24b90c3647
Rewrite outgoing arg handling to handle more weird corner cases.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17722 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 03:22:07 +00:00
Brian Gaeke
54799c2a51
Support UndefValue emission.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17721 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-14 03:22:05 +00:00
Chris Lattner
4b2c09fa22
Don't print unneeded labels
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17714 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 23:27:11 +00:00
Chris Lattner
4394d51467
Hack around stupidity in GCC, fixing Burg with the CBE and
...
CBackend/2004-11-13-FunctionPointerCast.llx
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17710 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 22:21:56 +00:00
Chris Lattner
ce7cafa960
shld is a very high latency operation. Instead of emitting it for shifts of
...
two or three, open code the equivalent operation which is faster on athlon
and P4 (by a substantial margin).
For example, instead of compiling this:
long long X2(long long Y) { return Y << 2; }
to:
X3_2:
movl 4(%esp), %eax
movl 8(%esp), %edx
shldl $2, %eax, %edx
shll $2, %eax
ret
Compile it to:
X2:
movl 4(%esp), %eax
movl 8(%esp), %ecx
movl %eax, %edx
shrl $30, %edx
leal (%edx,%ecx,4), %edx
shll $2, %eax
ret
Likewise, for << 3, compile to:
X3:
movl 4(%esp), %eax
movl 8(%esp), %ecx
movl %eax, %edx
shrl $29, %edx
leal (%edx,%ecx,8), %edx
shll $3, %eax
ret
This matches icc, except that icc open codes the shifts as adds on the P4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17707 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 20:48:57 +00:00
Chris Lattner
62f5a9402c
Add missing check
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17706 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 20:04:38 +00:00
Chris Lattner
44205cadba
Compile:
...
long long X3_2(long long Y) { return Y+Y; }
int X(int Y) { return Y+Y; }
into:
X3_2:
movl 4(%esp), %eax
movl 8(%esp), %edx
addl %eax, %eax
adcl %edx, %edx
ret
X:
movl 4(%esp), %eax
addl %eax, %eax
ret
instead of:
X3_2:
movl 4(%esp), %eax
movl 8(%esp), %edx
shldl $1, %eax, %edx
shll $1, %eax
ret
X:
movl 4(%esp), %eax
shll $1, %eax
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17705 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-13 20:03:48 +00:00
John Criswell
546faca4ef
Correct the name of stosd for the AT&T syntax:
...
It's stosl (l for long == 32 bit).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17658 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-10 04:48:15 +00:00
Nate Begeman
a591457857
Allow hbd to be bugpointable on darwin by fixing common and linkonce codegen
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17637 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-09 04:01:18 +00:00
Nate Begeman
676dee6ae9
Put int the getReg cast optimization from x86 so that we generate fewer
...
move instructions for the register allocator to coalesce.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17608 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-08 02:25:40 +00:00
Nate Begeman
075cdc655e
Disable bogus cast elimination when the cast is used by a setcc instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17583 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 20:23:42 +00:00
Chris Lattner
26818012e3
Decompose* is V9 specific, make it internal
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17547 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 00:43:24 +00:00
Chris Lattner
64a26c7bf8
Move this file from lib/Transforms/Scalar
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17544 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-07 00:39:09 +00:00
John Criswell
e5cda8e727
Fix compilation problem; make the cast and the LHS be the same type.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17488 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-05 16:17:06 +00:00
Chris Lattner
141e3fd81d
Quiet VC++ warnings
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17484 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-05 04:50:59 +00:00
Nate Begeman
28dd2fc240
Thanks to sabre for pointing out that we were incorrectly codegen'ing
...
int test(int x) { return 32768 - x; }
Fixed by teaching the function that checks a constant's validity to be used
as an immediate argument about subtract-from instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17476 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-04 19:43:18 +00:00
Brian Gaeke
6931fd61c0
Handle "call" operands of type long/ulong passed in registers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17464 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-04 00:27:04 +00:00
Chris Lattner
da6122f61d
Fix this function to not say that longs have 8-byte alignment on X86/PPC.
...
This method is really a gross hack, but at least we can make it work on
the targets we support right now.
This bug fix stops a crash in a testcase reduced from 176.gcc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17443 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 22:18:18 +00:00
Tanya Lattner
80f085500f
Added gross hacks such as creating my own def-use map, and picking on Instruction that I can add all my TmpInstructions to its MCFI.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17441 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 21:04:56 +00:00
Chris Lattner
a62869b064
Fix a warning
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17431 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-02 15:27:57 +00:00
Chris Lattner
7cc372bfc3
Add placeholder variable to make Win32 work, applied for Morten Ofstad
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17406 91177308-0d34-0410-b5e6-96231b3b80d8
2004-11-01 20:10:20 +00:00
Reid Spencer
cc2d1e25f3
Internalize variable names to prevent recursive assignment. Cleanup docs.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17359 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-30 09:19:36 +00:00
Tanya Lattner
260652a7af
Fixed bug with infinite epilogues.
...
Fixed issue with generating the partial order. It now adds the nodes not in recurrences in sets for each connected component.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17351 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-30 00:39:07 +00:00
Brian Gaeke
b982c42e65
Change name of target lib to conform to new naming scheme.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17347 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-29 21:57:16 +00:00
Brian Gaeke
b13fac70ca
Remove dependency on MRegisterInfo::getRegClass
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17346 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-29 21:42:27 +00:00
Reid Spencer
6cb21d443e
Change Library Names Not To Conflict With Others When Installed
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17286 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-27 23:18:45 +00:00
Nate Begeman
0aafc3289c
Move destructor out of line to avoid vtable emission in every file that includes the header. Thanks to sabre.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17278 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-27 06:00:53 +00:00
Nate Begeman
4c3480169b
Fix the build by eliminating some more dead code. That'll learn me not to listen to Reid
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17275 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-27 05:44:23 +00:00
Nate Begeman
b9cad90aeb
Remove include of MRegisterInfo.h, since it is already included by
...
SkeletonGenRegisterInfo.h.inc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17245 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-26 06:04:23 +00:00
Nate Begeman
17304c393e
Remove file that is no longer used, and move include of MRegisterInfo.h
...
from PowerPCFrameInfo.h to PowerPCAsmPrinter.cpp where it is actually
needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17244 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-26 06:02:38 +00:00
Nate Begeman
dfd0e7bc34
Eliminate usage of MRegisterInfo::getRegClass(physreg)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17240 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-26 05:40:45 +00:00
Nate Begeman
4a0de07e78
Update to-do list
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17235 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-26 04:10:53 +00:00
Nate Begeman
9b508c3619
Fix treecc. Also fix a latent bug in emitBinaryConstOperation that would
...
allow and const, 0 to be incorrectly codegen'd into a rlwinm instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17234 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-26 03:48:25 +00:00
Chris Lattner
097714b319
Disable the JIT until it can sorta kinda work.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17230 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-25 20:53:41 +00:00
Chris Lattner
f1ac33d690
Remove dead assert
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17221 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-25 19:04:01 +00:00
John Criswell
408f9995a1
Removed dead method, printPHICopiesForSuccessors().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17216 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-25 18:41:50 +00:00
John Criswell
30cc227fa7
Modified switch generation so that only the phi values associated with the
...
destination basic block are copied.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17212 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-25 18:30:09 +00:00
Nate Begeman
905a29152f
Implement more complete and correct codegen for bitfield inserts, as tested
...
by the recently committed rlwimi.ll test file. Also commit initial code
for bitfield extract, although it is turned off until fully debugged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17207 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-24 10:33:30 +00:00
Misha Brukman
d4b4a99587
* Correctly handle the MovePCtoLR pseudo-instr with a bl to next instr
...
* Stop the confusion of using rv and Addr for global addresses: just use rv
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17195 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-23 23:47:34 +00:00
Misha Brukman
40a55e1e29
Add BA, BL, and BLA opcodes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17193 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-23 20:29:24 +00:00
Misha Brukman
a4df350ba1
* Do not emit IMPLICIT_DEF pseudo-instructions
...
* Convert register numbers from their opcode value to the real value, e.g.
PPC::R1 => 1 and PPC::F1 => 1
* Add correct handling of loading of global values which are PC-relative --
implement ha16() and lo16()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17190 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-23 18:28:01 +00:00
Misha Brukman
bd7780bc60
DForm_1, particularly used by store instructions, needs the immediate operand to
...
be listed second as that is how the instructions are usually created (and is the
correct asm syntax) so that it's assembled correctly from its constituents
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17183 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-23 06:08:38 +00:00
Misha Brukman
da8d96d1a1
Fix the SPR field for MTLR, MFLR, MTCTR, and MFCTR instructions.
...
The decimal value given in the manual (8 or 9) really needs to be multiplied by
a factor of 32 because of the group of 5 zero bits after the register code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17182 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-23 06:05:49 +00:00
Misha Brukman
15f74b3f4f
The value of the XO field for MFLR and MFCTR is 339, not 399
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17181 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-23 05:38:55 +00:00
Misha Brukman
bb48249414
Remove extraneous blank line
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17180 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-23 04:59:22 +00:00
Misha Brukman
3a060e5279
Align function arguments in function headers
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17178 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-23 04:58:32 +00:00
Nate Begeman
31dfc52b81
Kill casts from integer types to unsigned byte, when the cast was only used
...
as the shift amount operand to a shift instruction. This was causing us to
emit unnecessary clear operations for code such as:
int foo(int x) { return 1 << x; }
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17175 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-23 00:50:23 +00:00
Reid Spencer
b8d5570e95
Clean up the output from this makefile so its not verbose.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17173 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-22 23:24:39 +00:00
Misha Brukman
6b9ae58c52
Adjust rules for building .inc files due to Reid's changes of Makefile.rules
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17169 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-22 22:16:24 +00:00
Reid Spencer
8c2c3152d6
Adjust to changes in Makefile.rules
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17167 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-22 21:02:08 +00:00
Reid Spencer
cac731ecbe
We won't use automake
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17155 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-22 03:35:04 +00:00
Misha Brukman
9691a898c7
Remove debug code emitter from the JIT
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17151 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-21 03:07:38 +00:00
Alkis Evlogimenos
4f9a6c30a2
Make this compile.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17150 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-21 02:44:16 +00:00
Misha Brukman
3070e2ff79
* Added basic support for JITing functions, basic blocks, instruction encoding,
...
including registers, constants, and partial support for global addresses
* The JIT is disabled by default to allow building llvm-gcc, which wants to test
running programs during configure
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17149 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-21 01:42:02 +00:00
Nate Begeman
0797d4905a
Don't clear or sign extend bool->int. This fires a few dozen times on the test suite
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17147 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-20 21:55:41 +00:00
John Criswell
57bbfcec91
Small performance improvement in generated C code:
...
Instead of unconditionally copying all phi node values into temporaries for
all successor blocks, generate code that will determine what successor
block will be called and then copy only those phi node values needed by
the successor block.
This seems to cut down namd execution time from being 8% higher than GCC to
4% higher than GCC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17144 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-20 14:38:39 +00:00
Misha Brukman
d8e6e7f563
* Add baseline structural JIT code, but disable the JIT to allow llvm-gcc builds
...
- Support added for functions, basic blocks, constant pool, constants,
registers, and some basic support for globals, all untested
* Turn assert()s into abort()s so that unimplemented functions fail in release
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17143 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-19 19:49:42 +00:00
Brian Gaeke
849c7b5708
Simplify mapping info generation. In particular, the LLVM-to-MachineInstr map
...
is no longer emitted, and we do not reference any MachineCodeForInstruction
information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17138 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-19 05:15:21 +00:00
Reid Spencer
86d341b204
Initial automake generated Makefile template
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17136 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-18 23:55:41 +00:00
Chris Lattner
7d0974b9a0
Improve compatibility with VC++, patch contributed by Morten Ofstad!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17126 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-18 15:54:17 +00:00
Chris Lattner
963869e41a
Print a semicolon for the unreacahble instruction. This fixes problems
...
where C requires semicolons in some cases to indicate null statements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17107 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 23:49:11 +00:00
Nate Begeman
fcf4a42cdf
Generate correct stubs for weak-linked symbols
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17101 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 23:01:34 +00:00
Chris Lattner
665825e58e
The first hunk corrects a bug when printing undef null values. We would print
...
0->field, which is illegal. Now we print ((foo*)0)->field.
The second hunk is an optimization to not print undefined phi values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17094 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 17:48:59 +00:00
Chris Lattner
611fb259ba
Don't print stuff out from the code generator. This broke the JIT horribly
...
last night. :) bork!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17093 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 17:40:50 +00:00
Reid Spencer
ec660ae754
Make the library name SparcV9 specific
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17089 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 15:01:12 +00:00
Reid Spencer
26dde42381
Consolidate the definitions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17088 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 15:00:26 +00:00
Reid Spencer
761920301d
PPC32GenCodeEmitter instead of PowerPCGenCodeEmitter
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17087 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 14:59:38 +00:00
Chris Lattner
56a31c69c8
Rewrite support for cast uint -> FP. In particular, we used to compile this:
...
double %test(uint %X) {
%tmp.1 = cast uint %X to double ; <double> [#uses=1]
ret double %tmp.1
}
into:
test:
sub %ESP, 8
mov %EAX, DWORD PTR [%ESP + 12]
mov %ECX, 0
mov DWORD PTR [%ESP], %EAX
mov DWORD PTR [%ESP + 4], %ECX
fild QWORD PTR [%ESP]
add %ESP, 8
ret
... which basically zero extends to 8 bytes, then does an fild for an
8-byte signed int.
Now we generate this:
test:
sub %ESP, 4
mov %EAX, DWORD PTR [%ESP + 8]
mov DWORD PTR [%ESP], %EAX
fild DWORD PTR [%ESP]
shr %EAX, 31
fadd DWORD PTR [.CPItest_0 + 4*%EAX]
add %ESP, 4
ret
.section .rodata
.align 4
.CPItest_0:
.quad 5728578726015270912
This does a 32-bit signed integer load, then adds in an offset if the sign
bit of the integer was set.
It turns out that this is substantially faster than the preceeding sequence.
Consider this testcase:
unsigned a[2]={1,2};
volatile double G;
void main() {
int i;
for (i=0; i<100000000; ++i )
G += a[i&1];
}
On zion (a P4 Xeon, 3Ghz), this patch speeds up the testcase from 2.140s
to 0.94s.
On apoc, an athlon MP 2100+, this patch speeds up the testcase from 1.72s
to 1.34s.
Note that the program takes 2.5s/1.97s on zion/apoc with GCC 3.3 -O3
-fomit-frame-pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17083 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 08:01:28 +00:00
Chris Lattner
07306de06e
Unify handling of constant pool indexes with the other code paths, allowing
...
us to use index registers for CPI's
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17082 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 07:49:45 +00:00
Chris Lattner
0e0ed85697
Give the asmprinter the ability to print memrefs with a constant pool index,
...
index reg and scale
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17081 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 07:16:32 +00:00
Chris Lattner
de95c9e0bb
fold:
...
%X = and Y, constantint
%Z = setcc %X, 0
instead of emitting:
and %EAX, 3
test %EAX, %EAX
je .LBBfoo2_2 # UnifiedReturnBlock
We now emit:
test %EAX, 3
je .LBBfoo2_2 # UnifiedReturnBlock
This triggers 581 times on 176.gcc for example.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17080 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 06:10:40 +00:00
Chris Lattner
9894cd300e
All of these labels are off by one now that the unreachable instruction exists
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17079 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 05:37:47 +00:00
Nate Begeman
1b75022cd3
Implement bitfield insert by recognizing the following pattern:
...
1. optional shift left
2. and x, immX
3. and y, immY
4. or z, x, y
==> rlwimi z, x, y, shift, mask begin, mask end
where immX == ~immY and immX is a run of set bits. This transformation
fires 32 times on voronoi, once on espresso, and probably several
dozen times on external benchmarks such as gcc.
To put this in terms of actual code generated for
struct B { unsigned a : 3; unsigned b : 2; };
void storeA (struct B *b, int v) { b->a = v;}
void storeB (struct B *b, int v) { b->b = v;}
Old:
_storeA:
rlwinm r2, r4, 0, 29, 31
lwz r4, 0(r3)
rlwinm r4, r4, 0, 0, 28
or r2, r4, r2
stw r2, 0(r3)
blr
_storeB:
rlwinm r2, r4, 3, 0, 28
rlwinm r2, r2, 0, 27, 28
lwz r4, 0(r3)
rlwinm r4, r4, 0, 29, 26
or r2, r2, r4
stw r2, 0(r3)
blr
New:
_storeA:
lwz r2, 0(r3)
rlwimi r2, r4, 0, 29, 31
stw r2, 0(r3)
blr
_storeB:
lwz r2, 0(r3)
rlwimi r2, r4, 3, 27, 28
stw r2, 0(r3)
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17078 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 05:19:20 +00:00
Chris Lattner
7ff5a32a48
I forgot that sparc no longer uses the shared asmwriter. Give it support
...
for undef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17075 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 02:44:45 +00:00
Chris Lattner
d14d5b4223
Add support for unreachable and undef
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17074 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-17 02:42:42 +00:00
Nate Begeman
2d4c98d79b
Finally fix one of the oldest FIXMEs in the PowerPC backend: correctly
...
flag rotate left word immediate then mask insert (rlwimi) as a two-address
instruction, and update the ISel usage of the instruction accordingly.
This will allow us to properly schedule rlwimi, and use it to efficiently
codegen bitfield operations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17068 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-16 20:43:38 +00:00
Chris Lattner
9270efcc5f
Fix fix fix
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17057 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-16 18:21:50 +00:00
Chris Lattner
5a083b81c4
Add support for undef and unreachable
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17051 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-16 18:14:10 +00:00
Chris Lattner
289a49ab7d
ADd support for undef and unreachable
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17050 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-16 18:13:47 +00:00
Chris Lattner
30483b0c84
Teach the X86 backend about unreachable and undef. Among other things, we
...
now compile:
'foo() {}' into "ret" instead of "mov EAX, 0; ret"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17049 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-16 18:13:05 +00:00
Chris Lattner
a9d12c0a56
Add support for unreachable and undef
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17048 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-16 18:12:13 +00:00
Chris Lattner
b7a16ce3b1
Add a missing dependency
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17031 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-16 17:12:55 +00:00
Chris Lattner
f146ab1e51
Fix file header
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17030 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-16 16:37:42 +00:00
Chris Lattner
358a9027a8
Instruction select globals with offsets better. For example, on this test
...
case:
int C[100];
int foo() {
return C[4];
}
We now codegen:
foo:
mov %EAX, DWORD PTR [C + 16]
ret
instead of:
foo:
mov %EAX, OFFSET C
mov %EAX, DWORD PTR [%EAX + 16]
ret
Other impressive features may be coming later.
This patch is contributed by Jeff Cohen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17011 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-15 05:05:29 +00:00
Chris Lattner
8cce7cd0ae
Give the X86 JIT the ability to encode global+disp constants. Patch
...
contributed by Jeff Cohen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17010 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-15 04:53:13 +00:00
Chris Lattner
d416f086cc
Give the X86 asm printer the ability to print out addressing modes that have
...
constant displacements from global variables. Patch by Jeff Cohen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17009 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-15 04:44:53 +00:00
Chris Lattner
fb3d844e50
Allow X86 addressing modes to represent globals with offsets. Patch contributed
...
by Jeff Cohen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17008 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-15 04:43:20 +00:00
Nate Begeman
e0c83a86b0
Better codegen of binary integer ops with 32 bit immediate operands.
...
This transformation fires a few dozen times across the testsuite.
For example, int test2(int X) { return X ^ 0x0FF00FF0; }
Old:
_test2:
lis r2, 4080
ori r2, r2, 4080
xor r3, r3, r2
blr
New:
_test2:
xoris r3, r3, 4080
xori r3, r3, 4080
blr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17004 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-15 00:50:19 +00:00
Misha Brukman
d36047dbdb
The field is called imm22', not simply
imm'
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17003 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 22:33:32 +00:00
Misha Brukman
3df04c58fc
Synthetic instructions RET and RETL need to have all 3 parameters specified
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17002 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 22:32:49 +00:00
Misha Brukman
45a68268a4
Class F2_1 already inherits the imm22 field from class F2
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17001 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 22:32:24 +00:00
Misha Brukman
009d3f400c
Generate the SparcV8 code emitter from .td files
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17000 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 21:57:19 +00:00
Misha Brukman
17187e936a
* In the F3_1 class, default asi to 0 because it's not currently used
...
* In the F3_3 class, remove mention of asi because it's not part of the format
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16999 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 21:53:39 +00:00
Brian Gaeke
59e12ed789
Add FSTOI, FDTOI (fp to integer cast) instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16996 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 19:39:35 +00:00
Brian Gaeke
8b6c1ff677
Rewrite emitCastOperation, refactoring parts of it into emitIntegerCast, and
...
adding emitFPToIntegerCast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16995 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 19:39:34 +00:00
Brian Gaeke
941833a37c
Add list of libc procedures we'll use, at some point.
...
Update list of currently failing tests.
ADJCALLSTACK* support is done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16994 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 19:39:33 +00:00
Misha Brukman
c982cfad87
* Claim to support machine code emission - return false from
...
addPassesToEmitMachineCode()
* Add support for registers and constants in getMachineOpValue()
This enables running "int main() { ret 0 }" via the PowerPC JIT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16983 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 06:39:56 +00:00
Misha Brukman
d37faba5b4
* Include the real (generated) version of getBinaryCodeForInstr()
...
* Add implementation of getMachineOpValue() for generated code emitter
* Convert assert()s in unimplemented functions to abort()s so that non-debug
builds fail predictably
* Add file header comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16981 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 06:07:25 +00:00
Misha Brukman
bab2adf496
* Make a PPC32-specific code emitter because we have separate classes for 32-
...
and 64-bit code emitters that cannot share code unless we use virtual
functions
* Identify components being built by tablegen with more detail by assigning them
to PowerPC, PPC32, or PPC64 more specifically; also avoids seeing 'building
PowerPC XYZ' messages twice, where one is for PPC32 and one for PPC64
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16980 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 06:04:56 +00:00
Tanya Lattner
a645750722
Checking in code that works on my simple test case. However, there is still a bug with branches that I need to fix.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16979 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 06:04:28 +00:00
Misha Brukman
a671f3b1d4
There is only one field in an instruction, and that is `Inst', the final view of
...
the instruction binary format, all others are simply operands and should not
have the `field' label
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16978 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 05:55:37 +00:00
Misha Brukman
315d3341fd
PowerPC instruction definitions use LittleEndian-style encoding [0..31]
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16977 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 05:54:38 +00:00
Misha Brukman
99ee67ab19
Add isLittleEndianEncoding to InstrInfo class, defaults to `off'
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16976 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-14 05:53:40 +00:00
Reid Spencer
d96cb6eaa0
Update to reflect changes in Makefile rules.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16950 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-13 11:46:52 +00:00
Chris Lattner
c71ff4c34b
Fix a warning that is emitted on the suns
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16917 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-11 15:50:40 +00:00
Misha Brukman
b15d4c6072
Add ModuloScheduling to the recursive build tree
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16905 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 23:36:09 +00:00
Misha Brukman
7da1e6e27c
Adjust header file inclusion due to move
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16904 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 23:34:50 +00:00
Misha Brukman
0a18934a23
Adjust comment header and paths to refect move
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16903 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-10 23:34:36 +00:00