summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
* Fix typo in MipsMCTargetDesc.h; Patch supplied by Liu (proljc@gmail.com)James Molloy2011-08-301-4/+4
| | | | llvm-svn: 138796
* Change ARM / Thumb2 addc / adde and subc / sube modeling to use physicalEvan Cheng2011-08-307-346/+358
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | register dependency (rather than glue them together). This is general goodness as it gives scheduler more freedom. However it is motivated by a nasty bug in isel. When a i64 sub is expanded to subc + sube. libcall #1 \ \ subc \ / \ \ / \ \ / libcall #2 sube If the libcalls are not serialized (i.e. both have chains which are dag entry), legalizer can serialize them in arbitrary orders. If it's unlucky, it can force libcall #2 before libcall #1 in the above case. subc | libcall #2 | libcall #1 | sube However since subc and sube are "glued" together, this ends up being a cycle when the scheduler combine subc and sube as a single scheduling unit. The right solution is to fix LegalizeType too chains the libcalls together. However, LegalizeType is not processing nodes in order so that's harder than it should be. For now, the move to physical register dependency will do. rdar://10019576 llvm-svn: 138791
* Revert 138781. It's not playing nicely with the immediate forms for ADC.Jim Grosbach2011-08-291-20/+0
| | | | llvm-svn: 138782
* Thumb2 assembler aliases for ADC/SBC w/o the .w suffix.Jim Grosbach2011-08-291-0/+20
| | | | llvm-svn: 138781
* Add missing encoding information for some of the GPR<->FP register moves.Owen Anderson2011-08-291-2/+23
| | | | llvm-svn: 138780
* Thumb2 parsing and encoding for IT blocks.Jim Grosbach2011-08-291-23/+104
| | | | llvm-svn: 138773
* Explicitly zero out parts of a vector which are required to be zero by the ↵Eli Friedman2011-08-291-0/+3
| | | | | | algorithm in LowerUINT_TO_FP_i32. This only has a substantial effect on the generated code when the input is extracted from a vector register; other ways of loading an i32 do the appropriate zeroing implicitly. Fixes PR10802. llvm-svn: 138768
* Apply the same fix for the change in LDR_PRE_IMM/LDRB_PRE_IMM operand ↵Owen Anderson2011-08-291-1/+2
| | | | | | encodings to the load-store optimizer that I applied to the instruction selector in r138758. Fixes ary3 from the nightly test suite. llvm-svn: 138766
* Specify an additional fixed bit in the PLD/PLDW/PLI register-register encoding.Owen Anderson2011-08-291-0/+1
| | | | llvm-svn: 138760
* addrmode_imm12 and addrmode2_offset encode their immediate values ↵Owen Anderson2011-08-291-4/+28
| | | | | | differently. Update the manual instruction selection code that was encoding them the addrmode2 way even though LDR_PRE_IMM/LDRB_PRE_IMM had switched to addrmode_imm12. Should fix a number of nightly test failures. llvm-svn: 138758
* Improve handling of #-0 offsets for many more pre-indexed addressing modes.Owen Anderson2011-08-293-6/+15
| | | | llvm-svn: 138754
* Expand ATOMIC_LOAD and ATOMIC_STORE for architectures I don't know well ↵Eli Friedman2011-08-294-0/+10
| | | | | | enough to fix properly. llvm-svn: 138751
* Update the load-store optimizer for changes to the operands on LDR_PRE_IMM ↵Owen Anderson2011-08-291-4/+10
| | | | | | and LDRB_PRE_IMM in r138653. llvm-svn: 138746
* Move non-intruction patterns to a more appropriate place!Bruno Cardoso Lopes2011-08-291-31/+33
| | | | llvm-svn: 138744
* Add support for parsing #-0 on non-memory-operand immediate values, and add ↵Owen Anderson2011-08-291-2/+13
| | | | | | a testcase that necessitates it. llvm-svn: 138739
* Remove premature previous commit.Nicolas Geoffray2011-08-281-25/+7
| | | | llvm-svn: 138725
* Encoding of instructions referencing segments has changed. Do what ↵Nicolas Geoffray2011-08-281-7/+25
| | | | | | X86MCCodeEmitter does. llvm-svn: 138723
* Silence GCC warnings and make an array const.Benjamin Kramer2011-08-272-7/+6
| | | | llvm-svn: 138706
* Improve encoding support for BLX with immediat eoperands, and fix a BLX ↵Owen Anderson2011-08-264-12/+25
| | | | | | decoding bug this uncovered. llvm-svn: 138675
* Correct encoding of BL with immediate offset.Owen Anderson2011-08-261-5/+10
| | | | llvm-svn: 138673
* ARM assembly parsing tweak for pldw.Jim Grosbach2011-08-261-3/+4
| | | | llvm-svn: 138669
* Spelling fail.Owen Anderson2011-08-261-1/+1
| | | | llvm-svn: 138667
* Thumb2 assembler parsing and encoding of IT instruction.Jim Grosbach2011-08-262-12/+136
| | | | | | | | This handles only the handling of the IT instruction itself, not the processing and validation of the instructions in the IT block. That's next, and will include encoding tests for IT itself. llvm-svn: 138665
* Add support for generating CMPXCHG16B on x86-64 for the cmpxchg IR instruction.Eli Friedman2011-08-267-48/+94
| | | | llvm-svn: 138660
* Fix ARM codegen breakage caused by r138653.Owen Anderson2011-08-261-6/+15
| | | | llvm-svn: 138657
* invalid-LDR_PRE-arm.txt was already passing, but for the wrong reasons. We ↵Owen Anderson2011-08-266-19/+96
| | | | | | were failing to specify enough fixed bits of LDR_PRE/LDRB_PRE, resulting in decoding conflicts. Separate them into immediate vs. register versions, allowing us to specify the necessary fixed bits. This in turn results in the test being decoded properly, and being rejected as UNPREDICTABLE rather than a hard failure. llvm-svn: 138653
* Update for feedback from Jim.Owen Anderson2011-08-261-3/+3
| | | | llvm-svn: 138642
* ARMDisassembler: Always return a size, even when disassembling fails.Benjamin Kramer2011-08-261-3/+11
| | | | | | This should fix PR10772. llvm-svn: 138636
* Support an extension of ARM asm syntax to allow immediate operands to ADR ↵Owen Anderson2011-08-263-17/+36
| | | | | | instructions. This is helpful for disassembler testing, and indeed exposed a disassembler bug that is also fixed here. llvm-svn: 138635
* Don't insert branch hint lables that are never used. Kalle Raiskila2011-08-262-23/+0
| | | | llvm-svn: 138630
* Fix PR10755 by checking for invalid predicate codes from UNPREDICTABLE t2IT ↵Owen Anderson2011-08-261-0/+2
| | | | | | | | instructions when decoding their successors. This is the last disassembly crash detected by exhaustive Thumb2 instruction space. Major thanks to Chandler Carruth for making this kind of exhaustive testing possible. llvm-svn: 138625
* Fix disassembling of VCVTSD2SICraig Topper2011-08-261-10/+4
| | | | llvm-svn: 138623
* Atomic load/store on ARM/Thumb.Eli Friedman2011-08-263-0/+63
| | | | | | | | | | | | I don't really like the patterns, but I'm having trouble coming up with a better way to handle them. I plan on making other targets use the same legalization ARM-without-memory-barriers is using... it's not especially efficient, but if anyone cares, it's not that hard to fix for a given target if there's some better lowering. llvm-svn: 138621
* Do the same as r138461. Mark VZEROALL as clobbering all YMM registersBruno Cardoso Lopes2011-08-251-4/+3
| | | | llvm-svn: 138592
* Remove stray fullstop.Nick Lewycky2011-08-251-1/+1
| | | | llvm-svn: 138589
* Add support for AVX 256-bit version of MOVDDUP!Bruno Cardoso Lopes2011-08-252-0/+47
| | | | llvm-svn: 138588
* Make isMOVDDUP mask check more strict and update comments!Bruno Cardoso Lopes2011-08-251-2/+7
| | | | llvm-svn: 138587
* Port over additional encoding tests to decoding tests, and fix an operand ↵Owen Anderson2011-08-251-1/+1
| | | | | | ordering bug this exposed. llvm-svn: 138575
* ARM fix for missing implicit operands on ldmia_ret.Andrew Trick2011-08-251-1/+3
| | | | | | rdar://10005094: miscompile of 176.gcc llvm-svn: 138568
* whitespaceAndrew Trick2011-08-251-1/+1
| | | | llvm-svn: 138566
* Explicitly disallow predication in Thumb1 assembly.Jim Grosbach2011-08-251-0/+6
| | | | llvm-svn: 138562
* Add more missing TB encodings to VEX instructions to allow them to be ↵Craig Topper2011-08-251-36/+36
| | | | | | disassembled. Fixes remainder of PR10678. llvm-svn: 138553
* Add TB encoding to VEROALL, VZEROUPPER, and VCVTPS2PD to allow them to be ↵Craig Topper2011-08-251-8/+8
| | | | | | disassembled. Fixes PR10723. llvm-svn: 138551
* Add support for 256-bit versions of VSHUFPD and VSHUFPS.Bruno Cardoso Lopes2011-08-252-18/+204
| | | | llvm-svn: 138546
* Add memory version of SHUFPD to mask decoding!Bruno Cardoso Lopes2011-08-251-1/+3
| | | | llvm-svn: 138545
* Hide -global-merge option.Evan Cheng2011-08-251-1/+1
| | | | llvm-svn: 138540
* Add a command line option to disable global merge pass.Evan Cheng2011-08-251-1/+6
| | | | llvm-svn: 138536
* Remove a out-of-place comment.Evan Cheng2011-08-251-1/+0
| | | | llvm-svn: 138534
* Create a section for non-instructions patterns in the beginning of theBruno Cardoso Lopes2011-08-241-88/+82
| | | | | | file, and move more code around! llvm-svn: 138521
* Move code around!Bruno Cardoso Lopes2011-08-241-58/+66
| | | | llvm-svn: 138520
OpenPOWER on IntegriCloud