Dan Gohman
3386be03ea
Use the opcode predicates, instead of duplicating the code.
...
llvm-svn: 57735
2008-10-17 21:42:45 +00:00
Dan Gohman
ac8c7772ba
This is now partly done.
...
llvm-svn: 57734
2008-10-17 21:39:27 +00:00
Dan Gohman
69ac9cc00f
This is done.
...
llvm-svn: 57733
2008-10-17 21:38:40 +00:00
Dan Gohman
e1e1c5197e
Factor out the code for mapping LLVM IR condition opcodes to
...
ISD condition opcodes into helper functions.
llvm-svn: 57726
2008-10-17 21:16:08 +00:00
Evan Cheng
08d0796cf5
Add implicit defs of XMM8 to XMM15 on 32-bit call instructions. While this is not technically true, it tells tblgen that these instructions "clobber" the entire XMM register file.
...
llvm-svn: 57723
2008-10-17 21:02:22 +00:00
Evan Cheng
e7afdb2a42
Add RCBarriers to TargetInstrDesc. It's a list of register classes the given instruction can "clobber". For example, on x86 the call instruction can modify all of the XMM and fp stack registers.
...
TableGen has been taught to generate the lists from instruction definitions.
llvm-svn: 57722
2008-10-17 21:00:09 +00:00
Evan Cheng
7792ca759d
Fix PR2898. Spiller delete a store for reuse before it knows for sure the reuse happened.
...
Patch by Lang Hames!
llvm-svn: 57720
2008-10-17 20:56:41 +00:00
Chris Lattner
75618cbb6f
add support for 128 bit aggregates.
...
llvm-svn: 57715
2008-10-17 19:59:51 +00:00
Bill Wendling
39b0625fe0
The Dwarf writer was comparing mangled and unmangled names for C++ code when we
...
have an unreachable block in a function. This was triggering the assert. This is
a horrid hack to cover this up.
Oh! for a good debug info architecture!
llvm-svn: 57714
2008-10-17 18:48:57 +00:00
Mon P Wang
fdfc9a2c4f
Added MemIntrinsicNode which is useful to represent target intrinsics that
...
touches memory and need an associated MemOperand
llvm-svn: 57712
2008-10-17 18:22:58 +00:00
Dan Gohman
96269ec52a
Factor out the code for mapping LLVM IR condition opcodes to
...
ISD condition opcodes into helper functions.
llvm-svn: 57710
2008-10-17 18:18:45 +00:00
Chris Lattner
d96b8d12bc
add support for 128 bit inputs on both x86-64 and x86-32.
...
llvm-svn: 57709
2008-10-17 18:15:05 +00:00
Chris Lattner
231a9466df
Fix a bug where the x86 backend would reject 64-bit r constraints when
...
in 32-bit mode instead of assigning a register pair. This has nothing to
do with PR2356, but I happened to notice it while working on it.
llvm-svn: 57704
2008-10-17 17:59:52 +00:00
Chris Lattner
e2342cd790
Fix PR2356 on PowerPC: if we have an input and output that are tied together
...
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand.
llvm-svn: 57699
2008-10-17 17:52:49 +00:00
Chris Lattner
d7b9ca9f8a
remove an xfailed test.
...
llvm-svn: 57695
2008-10-17 17:26:48 +00:00
Chris Lattner
9876270b99
remove this test: it is xfailed anyway, and is failing for a reason
...
other than why it was xfailed.
llvm-svn: 57694
2008-10-17 17:26:19 +00:00
Evan Cheng
fa61b6a4ba
Fix lfence and mfence encoding. These look like MRM5r and MRM6r instructions except they do not have any operands. The RegModRM byte is encoded with register number 0.
...
llvm-svn: 57692
2008-10-17 17:14:20 +00:00
Evan Cheng
733b305f24
getX86RegNum has long been moved to X86RegisterInfo.
...
llvm-svn: 57691
2008-10-17 17:12:18 +00:00
Chris Lattner
bb4ae53b94
refactor some code into a helper method, no functionality change.
...
llvm-svn: 57690
2008-10-17 17:05:25 +00:00
Chris Lattner
d748d12000
Keep track of *which* input constraint matches an output
...
constraint. Reject asms where an output has multiple
input constraints tied to it.
llvm-svn: 57687
2008-10-17 16:47:46 +00:00
Chris Lattner
1d0742a530
add an assert so that PR2356 explodes instead of running off an
...
array. Improve some minor comments, refactor some helpers in
AsmOperandInfo. No functionality change for valid code.
llvm-svn: 57686
2008-10-17 16:21:11 +00:00
Gabor Greif
7a56f56cf4
remove spurious space in link
...
llvm-svn: 57677
2008-10-17 14:43:58 +00:00
Gabor Greif
f1881095be
Add comment on how tagged pointers are
...
distinguished from normal (untagged) ones
as per review comment.
I am sufficiently unaquainted with doxygen to
defer the markup to someone with more experience.
llvm-svn: 57676
2008-10-17 08:31:36 +00:00
Evan Cheng
5fe2abfee8
Fix a very subtle spiller bug: UpdateKills should not forget to track defs of aliases.
...
llvm-svn: 57673
2008-10-17 06:16:07 +00:00
Chris Lattner
e087da1d39
add some simple hacky long double support for the CBE. This
...
should work for intel long double, but ppc long double aborts
in convert.
llvm-svn: 57672
2008-10-17 06:11:48 +00:00
Dan Gohman
1641e5e794
Use INT64_C to emit constant values, to avoid problems with
...
constants that don't fit in an int. This fixes
"this decimal constant is unsigned only in ISO C90"
warnings.
llvm-svn: 57668
2008-10-17 04:40:39 +00:00
Dan Gohman
268cfea6bc
Fun x86 encoding tricks: when adding an immediate value of 128,
...
use a SUB instruction instead of an ADD, because -128 can be
encoded in an 8-bit signed immediate field, while +128 can't be.
This avoids the need for a 32-bit immediate field in this case.
A similar optimization applies to 64-bit adds with 0x80000000,
with the 32-bit signed immediate field.
To support this, teach tablegen how to handle 64-bit constants.
llvm-svn: 57663
2008-10-17 01:33:43 +00:00
Dan Gohman
5d83bd89a5
Define patterns for shld and shrd that match immediate
...
shift counts, and patterns that match dynamic shift counts
when the subtract is obscured by a truncate node.
Add DAGCombiner support for recognizing rotate patterns
when the shift counts are defined by truncate nodes.
Fix and simplify the code for commuting shld and shrd
instructions to work even when the given instruction doesn't
have a parent, and when the caller needs a new instruction.
These changes allow LLVM to use the shld, shrd, rol, and ror
instructions on x86 to replace equivalent code using two
shifts and an or in many more cases.
llvm-svn: 57662
2008-10-17 01:23:35 +00:00
Dan Gohman
133708df57
Use 0 instead of false to return a null pointer.
...
llvm-svn: 57660
2008-10-17 00:56:52 +00:00
Dan Gohman
5a693288f6
Fix this test so it actually runs the grep lines.
...
llvm-svn: 57653
2008-10-16 23:57:54 +00:00
Dan Gohman
90f776986d
Trim #includes.
...
llvm-svn: 57649
2008-10-16 20:18:31 +00:00
Chris Lattner
39f881ab69
fix typo noticed by sdt
...
llvm-svn: 57644
2008-10-16 17:02:50 +00:00
Gabor Greif
2fa8672ee6
Introduce a typing refinenement on tagged data
...
using the 'volatile' qualifier. This should not have any operational consequences
on code, because tags should always be stripped off (giving a non-volatile pointer)
before dereferencing. The new qualification is there to catch some attempts to use
tagged pointers in a context where an untagged pointer is appropriate.
Notably this approach does not catch dereferencing of tagged pointers, but helps
in separating the two concepts a bit.
llvm-svn: 57641
2008-10-16 15:33:02 +00:00
Mikhail Glushenkov
6e23483516
Re-apply Makefile changes. Fix build with srcdir != objdir.
...
llvm-svn: 57636
2008-10-16 14:02:29 +00:00
Duncan Sands
1349af7df4
Fix warnings about mb/me being potentially used
...
uninitialized in these functions with gcc-4.3.
llvm-svn: 57635
2008-10-16 13:02:33 +00:00
Duncan Sands
e6315b4179
Fix "large integer implicitly truncated to unsigned type"
...
warning on x86-64 with gcc-4.3.
llvm-svn: 57634
2008-10-16 09:14:58 +00:00
Duncan Sands
10e931facf
Testcase for PR2762.
...
llvm-svn: 57633
2008-10-16 08:56:46 +00:00
Chris Lattner
9afb6adf17
add some notes
...
llvm-svn: 57631
2008-10-16 07:04:06 +00:00
Chris Lattner
9d39b11d10
add some notes and a file to collect unimplemented features in the
...
x86 backend. These will all be answered with "patches welcome", so
a PR doesn't help drive them along.
llvm-svn: 57630
2008-10-16 06:46:12 +00:00
Chris Lattner
562984c110
mark some targets as experimental. Andrew, if you think that Alpha is
...
basically working, feel free to remove the tag. The other targets have
really basic things that break them.
llvm-svn: 57628
2008-10-16 06:16:50 +00:00
Chris Lattner
6d79672ba0
Verify prefetch arguments, PR2576.
...
llvm-svn: 57626
2008-10-16 06:00:36 +00:00
Chris Lattner
3048ccc1f9
apply Eli's patch for PR2165 and provide a testcase.
...
llvm-svn: 57625
2008-10-16 05:26:51 +00:00
Dan Gohman
86527c1834
Const-ify several TargetInstrInfo methods.
...
llvm-svn: 57622
2008-10-16 01:49:15 +00:00
Dan Gohman
991376be85
Remove an unused variable.
...
llvm-svn: 57621
2008-10-16 01:47:47 +00:00
Dan Gohman
11c8a9a63a
Fix Instruction::isIdenticalTo and isSameOperationAs to recognize
...
additional information in Loads, Stores, Calls, Invokes,
InsertValueInsts, and ExtractValueInsts.
llvm-svn: 57620
2008-10-16 01:24:45 +00:00
Zhongxing Xu
b187adcf5a
Fix a calculation error in comments.
...
llvm-svn: 57619
2008-10-16 01:21:44 +00:00
Dan Gohman
3526f97d13
Rename AliasSet to SubRegs, to reflect changes in the surrounding code.
...
llvm-svn: 57618
2008-10-16 01:06:18 +00:00
Dan Gohman
46dafc2fb9
Move the include of MachineLocation.h into MachineModuleInfo.h
...
because it declares a std::vector<MachineMove>, and strict
concept checking requires the definition of MachineMove to be
available.
llvm-svn: 57617
2008-10-16 00:20:14 +00:00
Dan Gohman
440dea174f
Implement a SmallVector insert method that can insert multiple
...
copies of a value, and add several additional utilities to make
SmallVector better conform to the Container concept.
llvm-svn: 57616
2008-10-16 00:15:24 +00:00
Dan Gohman
307b390231
Fix several places that called mapped_iterator's constructor without
...
passing in a function object.
llvm-svn: 57615
2008-10-16 00:12:39 +00:00