Commit Graph

49989 Commits

Author SHA1 Message Date
Andreas Bolka 3becda83ef Add another Strong-SIV testcase.
llvm-svn: 78446
2009-08-08 00:21:49 +00:00
Chris Lattner b1692dc267 don't check the result of printInstruction anymore.
llvm-svn: 78444
2009-08-08 00:05:42 +00:00
Anton Korobeynikov 674ffc1e59 Do not generate 32-bit call on win64 when imm does not fit
llvm-svn: 78443
2009-08-07 23:59:21 +00:00
Chris Lattner 6eceb7c85d rename test
llvm-svn: 78441
2009-08-07 23:57:30 +00:00
Chris Lattner ff8d04e815 merge a bunch of tests together into one, convert to filecheck which
is more tolerant of whitespace differences.

llvm-svn: 78439
2009-08-07 23:56:42 +00:00
Bob Wilson 40ff4a190f Add new intrinsics for Neon VTRN, VZIP and VUZP operations. Modeling these
as vector shuffles did not work out well.  Shuffles that produce double-wide
vectors accurately represent the operation but make it hard to do anything
with the results.  I considered splitting them up into 2 shuffles, one to
write each register separately, but there doesn't seem to be a good way to
reunite them for codegen.

llvm-svn: 78437
2009-08-07 23:53:05 +00:00
Daniel Dunbar 11595b20fc Add DEBUG_WITH_TYPE as a clean alternative to tweaking DEBUG_TYPE.
This:
--
#undef DEBUG_TYPE
#define DEBUG_TYPE "foo"
DEBUG(...)
#undef DEBUG_TYPE
#define DEBUG_TYPE ""
--
becomes this:
--
DEBUG_WITH_TYPE("foo", ...)
--

llvm-svn: 78435
2009-08-07 23:48:59 +00:00
Bob Wilson 97262e01d5 Convert more Neon tests to use FileCheck.
llvm-svn: 78433
2009-08-07 23:45:02 +00:00
Chris Lattner 84b9db2926 code cleanup
llvm-svn: 78432
2009-08-07 23:42:01 +00:00
Benjamin Kramer dd71ebbab0 Unbreak build.
llvm-svn: 78431
2009-08-07 23:37:47 +00:00
David Goodwin 742db6a6d4 Make NEON single-precision FP support the default for cortex-a8 (again).
llvm-svn: 78430
2009-08-07 23:32:33 +00:00
Chris Lattner e35472e3a9 remove a bunch of now-dead crud from the asmprinter and TAI interfaces.
llvm-svn: 78428
2009-08-07 23:16:27 +00:00
Chris Lattner 2d423d5a95 fix the column output stuff in the asmwriter from being dynamic and
driven by TAI to being static, driven by tblgen.  This means that a
target doesn't get impacted by this stuff at all if it doesn't opt
into it.

llvm-svn: 78427
2009-08-07 23:13:38 +00:00
Andreas Bolka 7a5c8db6b5 Fix copy-pasto.
llvm-svn: 78426
2009-08-07 22:55:26 +00:00
Anton Korobeynikov d28a26dfab Unbreak the stuff
llvm-svn: 78425
2009-08-07 22:51:13 +00:00
Argyrios Kyrtzidis 885e6382eb Modifications to dyn_cast/cast to make them work for objects too, instead of only pointers.
The use case is if you have a wrapper class:

class Base {
  void *Ptr;
public:
  Base() : Ptr(0) { }
  operator bool() const { return Ptr; }
.....
}

and sub-wrappers that have exactly the same size:

class Sub : public Base {
public:
....
static bool classof(const Base*);
}

and in the code you would do:

void f(Base b) {
  Sub sub = dyn_cast<Sub>(b);
  if (sub) {
    ....
  }
}

llvm-svn: 78424
2009-08-07 22:49:24 +00:00
Kevin Enderby d9f952948e Added Mac OS X assembler style conditional assembly. I may come back and see if
I can clean this up a bit more and do way with the TheCondState and just use
the top element on the TheCondStack if not empty.  Also may tweak the code
around ParseConditionalAssemblyDirectives() to simplify the AsmParser code.

llvm-svn: 78423
2009-08-07 22:46:00 +00:00
Chris Lattner 02bec55199 fix comment pastos
llvm-svn: 78422
2009-08-07 22:44:56 +00:00
Evan Cheng 8611e90668 Back out some of recent register scavenger change by John Mosby. It broke a number of ARM tests.
llvm-svn: 78421
2009-08-07 22:39:43 +00:00
Andrew Lenharth a190c169bf avoid this libcall with long inline expansion
llvm-svn: 78420
2009-08-07 22:37:20 +00:00
Anton Korobeynikov 23b28cb824 2 more vdup.32 cases
llvm-svn: 78419
2009-08-07 22:36:50 +00:00
Evan Cheng fb93be2b6f A big oops. Thumb1 default CC is a def of CPSR, not a use of CPSR.
llvm-svn: 78418
2009-08-07 22:36:37 +00:00
Chris Lattner 83eb9b0b01 strength reduce anonymous namespace to static.
llvm-svn: 78417
2009-08-07 22:27:19 +00:00
Chris Lattner 5333a7b8c5 tidy up
llvm-svn: 78416
2009-08-07 22:26:50 +00:00
Bill Wendling fe3bdb4b6f Reformatting of lines. Put multiple DEBUG statements under one DEBUG statement.
llvm-svn: 78411
2009-08-07 21:33:25 +00:00
Evan Cheng 6e130db3b7 Thumb2 32-bit ldm / stm needs .w suffix if submode is ia.
llvm-svn: 78410
2009-08-07 21:19:10 +00:00
Daniel Dunbar d0470d74df llvm-mc/AsmMatcher: Move emit for register -> enum matcher into a separate routine.
llvm-svn: 78408
2009-08-07 21:01:44 +00:00
Daniel Dunbar bfdd58e103 XFAIL 2006-11-06-StackTrace.cpp on powerpc-apple-darwin9 until someone feels
motivated to fix it.

llvm-svn: 78406
2009-08-07 20:50:58 +00:00
Daniel Dunbar 86ec7bae4f MSVC warning fixes; patch by Stein Roger!
llvm-svn: 78405
2009-08-07 20:50:09 +00:00
Daniel Dunbar 15b8037034 llvm-mc/AsmMatcher: Tweaks in response to feedback.
llvm-svn: 78404
2009-08-07 20:33:39 +00:00
Jeffrey Yasskin 6bf87df579 To catch bugs like the one fixed in
http://llvm.org/viewvc/llvm-project?view=rev&revision=78127, I'm changing the
ExecutionEngine's global mappings to hold AssertingVH<const GlobalValue>. That
way, if unregistering a mapping fails to actually unregister it, we'll get an
assert. Running the jit nightly tests didn't uncover any actual instances of
the problem.

This also uncovered the fact that AssertingVH<const X> didn't work, so I fixed
that too.

llvm-svn: 78400
2009-08-07 19:54:29 +00:00
Evan Cheng b64ec07ea6 This is done.
llvm-svn: 78399
2009-08-07 19:34:52 +00:00
Evan Cheng f0237b1aa6 Use 16-bit tMOVgpr2gpr instead of tMOVr to copy GPR registers in Thumb2 mode.
llvm-svn: 78398
2009-08-07 19:34:35 +00:00
Evan Cheng 4c3b1ca5a0 Fix support to use NEON for single precision fp math.
llvm-svn: 78397
2009-08-07 19:30:41 +00:00
Andreas Bolka 2f7562c83e SIV/MIV classification for LDA.
LoopDependenceAnalysis::getLoops is currently O(N*M) for a loop-nest of
depth N and a compound SCEV of M atomic SCEVs. As both N and M will
typically be very small, this should not be a problem. If it turns out
to be one, rewriting getLoops as SCEVVisitor will reduce complexity to
O(M).

llvm-svn: 78394
2009-08-07 18:23:41 +00:00
Dale Johannesen fe95ac0d35 Rewrite previous patch to follow Chris' stylistic
preference; no functional change.

llvm-svn: 78391
2009-08-07 17:41:29 +00:00
Devang Patel b1106fbdbc Fix dom frontier update. This fixes PR4667.
Patch by Jakub Staszak.

llvm-svn: 78388
2009-08-07 17:16:44 +00:00
Andreas Bolka 787591a594 Fix Strong-SIV testcase.
llvm-svn: 78384
2009-08-07 15:42:32 +00:00
Sanjiv Gupta 54c847cd6c Minor fixes to avoid using invalid debugloc.
llvm-svn: 78383
2009-08-07 11:00:02 +00:00
Benjamin Kramer 24ee4d0aa4 Simplify code and avoid allocations.
llvm-svn: 78382
2009-08-07 10:42:28 +00:00
Daniel Dunbar cf18d6befb Improve disabling of X86 AsmMatcher.
llvm-svn: 78381
2009-08-07 09:06:38 +00:00
Daniel Dunbar 32d0bb4c4e Disable X86 AsmMatcher for now, it is causing gcc-4.0 to run out of memory on
i386-apple-darwin9. This presumably will get fixed once the generated code
improves.

llvm-svn: 78379
2009-08-07 08:45:03 +00:00
Daniel Dunbar e10787e710 llvm-mc/AsmMatcher: Move to a slightly more sane matching design.
- Still not very sane, but a least its not 60k lines on X86. :)

 - In terms of correctness, currently some things are hard wired for X86, and we
   still don't properly resolve ambiguities (this is ignoring the instructions
   we don't even match due to funny .td stuff or other corner cases).

The high level changes:
 1. Represent tokens which are significant for matching explicitly as separate
    operands. This uniformly handles not only the instruction mnemonic, but
    also 'signficiant' syntax like the '*' in "call * ...".

 2. Separate the matching of operands to an instruction from the construction of
    the MCInst. In theory this can be done during matching, but since the number
    of variations is small I think it makes sense to decompose the problems.

 3. Improved a few of the mechanisms to at least successfully flatten / tokenize
    the assembly strings for PowerPC and ARM.

 4. The comment at the top of AsmMatcherEmitter.cpp explains the approach I'm
    moving towards for handling ambiguous instructions. The high-bit is to infer
    a partial ordering of the operand classes (and force the user to specify one
    if we can't) and use that to resolve ambiguities.

llvm-svn: 78378
2009-08-07 08:26:05 +00:00
Evan Cheng 82ff022ed2 Error out, rather than infinite looping, if constant island pass can't converge.
llvm-svn: 78377
2009-08-07 07:35:21 +00:00
Evan Cheng b1aeeed03e Another coalescer bug. When a dead copy is eliminated, transfer the kill to a def of the exact register rather than a super-register.
llvm-svn: 78376
2009-08-07 07:14:14 +00:00
Evan Cheng 317bd7aab2 tBfar is bl, which clobbers LR.
llvm-svn: 78370
2009-08-07 05:45:07 +00:00
Sanjiv Gupta 003dc1fa5b Run memsel inserter just before emit assembly to avoid tinkering by other passes.
llvm-svn: 78369
2009-08-07 05:44:27 +00:00
Daniel Dunbar 9a4ae0e9e6 Update CMake.
llvm-svn: 78367
2009-08-07 03:59:06 +00:00
Daniel Dunbar 6310426a55 Remove unused function.
llvm-svn: 78366
2009-08-07 03:52:07 +00:00
Andrew Lenharth a3a3453acf These should be expanded
llvm-svn: 78365
2009-08-07 02:17:44 +00:00