Eric Christopher
649c823f75
mpsadbw is not commutative.
...
Fixes PR3440.
llvm-svn: 100736
2010-04-08 00:52:02 +00:00
Sean Callanan
dcd7a375dd
Added support for ARM disassembly to edis.
...
I also added a rule to the ARM target's Makefile to
build the ARM-specific instruction information table
for the enhanced disassembler.
I will add the test harness for all this stuff in
a separate commit.
llvm-svn: 100735
2010-04-08 00:48:21 +00:00
Chris Lattner
579e7eb423
convert a report_fatal_error that I was able to trigger into a nice error
...
so the user at least knows what inline asm is a problem. For example:
error: inline asm not supported yet: don't know how to handle tied indirect register inputs
pr8788-1.c:14:10: note: generated from here
asm ("\n" : "+r" (stack->regs)
^
Instead of:
fatal error: error in backend: Don't know how to handle tied indirect register inputs yet!
llvm-svn: 100731
2010-04-08 00:09:16 +00:00
Evan Cheng
176d2886e8
Fix typo.
...
llvm-svn: 100726
2010-04-07 23:51:38 +00:00
Chris Lattner
f9fbc74e40
minor tidying.
...
llvm-svn: 100725
2010-04-07 23:50:38 +00:00
Chris Lattner
96ed85d7ab
use assertions instead of unreachable for logic errors.
...
llvm-svn: 100724
2010-04-07 23:47:51 +00:00
Chris Lattner
393ea6fc22
introduce a new recoverable error handling API to LLVMContext
...
and use it in one place in inline asm handling stuff. Before
we'd generate this for an invalid modifier letter:
$ clang asm.c -c -o t.o
fatal error: error in backend: Invalid operand found in inline asm: 'abc incl ${0:Z}'
INLINEASM <es:abc incl ${0:Z}>, 10, %EAX<def>, 2147483657, %EAX, 14, %EFLAGS<earlyclobber,def,dead>, <!-1>
Now we generate this:
$ clang asm.c -c -o t.o
error: invalid operand in inline asm: 'incl ${0:Z}'
asm.c:3:12: note: generated from here
__asm__ ("incl %Z0" : "+r" (X));
^
1 error generated.
This is much better but still admittedly not great ("why" is the operand
invalid??), codegen should try harder with its diagnostics :)
llvm-svn: 100723
2010-04-07 23:40:44 +00:00
Dan Gohman
8f2ebaf7ec
Say bitcast instead of bitconvert.
...
llvm-svn: 100720
2010-04-07 23:22:42 +00:00
Chris Lattner
ea8b374616
rename llvm_install_error_handler -> install_fatal_error_handler
...
and friends.
llvm-svn: 100717
2010-04-07 23:12:29 +00:00
Ted Kremenek
cce8f54757
Update CMake build.
...
llvm-svn: 100714
2010-04-07 23:05:23 +00:00
Benjamin Kramer
8ae03bbc21
Update cmake build.
...
llvm-svn: 100713
2010-04-07 23:01:37 +00:00
Eric Christopher
70a6c8fd6d
Add support for stpncpy_chk.
...
llvm-svn: 100710
2010-04-07 23:00:07 +00:00
Chris Lattner
80b41881bc
rename llvm::llvm_report_error -> llvm::report_fatal_error
...
llvm-svn: 100709
2010-04-07 22:58:41 +00:00
Chris Lattner
a58082f349
add newlines at end of files.
...
llvm-svn: 100706
2010-04-07 22:54:55 +00:00
Chris Lattner
23334439e9
add newlines at the end of files.
...
llvm-svn: 100705
2010-04-07 22:53:17 +00:00
Chris Lattner
0768c834fe
remove some unneeded errorhandling stuff.
...
llvm-svn: 100703
2010-04-07 22:44:07 +00:00
Chris Lattner
f927d33d8c
minor tidying up
...
llvm-svn: 100702
2010-04-07 22:41:29 +00:00
Chris Lattner
cc827ee016
tidy up
...
llvm-svn: 100700
2010-04-07 22:29:10 +00:00
Dan Gohman
b5210c934f
Generalize IVUsers to track arbitrary expressions rather than expressions
...
explicitly split into stride-and-offset pairs. Also, add the
ability to track multiple post-increment loops on the same expression.
This refines the concept of "normalizing" SCEV expressions used for
to post-increment uses, and introduces a dedicated utility routine for
normalizing and denormalizing expressions.
This fixes the expansion of expressions which are post-increment users
of more than one loop at a time. More broadly, this takes LSR another
step closer to being able to reason about more than one loop at a time.
llvm-svn: 100699
2010-04-07 22:27:08 +00:00
Johnny Chen
b024d0a612
Missed this one line for the previous checkin to fix build warnings.
...
llvm-svn: 100697
2010-04-07 22:21:03 +00:00
Johnny Chen
9fdf028fd3
Fixed warnings pointed out by clang.
...
llvm-svn: 100696
2010-04-07 22:03:27 +00:00
Johnny Chen
16c0653745
Fixed warnings pointed out by clang.
...
Next to work on is ARMDisassemblerCore.cpp.
llvm-svn: 100695
2010-04-07 21:52:48 +00:00
Sean Callanan
3c69c6593a
Fixed a bug where the disassembler would allow an immediate
...
argument that had to be between 0 and 7 to have any value,
firing an assert later in the AsmPrinter. Now, the
disassembler rejects instructions with out-of-range values
for that immediate.
llvm-svn: 100694
2010-04-07 21:42:19 +00:00
Johnny Chen
4dc93f2195
Fixed 3 warnings pointed out by clang.
...
llvm-svn: 100693
2010-04-07 21:23:48 +00:00
Benjamin Kramer
0230783438
unXFAIL, arm disassembler was reenabled.
...
llvm-svn: 100692
2010-04-07 21:19:41 +00:00
Eric Christopher
0b9a4cb3d7
Fix typo and correct comment somewhat.
...
llvm-svn: 100691
2010-04-07 20:58:16 +00:00
Johnny Chen
2c992fb384
Re-enable ARM/Thumb disassembler and add a workaround for a memcpy() call in
...
ARMDecoderEmitter.cpp, with FIXME comment.
llvm-svn: 100690
2010-04-07 20:53:12 +00:00
Dale Johannesen
4cdb545401
Split big test into multiple directories to cater to
...
those who don't build all targets.
llvm-svn: 100688
2010-04-07 20:43:35 +00:00
Sean Callanan
8ac8cf3f10
Added an AsmLexer for the ARM target, which uses
...
a simple mapping of register names to IDs to
identify register tokens.
llvm-svn: 100685
2010-04-07 20:29:34 +00:00
Dale Johannesen
7ec4547ab6
Test that DEBUG_VALUE comments come out on a variety of targets.
...
llvm-svn: 100682
2010-04-07 20:01:24 +00:00
Dale Johannesen
8691bcbc2a
Educate GetInstrSizeInBytes implementations that
...
DBG_VALUE does not generate code.
llvm-svn: 100681
2010-04-07 19:51:44 +00:00
Gabor Greif
f2480270e1
fix 80-col violations
...
llvm-svn: 100677
2010-04-07 18:59:26 +00:00
Anton Korobeynikov
e5c1563130
Remove late ARM codegen optimization pass committed by accident.
...
It is not ready for public yet.
llvm-svn: 100673
2010-04-07 18:23:27 +00:00
Anton Korobeynikov
51fba0e4eb
Split A8/A9 itins - they already were too big.
...
llvm-svn: 100672
2010-04-07 18:22:11 +00:00
Anton Korobeynikov
7d6384b376
Add some crude itin approximation for VFP load / stores on A9
...
llvm-svn: 100671
2010-04-07 18:22:03 +00:00
Anton Korobeynikov
f2a19a64d1
Add some crude approximation for neon load/store instructions
...
llvm-svn: 100670
2010-04-07 18:21:58 +00:00
Anton Korobeynikov
1bd6022529
Add some A8-based approximation for instructions with unknown cycle times
...
llvm-svn: 100669
2010-04-07 18:21:52 +00:00
Anton Korobeynikov
51d00a7f48
Move NEON-VFP domain fixer upper, so post-RA scheduler would benefit from it.
...
llvm-svn: 100668
2010-04-07 18:21:46 +00:00
Anton Korobeynikov
0401f43ddc
Since tblgen bug was fixed (thanks Jakob!) we don't need InstrStage2 hack anymore.
...
llvm-svn: 100667
2010-04-07 18:21:41 +00:00
Anton Korobeynikov
cdb0066e5f
Fix A8 FP NEON MAC itins
...
llvm-svn: 100666
2010-04-07 18:21:33 +00:00
Anton Korobeynikov
a63bb55ad7
A9 NEON FP itins
...
llvm-svn: 100665
2010-04-07 18:21:27 +00:00
Anton Korobeynikov
d2770462d1
Some permute goodness for A9
...
llvm-svn: 100664
2010-04-07 18:21:22 +00:00
Anton Korobeynikov
4eb354a908
More shift itins for A9
...
llvm-svn: 100663
2010-04-07 18:21:16 +00:00
Anton Korobeynikov
f9463f5b98
More fixes for itins
...
llvm-svn: 100662
2010-04-07 18:21:10 +00:00
Anton Korobeynikov
0c3bc7a9ce
Fix invalid itins for 32-bit varians of VMLAL and friends
...
llvm-svn: 100661
2010-04-07 18:21:04 +00:00
Anton Korobeynikov
103c4e9803
Add MAC stuff for A9
...
llvm-svn: 100660
2010-04-07 18:20:58 +00:00
Anton Korobeynikov
bca57ef16b
Fix invalid NEON MAC itins on A8
...
llvm-svn: 100659
2010-04-07 18:20:53 +00:00
Anton Korobeynikov
dce0e2a918
Fix itins for VPAL
...
llvm-svn: 100658
2010-04-07 18:20:47 +00:00
Anton Korobeynikov
be68ff5b2c
Fix itins for VABA
...
llvm-svn: 100657
2010-04-07 18:20:42 +00:00
Anton Korobeynikov
fbc58bba2f
Correct VMVN itinerary: operand is read in the second cycle, not in the first.
...
llvm-svn: 100656
2010-04-07 18:20:36 +00:00