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
Dan Gohman
8075c32a55
Fix a subtle bug in DeadMachineInstructionElim's liveness
...
computation. A def of a register doesn't necessarily kill
live super-registers.
llvm-svn: 57614
2008-10-16 00:11:23 +00:00
Dan Gohman
6dba6b2384
Fix the predicate for memop64 to be a regular load, not just
...
an unindexed load.
llvm-svn: 57612
2008-10-16 00:03:00 +00:00
Dan Gohman
6f40163d83
Teach instcombine's visitLoad to scan back several instructions
...
to find opportunities for store-to-load forwarding or load CSE,
in the same way that visitStore scans back to do DSE. Also, define
a new helper function for testing whether the addresses of two
memory accesses are known to have the same value, and use it in
both visitStore and visitLoad.
These two changes allow instcombine to eliminate loads in code
produced by front-ends that frequently emit obviously redundant
addressing for memory references.
llvm-svn: 57608
2008-10-15 23:19:35 +00:00
Dan Gohman
0c160fbe89
Correct the name of isTrapping in comments.
...
llvm-svn: 57606
2008-10-15 22:56:21 +00:00
Dan Gohman
b7435b1c03
Fix whitespace in a comment.
...
llvm-svn: 57605
2008-10-15 22:55:03 +00:00
Duncan Sands
9014e7b0dd
Testcase for PR2894.
...
llvm-svn: 57604
2008-10-15 22:34:34 +00:00
Nicolas Geoffray
db9beb7d40
Remove naming Tilmann for generics.
...
llvm-svn: 57599
2008-10-15 20:25:04 +00:00
Anton Korobeynikov
1442f5c066
Add global variable to test for consistency
...
llvm-svn: 57597
2008-10-15 20:22:44 +00:00
Anton Korobeynikov
982947e183
This is not failing anymore
...
llvm-svn: 57596
2008-10-15 20:13:10 +00:00
Anton Korobeynikov
e322e95ecd
Also properly handle linking of strong alias and weak global
...
llvm-svn: 57595
2008-10-15 20:10:50 +00:00
Anton Korobeynikov
d514695f79
Properly handle linking of strong alias with weak function, this fixes PR2883
...
llvm-svn: 57594
2008-10-15 20:10:08 +00:00
Bill Wendling
8d26b9c07a
Testcase for PR1638.
...
llvm-svn: 57590
2008-10-15 18:27:15 +00:00
Dan Gohman
df18b6f3db
Fix a missing space after the return type in invoke statements.
...
This fixes PR2894.
llvm-svn: 57589
2008-10-15 18:02:08 +00:00
Chris Lattner
ab625c3b99
Fix PR2115 by doxygenating Use more, and make some more methods private.
...
llvm-svn: 57587
2008-10-15 16:56:14 +00:00
Chris Lattner
2ce4f1e7ad
move PR1941 here.
...
llvm-svn: 57586
2008-10-15 16:33:52 +00:00
Bill Wendling
3106c13251
Unbreak the build. Please test out the proper fix for this by compiling LLVM
...
with the build directory different from the source directory.
llvm-svn: 57583
2008-10-15 16:20:13 +00:00