Evan Cheng
c9cb37516d
Teach if-converter to be more careful with predicating instructions that would
...
take multiple cycles to decode.
For the current if-converter clients (actually only ARM), the instructions that
are predicated on false are not nops. They would still take machine cycles to
decode. Micro-coded instructions such as LDM / STM can potentially take multiple
cycles to decode. If-converter should take treat them as non-micro-coded
simple instructions.
llvm-svn: 113570
2010-09-10 01:29:16 +00:00
Eric Christopher
54e138031e
Fix build error.
...
llvm-svn: 113566
2010-09-10 00:35:09 +00:00
Eric Christopher
92506682eb
Update comments, reorganize some code, rename variables to be
...
more clear. No functional change.
llvm-svn: 113565
2010-09-10 00:34:35 +00:00
Eric Christopher
06f4af2ef4
64-bit fp loads can come straight out of the constant pool, not as
...
bad as I'd thought.
llvm-svn: 113561
2010-09-09 23:50:00 +00:00
Dan Gohman
a9936d3f97
Discard metadata produced by LLVM 2.7. The value enumeration it used
...
is different from what the code now uses in a two ways: NamedMDNodes
were considered Values and included in the numbering, and the
function-local metadata counter wasn't reset between functions.
The later problem breaks lazy deserialization, so instead of trying
to emulate the old numbering, just drop the old metadata. The only
in-tree use case is debug info with LTO, where the QOI loss is
considered acceptable.
llvm-svn: 113557
2010-09-09 23:12:39 +00:00
Daniel Dunbar
547563df12
llvm-mc: Don't crash when using -n and we see a directive before the initial section.
...
- This is annoying, because we have to scatter this check everywhere that could emit real data, but I see no better solution.
llvm-svn: 113552
2010-09-09 22:42:59 +00:00
Daniel Dunbar
07c0ca2a51
llvm-mc: Make sure we exit != 0 if any errors are encountered.
...
llvm-svn: 113551
2010-09-09 22:42:56 +00:00
Jakob Stoklund Olesen
79f7387096
XFAIL test under valgrind. It is not really our problem if sh is leaking.
...
llvm-svn: 113550
2010-09-09 22:02:13 +00:00
Eric Christopher
3c86728bd6
SIToFP and FPToSI conversions work only on fp-reg to fp-reg. Move
...
some data around and implement a couple of move routines to do this.
llvm-svn: 113546
2010-09-09 21:44:45 +00:00
Dan Gohman
3c81335a10
MDNodes are not Constants.
...
llvm-svn: 113539
2010-09-09 20:54:24 +00:00
Dan Gohman
2a0bee3d07
Print invalid metadata references as <badref>, for consistency with
...
regular value references.
llvm-svn: 113538
2010-09-09 20:53:58 +00:00
Eric Christopher
d5f271d31e
New "move to fp reg" routine. Use it.
...
llvm-svn: 113537
2010-09-09 20:49:25 +00:00
Eric Christopher
7208671884
"Strike that, reverse it." -- Mr. Wonka.
...
Truncate when truncating, extend when extending.
llvm-svn: 113536
2010-09-09 20:36:19 +00:00
Owen Anderson
f7276d42d3
What the loop unroller cares about, rather than just not unrolling loops with calls, is
...
not unrolling loops that contain calls that would be better off getting inlined. This mostly
comes up when an interleaved devirtualization pass has devirtualized a call which the inliner
will inline on a future pass. Thus, rather than blocking all loops containing calls, add
a metric for "inline candidate calls" and block loops containing those instead.
llvm-svn: 113535
2010-09-09 20:32:23 +00:00
Eric Christopher
38194e51cc
Add FPTrunc, fix some bugs where I forgot to update the value map.
...
llvm-svn: 113533
2010-09-09 20:26:31 +00:00
Owen Anderson
db6a08beef
Revert r113439, which relaxed the requirement that loops containing calls cannot be unrolled. After some discussion,
...
there seems to be a better way to achieve the same effect.
llvm-svn: 113528
2010-09-09 20:02:23 +00:00
Owen Anderson
82f5f82ccd
r113526 introduced an unintended change to the loop unrolling threshold. Revert it.
...
llvm-svn: 113527
2010-09-09 19:11:57 +00:00
Owen Anderson
46189436ea
Fix typo in code to cap the loop code size reduction calculation.
...
llvm-svn: 113526
2010-09-09 19:08:59 +00:00
Owen Anderson
a182e2b20b
Use code-size reduction metrics to estimate the amount of savings we'll get when we unroll a loop.
...
Next step is to recalculate the threshold values given this new heuristic.
llvm-svn: 113525
2010-09-09 19:07:31 +00:00
Eric Christopher
2ba28d3889
Basic FP->Int, Int->FP conversions.
...
llvm-svn: 113523
2010-09-09 18:54:59 +00:00
Bruno Cardoso Lopes
49efee5c95
Add one more pattern to fallback movddup
...
llvm-svn: 113522
2010-09-09 18:48:34 +00:00
Dan Gohman
7fbaed00bf
Extend the getDependence query with support for PHI translation.
...
llvm-svn: 113521
2010-09-09 18:37:31 +00:00
Dan Gohman
f24287edb1
Add a getPointerOperand() helper function to VAArgInst, for consistency
...
with LoadInst and StoreInst.
llvm-svn: 113520
2010-09-09 18:32:40 +00:00
Evan Cheng
b79a03a3ca
For each instruction itinerary class, specify the number of micro-ops each
...
instruction in the class would be decoded to. Or zero if the number of
uOPs must be determined dynamically.
This will be used to determine the cost-effectiveness of predicating a
micro-coded instruction.
llvm-svn: 113513
2010-09-09 18:18:55 +00:00
Dan Gohman
e1fb5b5738
Fix this comment.
...
llvm-svn: 113511
2010-09-09 18:04:22 +00:00
Benjamin Kramer
7ca791ef4f
MCELF: Write relocation fragments in the right endian.
...
- This code is gross, but does the job for now.
llvm-svn: 113509
2010-09-09 18:01:29 +00:00
Roman Divacky
536c4ab8bd
Make ELF OS ABI dependent on the OS from target triple.
...
llvm-svn: 113508
2010-09-09 17:57:50 +00:00
Daniel Dunbar
59aca55047
build: Allow subdir Makefiles to provide an alternate location for the SRCDIR
...
Makefile, which can be used to allow building out of tree sources.
llvm-svn: 113503
2010-09-09 17:38:11 +00:00
Dale Johannesen
de53df20d6
Move remaining MMX instructions from SSE to MMX.
...
llvm-svn: 113501
2010-09-09 17:13:07 +00:00
Owen Anderson
9a194c80c4
Refactor code-size reduction estimation methods out of InlineCostAnalyzer and into CodeMetrics. They
...
don't use any InlineCostAnalyzer state, and are useful for other clients who don't necessarily want to use
all of InlineCostAnalyzer's logic, some of which is fairly inlining-specific.
No intended functionality change.
llvm-svn: 113499
2010-09-09 16:56:42 +00:00
Daniel Dunbar
8c7fe0e9d0
MC: Give a (lame) hard error if a .org directive would create an unreasonably
...
large object file (> 1GB).
llvm-svn: 113494
2010-09-09 16:23:33 +00:00
Daniel Dunbar
90172ab0b5
tests: XFAIL a handful of tests on the vg_leak builder, so we can get back to
...
green.
llvm-svn: 113491
2010-09-09 15:50:19 +00:00
Daniel Dunbar
082043aa74
projects: Don't try to build libcxx if one happens to have it checked out into
...
llvm/projects.
llvm-svn: 113490
2010-09-09 15:49:32 +00:00
Benjamin Kramer
8849104392
Add an elf-dumper utility.
...
- Output format and some of the code stolen from macho-dump.
- Somewhat incomplete and probably buggy.
- Comes with a very basic test.
llvm-svn: 113488
2010-09-09 15:00:41 +00:00
NAKAMURA Takumi
aa9b257b29
lib/System/Host.cpp: 7bit-ize. Eliminate "TM" and "(R)" in comments.
...
llvm-svn: 113486
2010-09-09 13:30:48 +00:00
Duncan Sands
4a66e8e24d
Get rid of the last use of -m64 in FrontendC. This solution
...
of checking for either 4 or 8 is not very satisfactory, but
it would catch the original problem (an alignment of 1).
llvm-svn: 113485
2010-09-09 12:57:29 +00:00
Duncan Sands
3030644248
Another test that uses -m64. Here too it looks like it can be
...
removed. Not that the XTARGET wasn't doing anything since it
does nothing without an accompanying XFAIL.
llvm-svn: 113484
2010-09-09 12:48:04 +00:00
Duncan Sands
e89d619d23
On i386, llvm-gcc cannot be assumed to support -m64. Since these
...
tests pass here (i686-linux and x86-64-linux) without -m64, simply
remove the -m64.
llvm-svn: 113483
2010-09-09 12:43:44 +00:00
Duncan Sands
5e4622cc87
This script is executable.
...
llvm-svn: 113479
2010-09-09 09:37:54 +00:00
Kalle Raiskila
0f53cff753
Silence compiler warning.
...
llvm-svn: 113478
2010-09-09 07:30:15 +00:00
Bob Wilson
524123343c
Fix NEON VLD pseudo instruction itineraries that were incorrectly copied from
...
the VST pseudos. The VLD/VST scheduling still needs work (see pr6722), but
at least we shouldn't confuse the loads with the stores.
llvm-svn: 113473
2010-09-09 05:40:26 +00:00
Eric Christopher
e5bf22fd67
Nuke whitespace and fix some indenting.
...
llvm-svn: 113463
2010-09-09 01:06:51 +00:00
Dale Johannesen
7469923117
Move most MMX instructions (defined as anything that
...
uses MMX, even if it also uses other things) from InstrSSE
into InstrMMX. No (intended) functional change.
llvm-svn: 113462
2010-09-09 01:02:39 +00:00
Eric Christopher
8c3a582b5f
Handle 64-bit floating point binops as well.
...
llvm-svn: 113461
2010-09-09 01:02:03 +00:00
Eric Christopher
f2f2b06719
Basic 32-bit FP operations.
...
llvm-svn: 113459
2010-09-09 00:53:57 +00:00
Bob Wilson
2b284b178f
For double-spaced VLD3/VLD4 instructions, copy the explicit super-register use
...
operand from the pseudo instruction to the new instruction as an implicit use.
This will preserve any other flags (e.g., kill) on the operand.
llvm-svn: 113456
2010-09-09 00:38:32 +00:00
Eric Christopher
88c13fcb96
Handle float->double extension.
...
llvm-svn: 113455
2010-09-09 00:26:48 +00:00
Eric Christopher
ebfbac39cf
Rewrite TargetMaterializeConstant splitting it out into two functions
...
for integer and fp constants. Implement todo to use vfp3 instructions
to materialize easy constants if we can.
llvm-svn: 113453
2010-09-09 00:19:41 +00:00
Bob Wilson
92b5646145
Simplify copying over operands from pseudo NEON load/store instructions.
...
For VLD3/VLD4 with double-spaced registers, add the implicit use of the
super register for both the instruction loading the even registers and the
instruction loading the odd registers.
llvm-svn: 113452
2010-09-09 00:15:32 +00:00
Jakob Stoklund Olesen
6ddb47f4ee
Rearrange for better alignment and less padding
...
llvm-svn: 113445
2010-09-08 23:54:00 +00:00