Reid Spencer [Sun, 21 May 2006 10:40:20 +0000 (10:40 +0000)]
For PR784:
Support Win32 platforms for llvm-gcc path. Patch by Anton Korobeynikov
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28426
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sun, 21 May 2006 06:28:50 +0000 (06:28 +0000)]
Back out indirect branch load folding hack. It broke some tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28425
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 21 May 2006 03:57:07 +0000 (03:57 +0000)]
Add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28424
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Sat, 20 May 2006 23:28:54 +0000 (23:28 +0000)]
Make TargetData strings less redundant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28423
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 20 May 2006 23:14:03 +0000 (23:14 +0000)]
Silence a bogus gcc warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28422
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 20 May 2006 21:16:59 +0000 (21:16 +0000)]
Fix a parsing bug that caused 7 llvm-test regressions on PPC last night.
I'm suprised it didn't cause more!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28421
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 20 May 2006 09:21:39 +0000 (09:21 +0000)]
- Use of load's chain result should be redirected to load's chain operand.
If it reads the chain result of the call, then the use, callseq_start,
and call would form a cycle!
- Don't forget handle node replacement!
- There could also be a TokenFactor between the load and the callseq_start.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28420
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 20 May 2006 07:44:53 +0000 (07:44 +0000)]
A new entry
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28419
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 20 May 2006 07:44:28 +0000 (07:44 +0000)]
Missing break statements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28418
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 20 May 2006 01:40:16 +0000 (01:40 +0000)]
Remove unused patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28417
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 20 May 2006 01:36:52 +0000 (01:36 +0000)]
Handle indirect call which folds a load manually. This never matches by
the TableGen generated code since the load's chain result is read by
the callseq_start node.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28416
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Sat, 20 May 2006 00:49:30 +0000 (00:49 +0000)]
Sparc is big-endian.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28415
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Sat, 20 May 2006 00:24:56 +0000 (00:24 +0000)]
Make all of the TargetMachine subclasses use the new string TargetData methods.
This is part of the on-going work on PR 761.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28414
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 22:00:54 +0000 (22:00 +0000)]
new testcase for csretcc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28413
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:58:52 +0000 (21:58 +0000)]
Print csretcc calls like this:
call csretcc void %structret( { sbyte }* %P )
instead of this:
callcsretcc void %structret( { sbyte }* %P )
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28412
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:57:37 +0000 (21:57 +0000)]
Fix misencoding of calling conventions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28411
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:54:03 +0000 (21:54 +0000)]
pretty print csretcc for calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28410
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:34:04 +0000 (21:34 +0000)]
CSRet allows varargs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28409
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:29:57 +0000 (21:29 +0000)]
Asmprint csret nicely
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28408
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:28:53 +0000 (21:28 +0000)]
Regenerate
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28407
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:28:34 +0000 (21:28 +0000)]
Add support for parsing csret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28406
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:25:17 +0000 (21:25 +0000)]
csret functions can be varargs (as can target cc's). Verify restrictions on
csret functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28405
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:19:02 +0000 (21:19 +0000)]
Add new calling convention, as documented in LangRef.html
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28404
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:15:36 +0000 (21:15 +0000)]
New calling convention I will be adding shortly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28403
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 21:01:38 +0000 (21:01 +0000)]
Add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28402
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 20:55:31 +0000 (20:55 +0000)]
Add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28401
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 20:51:43 +0000 (20:51 +0000)]
Split the SSE readme items out into their own README.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28400
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 20:45:52 +0000 (20:45 +0000)]
Split FP-stack notes out of the main readme. Next up: splitting out SSE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28399
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 20:45:08 +0000 (20:45 +0000)]
Move a target-independent note out of the X86 readme.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28398
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 19:41:33 +0000 (19:41 +0000)]
Particularly ugly code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28397
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 19:34:09 +0000 (19:34 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28396
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 19 May 2006 19:09:46 +0000 (19:09 +0000)]
Fix a doxygen problem and break lines at 80 columns
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28395
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 19 May 2006 19:07:54 +0000 (19:07 +0000)]
Fix some doxygen usage in these headers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28394
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 19 May 2006 18:43:41 +0000 (18:43 +0000)]
These can be transformed into lea as well. Not that we use this feature
currently...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28393
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 19 May 2006 18:40:54 +0000 (18:40 +0000)]
- Use exact-width integer types, e.g. int32_t, to avoid confusion.
- Fix a couple of minor bugs in i16immSExt8 and i16immZExt8.
- Added loadiPTR fragment used for indirect jumps and calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28392
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 19 May 2006 17:17:12 +0000 (17:17 +0000)]
Use class tags instead of struct tags. The coding standards specify this
for public classes for improved win32 compatibility.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28391
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 19 May 2006 07:30:36 +0000 (07:30 +0000)]
Explicitly specify MOV32mi can only be used store 32-bit GV, etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28390
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 19 May 2006 07:24:32 +0000 (07:24 +0000)]
Now that iPTR is a fully resolved type. We end up losing the type check for
patterns that look like this:
def : Pat<(i32 (X86Wrapper tconstpool :$dst)), (MOV32ri tconstpool :$dst)>;
InsertOneTypeCheck should copy the type from the resolved pattern to the
unresolved one as long as there types are different.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28389
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 18 May 2006 21:45:49 +0000 (21:45 +0000)]
implement movri
add a stub LowerFORMAL_ARGUMENTS
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28388
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 18 May 2006 20:44:26 +0000 (20:44 +0000)]
Added a Flags field to TargetOperandInfo. Currently the only flag is
M_LOOK_UP_PTR_REG_CLASS which allows the register class of the operand to be
resolved via a callback at runtime.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28387
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 18 May 2006 20:42:07 +0000 (20:42 +0000)]
lib/Target/Target.td
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28386
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 18 May 2006 19:42:16 +0000 (19:42 +0000)]
Improve error output. Use the third parameter of the "catch" command to
capture the error output from the exec option. This generally will capture
the stderr messages generated by the tools. This information is then
printed if the test fails. This helps to recognize more quickly what the
error was. Otherwise, this information is lost.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28385
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 May 2006 18:26:13 +0000 (18:26 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28384
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 18 May 2006 17:38:16 +0000 (17:38 +0000)]
add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28383
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Thu, 18 May 2006 17:29:34 +0000 (17:29 +0000)]
Fix a bogus gcc warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28382
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 18 May 2006 06:27:15 +0000 (06:27 +0000)]
ImmMask should be 3 for a two-bit field; Compact X86II
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28381
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 18 May 2006 05:46:08 +0000 (05:46 +0000)]
Fix some think-o's in my last commit. Thanks to Chris for pointing them out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28380
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 18 May 2006 02:10:31 +0000 (02:10 +0000)]
Change Module to use TargetData-compatible strings internally.
This is part of the on-going work on PR 761.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28379
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 18 May 2006 00:12:58 +0000 (00:12 +0000)]
getCalleeSaveRegs and getCalleeSaveRegClasses are no long TableGen'd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28378
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 18 May 2006 00:09:53 +0000 (00:09 +0000)]
Remove CalleeSavedRegisters from class Target.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28377
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 18 May 2006 00:08:46 +0000 (00:08 +0000)]
Don't generate getCalleeSaveReg and getCalleeSaveRegClasses anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28376
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 23:43:56 +0000 (23:43 +0000)]
This test is buggy: printf is a varargs function. This fixes the test with
the PPC JIT
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28375
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 17 May 2006 22:55:35 +0000 (22:55 +0000)]
Make some changes suggested by Chris:
1. Remove the LLVM_DO_NOT_BUILD feature (not needed any more)
2. Ensure that lib/VMCore gets built first. This needs to be done because
VMCore now uses tblgen to generate the Intrinsics header which are
needed in other libraries. In parallel builds, this can cause problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28374
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 17 May 2006 21:56:02 +0000 (21:56 +0000)]
Fix a stupid bug when parsing TargetData strings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28373
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 21:54:48 +0000 (21:54 +0000)]
Use DIRS here instead of PARALLEL_DIRS, as VMCore has to be built before the
other dirs (for Intrinsics.gen). :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28372
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 21:21:41 +0000 (21:21 +0000)]
Use generic iPTR instead i32 to represent pointer type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28371
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 21:20:51 +0000 (21:20 +0000)]
Another entry
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28370
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 17 May 2006 21:20:50 +0000 (21:20 +0000)]
Remove the llvm-db and bugpoint restrictions from the win32 platform so
they can be compiled with ming32. The use of fork(2) has been removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28369
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 21:20:27 +0000 (21:20 +0000)]
Remove PointerType from class Target
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28368
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 21:05:27 +0000 (21:05 +0000)]
Declare that lowerinvoke doesn't interact with other lowering passes.
Patch written by Domagoj Babic!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28367
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 20:55:51 +0000 (20:55 +0000)]
Typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28366
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 20:49:36 +0000 (20:49 +0000)]
Fix the result of the call to use a correct vbitconvert. There is no need to
use getPackedTypeBreakdown at all here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28365
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 20:43:21 +0000 (20:43 +0000)]
Correct a previous patch which broke CodeGen/PowerPC/vec_call.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28364
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 20:37:59 +0000 (20:37 +0000)]
Remove PointerType from target definition. Use abstract type MVT::iPTR to
represent pointer type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28363
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 20:21:44 +0000 (20:21 +0000)]
PR736 has already been fixed. Remove XFAIL marker.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28362
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 20:20:04 +0000 (20:20 +0000)]
New test case for vector type argument pass by value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28361
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 17 May 2006 19:24:49 +0000 (19:24 +0000)]
Fix call_adj.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28360
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 17 May 2006 19:24:31 +0000 (19:24 +0000)]
Added sanity check for obviously bogus immediates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28359
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Wed, 17 May 2006 19:23:31 +0000 (19:23 +0000)]
Added regression that breaks gcc4 build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28358
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 19:07:40 +0000 (19:07 +0000)]
Should pass by reference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28357
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 19:05:31 +0000 (19:05 +0000)]
Another entry
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28356
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 19:02:25 +0000 (19:02 +0000)]
Add a note about a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28355
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 19:00:46 +0000 (19:00 +0000)]
Make PPC call lowering more aggressive, making the isel matching code simple
enough to be autogenerated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28354
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 18:22:14 +0000 (18:22 +0000)]
Another typo. Pointed out by Nate Begeman.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28353
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 18:16:39 +0000 (18:16 +0000)]
Fixed a LowerCallTo and LowerArguments bug. They were introducing illegal
VBIT_VECTOR nodes. There were some confusion about the semantics of
getPackedTypeBreakdown(). e.g. for <4 x f32> it returns 1 and v4f32, not 4,
and f32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28352
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 18:10:06 +0000 (18:10 +0000)]
Fix an obvious bug in getPackedTypeBreakdown. Return 1 if type is legal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28351
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 17 May 2006 18:08:20 +0000 (18:08 +0000)]
Fix a mis-leading comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28350
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 18:05:35 +0000 (18:05 +0000)]
Add a CloneModule call that exposes the mapping of values from the old module
to the new module. Patch provided by Nick Lewycky!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28349
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 18:00:08 +0000 (18:00 +0000)]
When we legalize target nodes, do not use getNode to create a new node,
use UpdateNodeOperands to just update the operands! This is important because
getNode will allocate a new node if the node returns a flag and this breaks
assumptions in the legalizer that you can legalize some things multiple times
and get exactly the same results.
This latent bug was exposed by my ppc patch last night, and this fixes
gsm/toast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28348
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 17:55:45 +0000 (17:55 +0000)]
Add an assertion, avoid some unneeded work for each call. No functionality
change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28347
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 06:01:33 +0000 (06:01 +0000)]
Switch PPC over to a call-selection model where the lowering code creates
the copyto/fromregs instead of making the PPCISD::CALL selection code create
them. This vastly simplifies the selection code, and moves the ABI handling
parts into one place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28346
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 04:20:13 +0000 (04:20 +0000)]
add an external symbol testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28345
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 03:57:31 +0000 (03:57 +0000)]
new test for various forms of calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28344
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 00:18:23 +0000 (00:18 +0000)]
test for support to pass/return vectors to calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28343
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 17 May 2006 00:15:40 +0000 (00:15 +0000)]
3 changes, 2 of which are cleanup one of which changes codegen:
1. Rearrange code a bit so that the special case doesn't require indenting lots
of code.
2. Add comments describing PPC calling convention.
3. Only round up to 56-bytes of stack space for an outgoing call if the callee
is varargs. This saves a bit of stack space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28342
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 23:54:25 +0000 (23:54 +0000)]
implement passing/returning vector regs to calls, at least non-varargs calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28341
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 23:39:44 +0000 (23:39 +0000)]
Add support for calls that pass and return legal vectors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28340
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 22:56:08 +0000 (22:56 +0000)]
Instead of implementing LowerCallTo directly, let the default impl produce an
ISD::CALL node, then custom lower that. This means that we only have to handle
LEGAL call operands/results, not every possible type. This allows us to
simplify the call code, shrinking it by about 1/3.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28339
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 22:53:20 +0000 (22:53 +0000)]
Add a new ISD::CALL node, make the default impl of TargetLowering::LowerCallTo
produce it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28338
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 22:52:27 +0000 (22:52 +0000)]
Add a new CALL node.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28337
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 22:52:11 +0000 (22:52 +0000)]
There is now a default impl of this method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28336
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 18:58:15 +0000 (18:58 +0000)]
Simplify the argument counting logic by only incrementing the index.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28335
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 18:54:32 +0000 (18:54 +0000)]
Simplify the dead argument handling code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28334
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 18:51:52 +0000 (18:51 +0000)]
Vector args passed in registers don't reserve stack space.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28333
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 18:23:55 +0000 (18:23 +0000)]
Another testcase that shouldn't need vrsave twiddling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28332
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 18:18:50 +0000 (18:18 +0000)]
Switch the PPC backend over to using FORMAL_ARGUMENTS for formal argument
handling. This makes the lower argument code significantly simpler (we
only need to handle legal argument types).
Incidentally, this also implements support for vector argument registers,
so long as they are not on the stack.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28331
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 16 May 2006 17:45:23 +0000 (17:45 +0000)]
this should be 128 I think
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28330
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Lenharth [Tue, 16 May 2006 17:42:15 +0000 (17:42 +0000)]
Move this code to a common place
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28329
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 17:22:42 +0000 (17:22 +0000)]
Remove this xfail-d test, which doesn't make any sense
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28328
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 16 May 2006 17:14:26 +0000 (17:14 +0000)]
Implement the custom lowering hook right, returning values for all of the
arguments at once.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28327
91177308-0d34-0410-b5e6-
96231b3b80d8