oota-llvm.git
14 years agoAdd some more ELF OSABI values as found in the System V Application
Matt Fleming [Tue, 6 Jul 2010 18:36:57 +0000 (18:36 +0000)]
Add some more ELF OSABI values as found in the System V Application
Binary Interface specification.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107685 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix to 80-col.
Eric Christopher [Tue, 6 Jul 2010 18:35:20 +0000 (18:35 +0000)]
Fix to 80-col.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107684 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoProvide IRBuilder conveniences for creating integer constants at common widths,
John McCall [Tue, 6 Jul 2010 18:34:49 +0000 (18:34 +0000)]
Provide IRBuilder conveniences for creating integer constants at common widths,
and give a more precise return type for some of the type-creation methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107683 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAlphabetize the list of function parameters.
Nick Lewycky [Tue, 6 Jul 2010 18:24:09 +0000 (18:24 +0000)]
Alphabetize the list of function parameters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107680 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix PR7545 crash.
Devang Patel [Tue, 6 Jul 2010 18:18:32 +0000 (18:18 +0000)]
Fix PR7545 crash.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107678 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoProvide an abstraction to save and restore the current insertion point of
John McCall [Tue, 6 Jul 2010 18:07:52 +0000 (18:07 +0000)]
Provide an abstraction to save and restore the current insertion point of
an IRBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107677 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDon't create neon moves in CopyRegToReg. NEONMoveFixPass will do the conversion
Rafael Espindola [Tue, 6 Jul 2010 16:24:34 +0000 (16:24 +0000)]
Don't create neon moves in CopyRegToReg. NEONMoveFixPass will do the conversion
if profitable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107673 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agotighten up this code.
Chris Lattner [Tue, 6 Jul 2010 15:59:27 +0000 (15:59 +0000)]
tighten up this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107670 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoBring the list of passes and their descriptions up to date.
Duncan Sands [Tue, 6 Jul 2010 15:52:15 +0000 (15:52 +0000)]
Bring the list of passes and their descriptions up to date.
Patch by Kenneth Hoste.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107669 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRevert r107655.
Dan Gohman [Tue, 6 Jul 2010 15:49:48 +0000 (15:49 +0000)]
Revert r107655.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107668 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agosecond round of low-level interface squeeze-out:
Gabor Greif [Tue, 6 Jul 2010 15:44:11 +0000 (15:44 +0000)]
second round of low-level interface squeeze-out:
making all of CallInst's low-level operand accessors
private

If you get compile errors I strongly urge you to
update your code.

I tried to write the necessary clues into the
header where the compiler may point to, but no
guarantees. It works for my GCC.

You have several options to update your code:

- you can use the v2.8 ArgOperand accessors
- you can go via a temporary CallSite
- you can upcast to, say, User and call its
  low-level accessors if your code is definitely
  operand-order agnostic.

If you run into serious problems, please
comment in below thread (and back out this
revision only if absolutely necessary):

<http://groups.google.com/group/llvm-dev/browse_thread/thread/64650cf343b28271>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107667 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd versions of OutputArgReg, AnalyzeReturn, and AnalyzeCallOperands
Dan Gohman [Tue, 6 Jul 2010 15:39:54 +0000 (15:39 +0000)]
Add versions of OutputArgReg, AnalyzeReturn, and AnalyzeCallOperands
which do not depend on SelectionDAG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107666 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a new CCValAssign LocInfo value, and a comment explaining what it
Dan Gohman [Tue, 6 Jul 2010 15:35:06 +0000 (15:35 +0000)]
Add a new CCValAssign LocInfo value, and a comment explaining what it
should be used for.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107661 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake getMinimalPhysRegClass' comment mention what makes it different
Dan Gohman [Tue, 6 Jul 2010 15:31:55 +0000 (15:31 +0000)]
Make getMinimalPhysRegClass' comment mention what makes it different
from getPhysicalRegisterRegClass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107660 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoNote the relationship between C99 restrict and LLVM noalias, and
Dan Gohman [Tue, 6 Jul 2010 15:26:33 +0000 (15:26 +0000)]
Note the relationship between C99 restrict and LLVM noalias, and
clarify a few other things.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107659 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix a major regression on COFF targets introduced by r103267: 'discardable' section...
Anton Korobeynikov [Tue, 6 Jul 2010 15:24:56 +0000 (15:24 +0000)]
Fix a major regression on COFF targets introduced by r103267: 'discardable' section means that it is used only during the program load and can be discarded afterwards.
This way *only* debug sections can be discarded, but not the opposite. Seems like the copy-and-pasto from ELF code, since there it contains the reverse flag ('alloc').

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107658 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd some more TODO comments.
Dan Gohman [Tue, 6 Jul 2010 15:23:00 +0000 (15:23 +0000)]
Add some more TODO comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107657 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a comment.
Dan Gohman [Tue, 6 Jul 2010 15:21:57 +0000 (15:21 +0000)]
Add a comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107656 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix a bunch of custom-inserter functions to handle the case where
Dan Gohman [Tue, 6 Jul 2010 15:18:19 +0000 (15:18 +0000)]
Fix a bunch of custom-inserter functions to handle the case where
the pseudo instruction is not at the end of the block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107655 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove mistakenly added test.
Eric Christopher [Tue, 6 Jul 2010 05:20:13 +0000 (05:20 +0000)]
Remove mistakenly added test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107641 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix up -fstack-protector on linux to use the segment
Eric Christopher [Tue, 6 Jul 2010 05:18:56 +0000 (05:18 +0000)]
Fix up -fstack-protector on linux to use the segment
registers.  Split out testcases per architecture and os
now.

Patch from Nelson Elhage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107640 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDetabify this file.
Nick Lewycky [Tue, 6 Jul 2010 03:53:43 +0000 (03:53 +0000)]
Detabify this file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107637 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd default value to setIsNoInline for parity with the other methods of its
Nick Lewycky [Tue, 6 Jul 2010 03:53:22 +0000 (03:53 +0000)]
Add default value to setIsNoInline for parity with the other methods of its
kind.

Also fold some functions that fit on a line to a single line.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107636 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix typo 'getter' where 'setter' was intended.
Nick Lewycky [Tue, 6 Jul 2010 03:52:37 +0000 (03:52 +0000)]
Fix typo 'getter' where 'setter' was intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107635 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoHave the X86 backend use Triple instead of a string and some enums.
Eric Christopher [Mon, 5 Jul 2010 19:26:33 +0000 (19:26 +0000)]
Have the X86 backend use Triple instead of a string and some enums.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107625 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove some unused/redundant code.
Kalle Raiskila [Mon, 5 Jul 2010 18:40:09 +0000 (18:40 +0000)]
Remove some unused/redundant code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107622 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agomore tidying.
Chris Lattner [Mon, 5 Jul 2010 05:53:14 +0000 (05:53 +0000)]
more tidying.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107615 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoanother v2f32 case, in this case showing poor codegen.
Chris Lattner [Mon, 5 Jul 2010 05:52:56 +0000 (05:52 +0000)]
another v2f32 case, in this case showing poor codegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107614 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agosome notes about suboptimal insertps's
Chris Lattner [Mon, 5 Jul 2010 05:48:41 +0000 (05:48 +0000)]
some notes about suboptimal insertps's

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107613 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agorandom tidying
Chris Lattner [Mon, 5 Jul 2010 05:36:21 +0000 (05:36 +0000)]
random tidying

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107612 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agorip out even more sporadic v2f32 support.
Chris Lattner [Mon, 5 Jul 2010 04:38:33 +0000 (04:38 +0000)]
rip out even more sporadic v2f32 support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107610 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agorip out the various v2f32 "mmx" handling logic, now that
Chris Lattner [Mon, 5 Jul 2010 04:36:27 +0000 (04:36 +0000)]
rip out the various v2f32 "mmx" handling logic, now that
v2f32 is illegal on x86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107609 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix test on non-x86 hosts.
Chris Lattner [Mon, 5 Jul 2010 03:56:55 +0000 (03:56 +0000)]
fix test on non-x86 hosts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107608 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPrint symbolic subreg indices on REG_SEQUENCE and INSERT_SUBREG.
Jakob Stoklund Olesen [Sun, 4 Jul 2010 23:24:23 +0000 (23:24 +0000)]
Print symbolic subreg indices on REG_SEQUENCE and INSERT_SUBREG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107602 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoJust rip v2f32 support completely out of the X86 backend. In
Chris Lattner [Sun, 4 Jul 2010 23:07:25 +0000 (23:07 +0000)]
Just rip v2f32 support completely out of the X86 backend.  In
the example in the testcase, we now generate:

_test1:                                 ## @test1
movss 4(%esp), %xmm0
addss 8(%esp), %xmm0
movl 12(%esp), %eax
movss %xmm0, (%eax)
ret

instead of:

_test1:                                                     ## @test1
subl $20, %esp
movl 24(%esp), %eax
movq %mm0, (%esp)
movq %mm0, 8(%esp)
movss (%esp), %xmm0
addss 12(%esp), %xmm0
movss %xmm0, (%eax)
addl $20, %esp
ret

v2f32 support did not work reliably because most of the X86
backend didn't know it was legal.  It was apparently only added
to support returning source-level v2f32 values in MMX registers
in x86-32 mode.  If ABI compatibility is important on this
GCC-extended-vector type for some reason, then the frontend
should generate IR that returns v2i32 instead of v2f32.  However,
we generally don't try very hard to be abi compatible on gcc
extended vectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107601 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agofix PR7518 - terrible codegen of <2 x float>, by only marking
Chris Lattner [Sun, 4 Jul 2010 22:57:10 +0000 (22:57 +0000)]
fix PR7518 - terrible codegen of <2 x float>, by only marking
v2f32 as legal in 32-bit mode.  It is just as terrible there,
but I just care about x86-64 and noone claims it is valuable
in 64-bit mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107600 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoindentation
Chris Lattner [Sun, 4 Jul 2010 22:56:10 +0000 (22:56 +0000)]
indentation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107599 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoInfer alignments of fixed frame objects when they are constructed. This ensures remat...
Evan Cheng [Sun, 4 Jul 2010 18:52:05 +0000 (18:52 +0000)]
Infer alignments of fixed frame objects when they are constructed. This ensures remat'ed loads from fixed slots have the right alignments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107591 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoindmemrem and lowerallocs are gone.
Chris Lattner [Sun, 4 Jul 2010 17:36:43 +0000 (17:36 +0000)]
indmemrem and lowerallocs are gone.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107587 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRevert r107583. I no longer think that this is the way to solve the problem.
Bill Wendling [Sun, 4 Jul 2010 09:16:57 +0000 (09:16 +0000)]
Revert r107583. I no longer think that this is the way to solve the problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107585 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMark sse_load_f32 and sse_load_f64 as having memory operands
Bill Wendling [Sun, 4 Jul 2010 08:59:55 +0000 (08:59 +0000)]
Mark sse_load_f32 and sse_load_f64 as having memory operands
(SDNPMemOperand). This way when they're morphed the memory operands will be
copied as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107583 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoback out r107580, I have seen what I wanted
Gabor Greif [Sun, 4 Jul 2010 08:59:25 +0000 (08:59 +0000)]
back out r107580, I have seen what I wanted

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107582 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoProper indentation.
Bill Wendling [Sun, 4 Jul 2010 08:58:43 +0000 (08:58 +0000)]
Proper indentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107581 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago[another test commit, just to tickle the selfhost buildbots; I'll back out in a few...
Gabor Greif [Sun, 4 Jul 2010 07:42:31 +0000 (07:42 +0000)]
[another test commit, just to tickle the selfhost buildbots; I'll back out in a few minutes]

second round of low-level interface squeeze-out:
making all of CallInst's low-level operand accessors
private

If you get compile errors I strongly urge you to
update your code.

I tried to write the necessary clues into the
header where the compiler may point to, but no
guarantees. It works for my GCC.

You have several options to update your code:

- you can use the v2.8 ArgOperand accessors
- you can go via a temporary CallSite
- you can upcast to, say, User and call its
  low-level accessors if your code is definitely
  operand-order agnostic.

If you run into serious problems, please
comment in below thread (and back out this
revision only if absolutely necessary):

<http://groups.google.com/group/llvm-dev/browse_thread/thread/64650cf343b28271>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107580 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMinor amendment to switch-lowering improvement.
Eli Friedman [Sat, 3 Jul 2010 08:43:32 +0000 (08:43 +0000)]
Minor amendment to switch-lowering improvement.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107569 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoNote switch-lowering inefficiency.
Eli Friedman [Sat, 3 Jul 2010 07:38:12 +0000 (07:38 +0000)]
Note switch-lowering inefficiency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107565 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd AVX SSE4.1 blend, mpsadbw and vdp
Bruno Cardoso Lopes [Sat, 3 Jul 2010 01:37:03 +0000 (01:37 +0000)]
Add AVX SSE4.1 blend, mpsadbw and vdp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107560 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd AVX SSE4.1 binop (some forms of packed max,min,mul,pack,cmp) instructions
Bruno Cardoso Lopes [Sat, 3 Jul 2010 01:15:47 +0000 (01:15 +0000)]
Add AVX SSE4.1 binop (some forms of packed max,min,mul,pack,cmp) instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107558 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix typo.
Eric Christopher [Sat, 3 Jul 2010 01:09:18 +0000 (01:09 +0000)]
Fix typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107556 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd AVX SSE4.1 Horizontal Minimum and Position instruction
Bruno Cardoso Lopes [Sat, 3 Jul 2010 00:49:21 +0000 (00:49 +0000)]
Add AVX SSE4.1 Horizontal Minimum and Position instruction

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107552 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots...
Evan Cheng [Sat, 3 Jul 2010 00:40:23 +0000 (00:40 +0000)]
Remove isSS argument from CreateFixedObject. Fixed objects cannot be spill slots so it's always false.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107550 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd AVX SSE4.1 round instructions
Bruno Cardoso Lopes [Sat, 3 Jul 2010 00:37:44 +0000 (00:37 +0000)]
Add AVX SSE4.1 round instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107549 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDetect and handle COPY in many places.
Jakob Stoklund Olesen [Sat, 3 Jul 2010 00:04:37 +0000 (00:04 +0000)]
Detect and handle COPY in many places.

This code is transitional, it will soon be possible to eliminate
isExtractSubreg, isInsertSubreg, and isMoveInstr in most places.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107547 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDocument that BasicAA respects noalias, while InterproceduralBasicAA
Dan Gohman [Fri, 2 Jul 2010 23:52:36 +0000 (23:52 +0000)]
Document that BasicAA respects noalias, while InterproceduralBasicAA
does not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107546 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDescribe which dependencies are relevant to noalias, and document how
Dan Gohman [Fri, 2 Jul 2010 23:46:54 +0000 (23:46 +0000)]
Describe which dependencies are relevant to noalias, and document how
AliasAnalyses have the choice to respect noalias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107544 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoSimple refactoring of SSE4.1 instructions, making room for the AVX forms
Bruno Cardoso Lopes [Fri, 2 Jul 2010 23:27:59 +0000 (23:27 +0000)]
Simple refactoring of SSE4.1 instructions, making room for the AVX forms

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107540 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd some html anchors, to allow attributes to be linked to directly.
Dan Gohman [Fri, 2 Jul 2010 23:18:08 +0000 (23:18 +0000)]
Add some html anchors, to allow attributes to be linked to directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107538 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago80-col fixup.
Eric Christopher [Fri, 2 Jul 2010 23:17:38 +0000 (23:17 +0000)]
80-col fixup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107537 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoAdd a new target independent COPY instruction and code to lower it.
Jakob Stoklund Olesen [Fri, 2 Jul 2010 22:29:50 +0000 (22:29 +0000)]
Add a new target independent COPY instruction and code to lower it.

The COPY instruction is intended to replace the target specific copy
instructions for virtual registers as well as the EXTRACT_SUBREG and
INSERT_SUBREG instructions in MachineFunctions. It won't we used in a selection
DAG.

COPY is lowered to native register copies by LowerSubregs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107529 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago- Add support for the rest of AVX SSE3 instructions
Bruno Cardoso Lopes [Fri, 2 Jul 2010 22:06:54 +0000 (22:06 +0000)]
- Add support for the rest of AVX SSE3 instructions
- Fix VEX prefix to be emitted with 3 bytes whenever VEX_5M
represents a REX equivalent two byte leading opcode

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107523 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoClean up TargetOpcodes.h a bit, and limit the number of places where the full
Jakob Stoklund Olesen [Fri, 2 Jul 2010 21:44:22 +0000 (21:44 +0000)]
Clean up TargetOpcodes.h a bit, and limit the number of places where the full
list of predefined instructions appear. Add some consistency checks.

Ideally, TargetOpcodes.h should be produced by TableGen from Target.td, but it
is hardly worth the effort.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107520 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoCustom inserters (e.g., conditional moves in Thumb1 can introduce
Jim Grosbach [Fri, 2 Jul 2010 21:23:37 +0000 (21:23 +0000)]
Custom inserters (e.g., conditional moves in Thumb1 can introduce
new basic blocks, and if used as a function argument, that can cause call frame
setup / destroy pairs to be split across a basic block boundary. That prevents
us from doing a simple assertion to check that the pairs match and alloc/
dealloc the same amount of space. Modify the assertion to only check the
amount allocated when there are matching pairs in the same basic block.

rdar://8022442

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107517 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMDString is already checked earlier.
Devang Patel [Fri, 2 Jul 2010 21:13:23 +0000 (21:13 +0000)]
MDString is already checked earlier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107516 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove early IT block formation. It's not used.
Evan Cheng [Fri, 2 Jul 2010 21:07:09 +0000 (21:07 +0000)]
Remove early IT block formation. It's not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107513 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago- Two-address pass should not assume unfolding is always successful.
Evan Cheng [Fri, 2 Jul 2010 20:36:18 +0000 (20:36 +0000)]
- Two-address pass should not assume unfolding is always successful.
- X86 unfolding should check if the instructions being unfolded has memoperands.
  If there is no memoperands, then it must assume conservative alignment. If this
  would introduce an expensive sse unaligned load / store, then unfoldMemoryOperand
  etc. should not unfold the instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107509 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove an unused enum.
Dan Gohman [Fri, 2 Jul 2010 20:20:50 +0000 (20:20 +0000)]
Remove an unused enum.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107507 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPropagate the AlignStack bit in InlineAsm's to the
Dale Johannesen [Fri, 2 Jul 2010 20:16:09 +0000 (20:16 +0000)]
Propagate the AlignStack bit in InlineAsm's to the
PrologEpilog code, and use it to determine whether
the asm forces stack alignment or not.  gcc consistently
does not do this for GCC-style asms; Apple gcc inconsistently
sometimes does it for asm blocks.  There is no
convenient place to put a bit in either the SDNode or
the MachineInstr form, so I've added an extra operand
to each; unlovely, but it does allow for expansion for
more bits, should we need it.  PR 5125.  Some
existing testcases are affected.
The operand lists of the SDNode and MachineInstr forms
are indexed with awesome mnemonics, like "2"; I may
fix this someday, but not now.  I'm not making it any
worse.  If anyone is inspired I think you can find all
the right places from this patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107506 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove invalid assert
Jakob Stoklund Olesen [Fri, 2 Jul 2010 19:54:47 +0000 (19:54 +0000)]
Remove invalid assert

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107505 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoHandle unindexed instructions in SlotIndices.
Jakob Stoklund Olesen [Fri, 2 Jul 2010 19:54:45 +0000 (19:54 +0000)]
Handle unindexed instructions in SlotIndices.

SlotIndexes::insertMachineInstrInMaps would crash when trying to insert an
instruction imediately after an unmapped debug value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107504 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoProperly handle debug values during inline spilling.
Jakob Stoklund Olesen [Fri, 2 Jul 2010 19:54:40 +0000 (19:54 +0000)]
Properly handle debug values during inline spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107503 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agobeautify output
Gabor Greif [Fri, 2 Jul 2010 19:26:28 +0000 (19:26 +0000)]
beautify output

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107500 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agouse ArgOperand API
Gabor Greif [Fri, 2 Jul 2010 19:08:46 +0000 (19:08 +0000)]
use ArgOperand API

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107498 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDon't claim to preserve AliasAnalysis. First, this is doesn't actually
Dan Gohman [Fri, 2 Jul 2010 18:43:05 +0000 (18:43 +0000)]
Don't claim to preserve AliasAnalysis. First, this is doesn't actually
have any effect, and second, deleting stores can potentially invalidate
an AliasAnalysis, and there's currently no notification for this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107496 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoReword the definition of the noalias attribute. The intention is for
Dan Gohman [Fri, 2 Jul 2010 18:41:32 +0000 (18:41 +0000)]
Reword the definition of the noalias attribute. The intention is for
the noalias argument on function attributes be usable to model the
C99 restrict keyword on arguments, and to allow AliasAnalysis to
consider a noalias-attributed argument to be an "identified object".

To support this, refactor a new "based on" concept out of the current
pointer aliasing "associated" concept. This "based on" concept is very
similar to (though it is not identical with) the "based on" concept
in C99.

Also, reword the definition of NoAlias to more closely describe the
concept that the optimizer uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107495 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRematerialize as much as possible before inserting spills and reloads.
Jakob Stoklund Olesen [Fri, 2 Jul 2010 17:44:57 +0000 (17:44 +0000)]
Rematerialize as much as possible before inserting spills and reloads.

This allows us to recognize the common case where all uses could be
rematerialized, and no stack slot allocation is necessary.

If some values could be fully rematerialized, remove them from the live range
before allocating a stack slot for the rest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107492 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago80-column and trailing whitespace cleanup.
Jim Grosbach [Fri, 2 Jul 2010 17:41:59 +0000 (17:41 +0000)]
80-column and trailing whitespace cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107490 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agogrammar tweaks
Jim Grosbach [Fri, 2 Jul 2010 17:38:34 +0000 (17:38 +0000)]
grammar tweaks

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107489 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoFix incorrect asm-printing of some NEON immediates. Fix weak testcase so
Bob Wilson [Fri, 2 Jul 2010 17:23:44 +0000 (17:23 +0000)]
Fix incorrect asm-printing of some NEON immediates.  Fix weak testcase so
that it checks the immediate values, not just the instructions opcodes.
Radar 8110263.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107487 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agouse ArgOperand API (found by my previous commit)
Gabor Greif [Fri, 2 Jul 2010 13:37:16 +0000 (13:37 +0000)]
use ArgOperand API (found by my previous commit)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107482 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoback out r107480, it was just testing the waters anyway...
Gabor Greif [Fri, 2 Jul 2010 13:27:50 +0000 (13:27 +0000)]
back out r107480, it was just testing the waters anyway...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107481 91177308-0d34-0410-b5e6-96231b3b80d8

14 years ago[test commit, just to tickle the selfhost buildbots; I'll back out in a few minutes]
Gabor Greif [Fri, 2 Jul 2010 13:21:55 +0000 (13:21 +0000)]
[test commit, just to tickle the selfhost buildbots; I'll back out in a few minutes]

second round of low-level interface squeeze-out:
making all of CallInst's low-level operand accessors
private

If you get compile errors I strongly urge you to
update your code.

I tried to write the necessary clues into the
header where the compiler may point to, but no
guarantees. It works for my GCC.

You have several options to update your code:

- you can use the v2.8 ArgOperand accessors
- you can go via a temporary CallSite
- you can upcast to, say, User and call its
  low-level accessors if your code is definitely
  operand-order agnostic.

If you run into serious problems, please
comment in below thread (and back out this
revision only if absolutely necessary):

<http://groups.google.com/group/llvm-dev/browse_thread/thread/64650cf343b28271>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107480 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoComment a non-obvious member variable.
Dan Gohman [Fri, 2 Jul 2010 01:20:16 +0000 (01:20 +0000)]
Comment a non-obvious member variable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107458 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoIndirectBr is not safe to speculatively execute (!)
Dan Gohman [Fri, 2 Jul 2010 00:35:34 +0000 (00:35 +0000)]
IndirectBr is not safe to speculatively execute (!)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107454 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRename CreateReg to CreateRegs, and MakeReg to CreateReg.
Dan Gohman [Fri, 2 Jul 2010 00:10:16 +0000 (00:10 +0000)]
Rename CreateReg to CreateRegs, and MakeReg to CreateReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107451 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoShrink down SSE3 code by more multiclass refactoring
Bruno Cardoso Lopes [Thu, 1 Jul 2010 23:10:49 +0000 (23:10 +0000)]
Shrink down SSE3 code by more multiclass refactoring

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107448 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPrevent test from hanging waiting for input.
Dale Johannesen [Thu, 1 Jul 2010 22:57:11 +0000 (22:57 +0000)]
Prevent test from hanging waiting for input.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107446 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMake the "linker_private" linkage type emit a non-weak symbol to the file. It
Bill Wendling [Thu, 1 Jul 2010 22:38:24 +0000 (22:38 +0000)]
Make the "linker_private" linkage type emit a non-weak symbol to the file. It
will still be stripped by the linker when it generates the final image.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107440 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoShrink down SSE3 code by some multiclass refactoring - 1st part
Bruno Cardoso Lopes [Thu, 1 Jul 2010 22:33:18 +0000 (22:33 +0000)]
Shrink down SSE3 code by some multiclass refactoring - 1st part

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107438 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoARM function alignments were off by a power of two. svn 83242 changed
Bob Wilson [Thu, 1 Jul 2010 22:26:26 +0000 (22:26 +0000)]
ARM function alignments were off by a power of two.  svn 83242 changed
getFunctionAlignment and the corresponding use of that value in the ARM
asm printer, but now we're using the standard asm printer.  The result of
this was that function alignments were dropped completely for Thumb functions.
Radar 8143571.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107435 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoImplement the "linker_private_weak" linkage type. This will be used for
Bill Wendling [Thu, 1 Jul 2010 21:55:59 +0000 (21:55 +0000)]
Implement the "linker_private_weak" linkage type. This will be used for
Objective-C metadata types which should be marked as "weak", but which the
linker will remove upon final linkage. However, this linkage isn't specific to
Objective-C.

For example, the "objc_msgSend_fixup_alloc" symbol is defined like this:

      .globl l_objc_msgSend_fixup_alloc
      .weak_definition l_objc_msgSend_fixup_alloc
      .section __DATA, __objc_msgrefs, coalesced
      .align 3
l_objc_msgSend_fixup_alloc:
       .quad   _objc_msgSend_fixup
       .quad   L_OBJC_METH_VAR_NAME_1

This is different from the "linker_private" linkage type, because it can't have
the metadata defined with ".weak_definition".

Currently only supported on Darwin platforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107433 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoevil hack to coerce external users (projects)
Gabor Greif [Thu, 1 Jul 2010 21:46:41 +0000 (21:46 +0000)]
evil hack to coerce external users (projects)
to update their code to high-level interfaces

If you get compile errors in your project
please update your code according to the
comments.

This is a re-commit of r107396 which causes
compile errors for the indicated usage patterns
instead of link errors (which are less easy to
fix because of missing source location).

If you get compile errors please perform
following functionally equivalent transformations:
  - getOperand(0)  --->  getCalledValue()
  - setOperand(0, V)  --->  setCalledFunction(V)

This will make your code more future-proof
and avoid potentially hard-to-debug bugs.

please refer to this thread on llvm-dev:

<http://groups.google.com/group/llvm-dev/browse_thread/thread/64650cf343b28271>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107432 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDo not require line number entry for undefined local variable.
Devang Patel [Thu, 1 Jul 2010 21:38:08 +0000 (21:38 +0000)]
Do not require line number entry for undefined local variable.
This is a regression caused by r106792 and caught by gdb testsuite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107430 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Fix some stray hunks I didn't intend to commit.
Daniel Dunbar [Thu, 1 Jul 2010 20:48:51 +0000 (20:48 +0000)]
MC: Fix some stray hunks I didn't intend to commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107428 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Pass the target instance to the AsmParser constructor.
Daniel Dunbar [Thu, 1 Jul 2010 20:41:56 +0000 (20:41 +0000)]
MC: Pass the target instance to the AsmParser constructor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107426 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove stray comma.
Daniel Dunbar [Thu, 1 Jul 2010 20:20:05 +0000 (20:20 +0000)]
Remove stray comma.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107425 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Fix an error message.
Daniel Dunbar [Thu, 1 Jul 2010 20:20:01 +0000 (20:20 +0000)]
MC: Fix an error message.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107424 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoRemove context sensitivity concerns from interprocedural-basic-aa, and
Dan Gohman [Thu, 1 Jul 2010 20:08:40 +0000 (20:08 +0000)]
Remove context sensitivity concerns from interprocedural-basic-aa, and
make it more aggressive in cases where both pointers are known to live
in the same function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107420 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoMC: Move COFF enumeration constants to llvm/Support/COFF.h, patch by Michael
Daniel Dunbar [Thu, 1 Jul 2010 20:07:24 +0000 (20:07 +0000)]
MC: Move COFF enumeration constants to llvm/Support/COFF.h, patch by Michael
Spencer!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107418 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoPreserve debug info for only extracted symbols.
Devang Patel [Thu, 1 Jul 2010 19:58:05 +0000 (19:58 +0000)]
Preserve debug info for only extracted symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107417 91177308-0d34-0410-b5e6-96231b3b80d8

14 years agoDebugging infomration is encoded in llvm IR using metadata. This is designed
Devang Patel [Thu, 1 Jul 2010 19:49:20 +0000 (19:49 +0000)]
Debugging infomration is encoded in llvm IR using metadata. This is designed
such a way that debug info for symbols preserved even if symbols are
optimized away by the optimizer.

Add new special pass to remove debug info for such symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107416 91177308-0d34-0410-b5e6-96231b3b80d8