1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-28 14:32:51 +01:00
Commit Graph

36562 Commits

Author SHA1 Message Date
Dan Gohman
13d1327796 Factor the addressing mode and the load/store VT out of LoadSDNode
and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.

llvm-svn: 46538
2008-01-30 00:15:11 +00:00
Evan Cheng
618761903d Work in progress. This patch *fixes* x86-64 calls which are modelled as StructRet but really should be return in registers, e.g. _Complex long double, some 128-bit aggregates. This is a short term solution that is necessary only because llvm, for now, cannot model i128 nor call's with multiple results.
Status: This only works for direct calls, and only the caller side is done. Disabled for now.

llvm-svn: 46527
2008-01-29 19:34:22 +00:00
Evan Cheng
6a35d0f26e Update this test case.
llvm-svn: 46526
2008-01-29 19:30:05 +00:00
Duncan Sands
f451b75224 When expanding an operand, it's not the result value
type that matters but the operand type.  This fixes
2008-01-08-IllegalCMP.ll which crashed with the new
legalize infrastructure because SETCC with result
type i8 and operand type i64 was being custom expanded
by the X86 backend.  With this fix, the gcc build gets
as far as the first libcall.

llvm-svn: 46525
2008-01-29 19:29:08 +00:00
Chris Lattner
e08ec140e0 Don't let globalopt hack on volatile loads or stores.
llvm-svn: 46523
2008-01-29 19:01:37 +00:00
Ted Kremenek
acc17d1b24 Altered ctor for APSInt to accept an optional "isUnsigned" flag. Default
behavior is unchanged.

llvm-svn: 46521
2008-01-29 18:55:14 +00:00
Dan Gohman
aad233ea10 Use empty() instead of comparing size() with zero.
llvm-svn: 46514
2008-01-29 13:02:09 +00:00
Dan Gohman
630f3a713c Fix a typo in a comment.
llvm-svn: 46513
2008-01-29 12:43:50 +00:00
Dan Gohman
f5b35ce0f9 Update this file for 2.0 syntax.
llvm-svn: 46512
2008-01-29 12:35:50 +00:00
Dan Gohman
6f9748b626 Add comments describing what the loop depth values mean. Also, make a
minor simplification to the loop depth calculation code.

llvm-svn: 46511
2008-01-29 12:12:40 +00:00
Dan Gohman
241714222a Fix 80-col violations.
llvm-svn: 46510
2008-01-29 12:09:55 +00:00
Dan Gohman
daa38f69cf Remove top-level const qualifiers from casts, avoiding associated
compiler warnings.

llvm-svn: 46509
2008-01-29 12:08:20 +00:00
Dan Gohman
4463225e99 Fix a typo in a comment.
llvm-svn: 46508
2008-01-29 12:07:11 +00:00
Dan Gohman
c1c27c9fda Fix a typo in a comment.
llvm-svn: 46507
2008-01-29 12:06:33 +00:00
Dan Gohman
522401f26e Add explicit keywords.
llvm-svn: 46506
2008-01-29 11:36:12 +00:00
Chris Lattner
f898e3cc8f llvm.sqrt(-0.0) is defined.
llvm-svn: 46500
2008-01-29 07:00:44 +00:00
Chris Lattner
83f411c586 eliminate additions of 0.0 when they are obviously dead. This has to be careful to
avoid turning -0.0 + 0.0 -> -0.0 which is incorrect.

llvm-svn: 46499
2008-01-29 06:52:45 +00:00
Owen Anderson
2688087c9c Add a testcase for eliminating memcpy's at the end of functions. Forgot to commit this with my last commit.
llvm-svn: 46497
2008-01-29 06:40:32 +00:00
Chris Lattner
35f063e37c Add target triples to these so they don't fail on linux.
llvm-svn: 46496
2008-01-29 06:26:07 +00:00
Duncan Sands
390baa691d Use getPreferredAlignmentLog or getPreferredAlignment
to get the alignment of global variables, rather than
using hand-made versions.

llvm-svn: 46495
2008-01-29 06:23:44 +00:00
Owen Anderson
96b9e5423a Add support for eliminating memcpy's at the end of functions. Also fix some errors I noticed in
the handling of eliminating stores to byval arguments.

llvm-svn: 46494
2008-01-29 06:18:36 +00:00
Duncan Sands
47bcca5cea This would be better done as an executable test.
llvm-svn: 46493
2008-01-29 06:04:54 +00:00
Duncan Sands
84bc852b52 After recent changes we fail to optimize this test
sufficiently to have it pass.  I'm removing it from
the testsuite and adding it to PR452 instead.

llvm-svn: 46492
2008-01-29 05:57:23 +00:00
Owen Anderson
fc41146d15 RegAllocBigBlock doesn't need LiveVariables either.
llvm-svn: 46488
2008-01-29 02:32:13 +00:00
Scott Michel
81b8a391a6 Fix to bug 1951: tblgen gratuitously renames variables when no temporary was
generated. This feature would only show up in fairly complex patterns, such
as this one in CellSPU:

  def : Pat<(add (SPUhi tconstpool:$in, 0), (SPUlo tconstpool:$in, 0)),
	    (IOHLlo (ILHUhi tconstpool:$in), tconstpool:$in)>;

which generated the following emit code:

SDNode *Emit_0(const SDOperand &N, unsigned Opc0, unsigned Opc1, MVT::ValueType VT0, MVT::ValueType VT1) DISABLE_INLINE {
  SDOperand N0 = N.getOperand(0);
  SDOperand N00 = N0.getOperand(0);
  SDOperand N01 = N0.getOperand(1);
  SDOperand N1 = N.getOperand(1);
  SDOperand N10 = N1.getOperand(0);
  SDOperand N11 = N1.getOperand(1);
  SDOperand Tmp3(CurDAG->getTargetNode(Opc0, VT0, N00), 0);
  return CurDAG->SelectNodeTo(N.Val, Opc1, VT1, Tmp3, Tmp2); /* Tmp2 s/b N00 */
}

Tested against the test suites without incident.

llvm-svn: 46487
2008-01-29 02:29:31 +00:00
Nate Begeman
3eeac138f9 Properly expand extract-element for non-power-of-2 codegen
llvm-svn: 46486
2008-01-29 02:24:00 +00:00
Dale Johannesen
f12104ce4b Handle 'X' constraint in asm's better.
llvm-svn: 46485
2008-01-29 02:21:21 +00:00
Devang Patel
86ff705c22 Filter loops that subtract induction variables.
These loops are not yet handled.

Fix PR 1912.

llvm-svn: 46484
2008-01-29 02:20:41 +00:00
Scott Michel
dc780aeb57 Overhaul Cell SPU's addressing mode internals so that there are now
only two addressing mode nodes, SPUaform and SPUindirect (vice the
three previous ones, SPUaform, SPUdform and SPUxform). This improves
code somewhat because we now avoid using reg+reg addressing when
it can be avoided. It also simplifies the address selection logic,
which was the main point for doing this.

Also, for various global variables that would be loaded using SPU's
A-form addressing, prefer D-form offs[reg] addressing, keeping the
base in a register if the variable is used more than once.

llvm-svn: 46483
2008-01-29 02:16:57 +00:00
Devang Patel
51fde22367 New test.
llvm-svn: 46479
2008-01-29 01:10:04 +00:00
Bill Wendling
839e21bce4 Add test to make sure that #pragma mark/error doesn't error if there are
unbalanced quotes.

llvm-svn: 46476
2008-01-29 00:41:29 +00:00
Ted Kremenek
752475ffa1 Added destructor for template class FoldingSetNodeWrapper.
Added getValue() to FoldingSetNodeWrapper.

llvm-svn: 46465
2008-01-28 22:05:23 +00:00
Lauro Ramos Venancio
ad2a3eb416 Simplify the code and fix a typo.
llvm-svn: 46458
2008-01-28 20:02:51 +00:00
Duncan Sands
93f785a638 Pure/const functions with ByVal parameters cannot
be marked readonly either.

llvm-svn: 46456
2008-01-28 19:25:47 +00:00
Lauro Ramos Venancio
947e17ae75 Fix fpcmp infinite loop when comparing "29-266" with "29-268".
llvm-svn: 46455
2008-01-28 18:23:23 +00:00
Chris Lattner
20854cf4e7 this test is now compiled into the right thing.
llvm-svn: 46454
2008-01-28 17:38:46 +00:00
Duncan Sands
069f3f7631 Unbreak builds with differing object and source
directories.  Patch by Sam Bishop.

llvm-svn: 46453
2008-01-28 17:38:30 +00:00
Duncan Sands
ecab334ce0 Make this more likely to be passed byval.
llvm-svn: 46451
2008-01-28 10:35:11 +00:00
Bill Wendling
5b6f587a80 If the function has no machine instructions, then emit a "nop" so that
the function label isn't associated with something it shouldn't be.

llvm-svn: 46449
2008-01-28 09:15:03 +00:00
Chris Lattner
dc0c4352bd Transform calls to memcpy into llvm.memcpy calls, patch by Eli Friedman.
llvm-svn: 46433
2008-01-28 04:41:43 +00:00
Chris Lattner
01aaf36663 reduce duplicate -I flags passed to the compiler, cleaning up the VERBOSE
output.  Patch contributed by Sam Bishop!

llvm-svn: 46432
2008-01-28 04:18:41 +00:00
Nick Lewycky
6b070b1b93 Handle some more combinations of extend and icmp. Fixes PR1940.
llvm-svn: 46431
2008-01-28 03:48:02 +00:00
Chris Lattner
359756ea4b Fix PR1932 by disabling an xform invalid for fdiv.
llvm-svn: 46429
2008-01-28 00:58:18 +00:00
Chris Lattner
ff2b9ef01b make handling of overflow and undefined results much more clear.
Patch by Eli Friedman, thanks!

llvm-svn: 46428
2008-01-28 00:36:27 +00:00
Chris Lattner
7250586ec9 Fix PR1938 by forcing the code that uses an undefined value to branch one
way or the other.  Rewriting the code itself prevents subsequent analysis
passes from making contradictory conclusions about the code that could 
cause an infeasible path to be made feasible.

llvm-svn: 46427
2008-01-28 00:32:30 +00:00
Chris Lattner
724cda19dc Always for PACKAGEVERSION to 'mainline' for teh llvm web page.
llvm-svn: 46425
2008-01-27 23:43:26 +00:00
Chris Lattner
26ec133a4d Fix PowerPC/./2007-10-18-PtrArithmetic.ll
llvm-svn: 46424
2008-01-27 23:32:17 +00:00
Chris Lattner
26a8116f49 Update this test. Due to dag combiner improvements, we now compile
f7/f11 to:

_f7:
	eor r0, r0, #2, 2 @ -2147483648
	bx lr
_f11:
	bic r0, r0, #2, 2 @ -2147483648
	bx lr

instead of:

_f7:
	fmsr s0, r0
	fnegs s0, s0
	fmrs r0, s0
	bx lr

_f11:
	fmsr s0, r0
	fabss s0, s0
	fmrs r0, s0
	bx lr

llvm-svn: 46423
2008-01-27 23:26:37 +00:00
Chris Lattner
3d4fa8f00f fix a crash on CodeGen/X86/vector-rem.ll
llvm-svn: 46422
2008-01-27 23:21:58 +00:00
Chris Lattner
8354bf8cfb Add support for frameworks. Patch by Shantonu Sen!
llvm-svn: 46421
2008-01-27 22:58:59 +00:00