Anton Korobeynikov
4198c58c71
Next stage into switch lowering refactoring
...
1. Fix some bugs in the jump table lowering threshold
2. Implement much better metric for optimal pivot selection
3. Tune thresholds for different lowering methods
4. Implement shift-and trick for lowering small (<machine word
length) cases with few destinations. Good testcase will follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35816 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 12:31:58 +00:00
Chris Lattner
a9f120bd9f
Convert ImmediateDominators::DFSPass from being recursive to being iterative.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35815 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:44:42 +00:00
Reid Spencer
5694b6e90e
For PR1146:
...
Adapt handling of parameter attributes to use the new ParamAttrsList class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35814 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:17:21 +00:00
Reid Spencer
7b5d466c88
Regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35813 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:16:21 +00:00
Reid Spencer
460dd9b644
For PR1146:
...
Adapt handling of parameter attributes to use ParamAttrsList class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35812 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:15:59 +00:00
Reid Spencer
91ac04aa86
For PR1146:
...
Use ParamAttrsList for writing parameter attributes. Since they are sparse
now, we also write them sparsely (saves a few bytes). Unfortunately, this
is a bytecode file format change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35811 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:14:31 +00:00
Reid Spencer
8129a3921e
For PR1146:
...
Simplify construction of FunctionType to use default arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35810 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:12:07 +00:00
Reid Spencer
ac66f4241d
For PR1146:
...
Parameter attributes can now be defaulted for intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35809 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:11:23 +00:00
Reid Spencer
b138a0657f
For PR1146:
...
Adjust writing of parameter attributes to use ParamAttrList class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35808 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:10:42 +00:00
Chris Lattner
8645fb9524
minor cleanups
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35807 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:10:06 +00:00
Reid Spencer
89b1f46a10
For PR1146:
...
Move parameter attributes functionality to ParamAttrsList class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35806 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:07:52 +00:00
Reid Spencer
e365af5aa2
For PR1146:
...
Remove the handling of ParameterAttributes from FunctionType as they are
their own object defined in ParameterAttributes.h now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35805 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 06:06:57 +00:00
Chris Lattner
0f65cad57f
move a bunch of register constraints from being handled by
...
getRegClassForInlineAsmConstraint to being handled by
getRegForInlineAsmConstraint. This allows us to let the llvm register allocator
allocate, which gives us better code. For example, X86/2007-01-29-InlineAsm-ir.ll
used to compile to:
_run_init_process:
subl $4, %esp
movl %ebx, (%esp)
xorl %ebx, %ebx
movl $11, %eax
movl %ebx, %ecx
movl %ebx, %edx
# InlineAsm Start
push %ebx ; movl %ebx,%ebx ; int $0x80 ; pop %ebx
# InlineAsm End
Now we get:
_run_init_process:
xorl %ecx, %ecx
movl $11, %eax
movl %ecx, %edx
# InlineAsm Start
push %ebx ; movl %ecx,%ebx ; int $0x80 ; pop %ebx
# InlineAsm End
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35804 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 05:49:22 +00:00
Chris Lattner
e5a24ec782
implement support for CodeGen/X86/inline-asm-x-scalar.ll:test3 - i32/i64 values
...
used with x constraints.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35803 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 05:31:48 +00:00
Chris Lattner
1a6acc214d
implement CodeGen/X86/inline-asm-x-scalar.ll:test3
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35802 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 05:31:20 +00:00
Chris Lattner
7dadb92c67
add another test
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35801 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 05:26:48 +00:00
Chris Lattner
ff33cc4d08
add some assertions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35800 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 05:23:13 +00:00
Chris Lattner
ad043e85f8
implement CodeGen/X86/inline-asm-x-scalar.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35799 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 05:11:28 +00:00
Chris Lattner
d4dbaf8168
The x constraint allows scalar FP values as well as vectors.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35798 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 05:11:03 +00:00
Owen Anderson
8ea325730c
Move isReachableFromEntry out of line to avoid an unnecessary #include
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35797 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 04:07:36 +00:00
Chris Lattner
39a6a36c5a
Fix a bug that caused alignment information to occasionally get stripped off
...
of an allocation instruction when writing to bytecode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35796 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 03:37:36 +00:00
Reid Spencer
3d6b71eb67
Regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35795 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 01:56:05 +00:00
Reid Spencer
744d036318
Drop the implementation keyword.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35794 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 01:55:42 +00:00
Reid Spencer
021220c8cd
Chris convinced me that the default size of the SmallVector (2) was too
...
small. Since it doesn't cost much to have 2 more (8 bytes), but not having
them would require a malloc as soon as the third one is needed. Setting
the default to 4 delays the malloc until the 5th parameter attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35793 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 01:53:54 +00:00
Chris Lattner
8546409d1b
Fix PR1304 and Transforms/InstCombine/2007-04-08-SingleEltVectorCrash.ll
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35792 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 01:37:55 +00:00
Chris Lattner
7cae8adb75
new testcase for PR1304
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35791 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 01:37:35 +00:00
Reid Spencer
1f831ffd67
Remove redundancy.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35790 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 01:26:02 +00:00
Chris Lattner
0ebe9c132c
Fix a bug introduced with my previous patch, where it didn't correctly handle
...
instructions which replace themselves when FI's are rewritten (common on ppc).
This fixes CodeGen/PowerPC/2006-10-17-ppc64-alloca.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35789 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 01:19:33 +00:00
Chris Lattner
599ded1a7f
Eliminate useless insertelement instructions. This implements
...
Transforms/InstCombine/vec_insertelt.ll and fixes PR1286.
We now compile the code from that bug into:
_foo:
movl 4(%esp), %eax
movdqa (%eax), %xmm0
movl 8(%esp), %ecx
psllw (%ecx), %xmm0
movdqa %xmm0, (%eax)
ret
instead of:
_foo:
subl $4, %esp
movl %ebp, (%esp)
movl %esp, %ebp
movl 12(%ebp), %eax
movdqa (%eax), %xmm0
#IMPLICIT_DEF %eax
pinsrw $2, %eax, %xmm0
xorl %ecx, %ecx
pinsrw $3, %ecx, %xmm0
pinsrw $4, %eax, %xmm0
pinsrw $5, %ecx, %xmm0
pinsrw $6, %eax, %xmm0
pinsrw $7, %ecx, %xmm0
movl 8(%ebp), %eax
movdqa (%eax), %xmm1
psllw %xmm0, %xmm1
movdqa %xmm1, (%eax)
movl %ebp, %esp
popl %ebp
ret
woo :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35788 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 01:11:16 +00:00
Chris Lattner
2d87734a8f
new testcase for PR1286
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35787 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 01:10:13 +00:00
Owen Anderson
558fc740da
Cleanup some from my DomSet-removal changes. Add a new
...
isReachableFromEntry
test to ETForest to factor a common test out of code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35786 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 00:52:49 +00:00
Chris Lattner
d2eae62e93
Fix CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll and PR1308:
...
some instructions can have multiple frame indices in them. If this happens,
rewrite all of them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35785 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 00:46:10 +00:00
Chris Lattner
7c058276b8
new testcase for PR1308
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35784 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 00:45:42 +00:00
Chris Lattner
4b993b19f9
Fix PR1316
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35783 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-09 00:33:58 +00:00
Reid Spencer
8dd4f533c8
No functional change, this is just easier to read and debug.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35782 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 23:58:41 +00:00
Reid Spencer
b2ff383d49
Fix a typo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35781 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 22:50:29 +00:00
Reid Spencer
a3c4112a0e
Implement more feedback:
...
* Allow attributes to be added and removed singly or jointly so that in
the future something like -pruneh can manipulate them more easily.
* Move functions generally only useful for LLVM internals to the end of
the accessors list instead of the beginning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35780 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 22:30:27 +00:00
Chris Lattner
921169b103
Fix for CodeGen/X86/2007-04-08-InlineAsmCrash.ll and PR1314
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35779 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 22:23:26 +00:00
Chris Lattner
363a6dfdf7
testcase for PR1314
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35778 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 22:22:53 +00:00
Reid Spencer
0697ca0b13
Implement review feedback.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35777 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 22:05:44 +00:00
Nick Lewycky
27dcbe5f87
Fix this testcase to fail if the bug were reintroduced.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35776 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 21:49:13 +00:00
Owen Anderson
cd4abb7e6d
Remove DomSet completely. This concludes work on PR1171.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35775 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 21:30:05 +00:00
Jeff Cohen
3a37b6b19c
Track new header file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35774 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 21:19:52 +00:00
Reid Spencer
e281259d2d
Make sure temporary data is not used past its life span.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35773 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 20:10:14 +00:00
Reid Spencer
b9125b1c85
Make TempDir a PathWithStatus so we don't have to cast it to one.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35772 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 20:08:01 +00:00
Reid Spencer
7b57fe3554
Avoid temporary construction and potential for corrupted data access.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35771 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 20:06:05 +00:00
Reid Spencer
84c8a9c592
Implement the output inserter for PathWithStatus
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35770 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 20:05:10 +00:00
Reid Spencer
184e67e208
Don't rely on destructed local storage. Thanks, Chris.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35769 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 19:59:07 +00:00
Chris Lattner
51047859ed
Fix a typo that broke SimplifyLibCalls/SPrintF.ll (pr1315)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35768 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 18:11:26 +00:00
Reid Spencer
6091ebd172
For PR1146:
...
New header file to provide parameter attribute declarations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35767 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-08 14:46:50 +00:00