summaryrefslogtreecommitdiffstats
path: root/llvm/test/MC/Disassembler/SystemZ
Commit message (Collapse)AuthorAgeFilesLines
...
* [SystemZ] Add support for z196 float<->unsigned conversionsRichard Sandiford2014-03-211-0/+216
| | | | | | These complement the older float<->signed instructions. llvm-svn: 204451
* [SystemZ] Add MC support for interlocked-access 1 instructionsRichard Sandiford2013-12-241-0/+330
| | | | llvm-svn: 197984
* [SystemZ] Add the general form of BCRRichard Sandiford2013-11-131-0/+45
| | | | | | At the moment this is just the MC support. llvm-svn: 194585
* [SystemZ] Add comparisons of high words and memoryRichard Sandiford2013-10-011-0/+60
| | | | llvm-svn: 191777
* [SystemZ] Add comparisons of large immediates using high wordsRichard Sandiford2013-10-011-0/+30
| | | | | | | There are no corresponding patterns for small immediates because they would prevent the use of fused compare-and-branch instructions. llvm-svn: 191775
* [SystemZ] Add immediate addition involving high wordsRichard Sandiford2013-10-011-0/+18
| | | | llvm-svn: 191774
* [SystemZ] Add truncating high-word stores (STCH and STHH)Richard Sandiford2013-10-011-0/+60
| | | | llvm-svn: 191743
* [SystemZ] Add zero-extending high-word loads (LLCH and LLHH)Richard Sandiford2013-10-011-0/+60
| | | | llvm-svn: 191742
* [SystemZ] Add sign-extending high-word loads (LBH and LHH)Richard Sandiford2013-10-011-0/+60
| | | | llvm-svn: 191740
* [SystemZ] Reapply: Add definitions of LFH and STFHRichard Sandiford2013-10-011-0/+60
| | | | | | | Originally committed as r191661, but reverted because it changed the matching order of comparisons on some hosts. That should have been fixed by r191735. llvm-svn: 191738
* [SystemZ] Revert r191661: Add definitions of LFH and STFHRichard Sandiford2013-09-301-60/+0
| | | | | | | | For some reason, adding definitions for these load and store instructions changed whether some of the build bots matched comparisons as signed or unsigned. llvm-svn: 191663
* [SystemZ] Add definitions of LFH and STFHRichard Sandiford2013-09-301-0/+60
| | | | llvm-svn: 191661
* [SystemZ] Add unsigned compare-and-branch instructionsRichard Sandiford2013-09-181-0/+368
| | | | | | | | | | | | | | | For some reason I never got around to adding these at the same time as the signed versions. No idea why. I'm not sure whether this SystemZII::BranchC* stuff is useful, or whether it should just be replaced with an "is normal" flag. I'll leave that for later though. There are some boundary conditions that can be tweaked, such as preferring unsigned comparisons for equality with [128, 256), and "<= 255" over "< 256", but again I'll leave those for a separate patch. llvm-svn: 190930
* [SystemZ] Add TM and TMYRichard Sandiford2013-09-101-0/+51
| | | | | | | | | | | | | | | | | | | | | | | The main complication here is that TM and TMY (the memory forms) set CC differently from the register forms. When the tested bits contain some 0s and some 1s, the register forms set CC to 1 or 2 based on the value the uppermost bit. The memory forms instead set CC to 1 regardless of the uppermost bit. Until now, I've tried to make it so that a branch never tests for an impossible CC value. E.g. NR only sets CC to 0 or 1, so branches on the result will only test for 0 or 1. Originally I'd tried to do the same thing for TM and TMY by using custom matching code in ISelDAGToDAG. That ended up being very ugly though, and would have meant duplicating some of the chain checks that the common isel code does. I've therefore gone for the simpler alternative of adding an extra operand to the TM DAG opcode to say whether a memory form would be OK. This means that the inverse of a "TM;JE" is "TM;JNE" rather than the more precise "TM;JNLE", just like the inverse of "TMLL;JE" is "TMLL;JNE". I suppose that's arguably less confusing though... llvm-svn: 190400
* [SystemZ] Add NC, OC and XCRichard Sandiford2013-09-051-0/+108
| | | | | | | For now these are just used to handle scalar ANDs, ORs and XORs in which all operands are memory. llvm-svn: 190041
* [SystemZ] Add support for TMHH, TMHL, TMLH and TMLLRichard Sandiford2013-08-281-0/+48
| | | | | | | | | For now just handles simple comparisons of an ANDed value with zero. The CC value provides enough information to do any comparison for a 2-bit mask, and some nonzero comparisons with more populated masks, but that's all future work. llvm-svn: 189469
* [SystemZ] Add basic prefetch supportRichard Sandiford2013-08-232-0/+62
| | | | | | Just the instructions and intrinsics for now. llvm-svn: 189100
* [SystemZ] Add FI[EDX]BRARichard Sandiford2013-08-211-0/+54
| | | | | | | These are extensions of the existing FI[EDX]BR instructions, but use a spare bit to suppress inexact conditions. llvm-svn: 188894
* [SystemZ] Add negative integer absolute (load negative)Richard Sandiford2013-08-191-0/+36
| | | | | | | | For now this matches the equivalent of (neg (abs ...)), which did hit a few times in projects/test-suite. We should probably also match cases where absolute-like selects are used with reversed arguments. llvm-svn: 188671
* [SystemZ] Add integer absolute (load positive)Richard Sandiford2013-08-191-0/+36
| | | | llvm-svn: 188670
* [SystemZ] Use SRST to implement strlen and strnlenRichard Sandiford2013-08-161-0/+12
| | | | | | It would also make sense to use it for memchr; I'm working on that now. llvm-svn: 188547
* [SystemZ] Use MVST to implement strcpy and stpcpyRichard Sandiford2013-08-161-0/+12
| | | | llvm-svn: 188546
* [SystemZ] Use CLST to implement strcmpRichard Sandiford2013-08-161-0/+12
| | | | llvm-svn: 188544
* [tests] Cleanup initialization of test suffixes.Daniel Dunbar2013-08-161-2/+0
| | | | | | | | | | | | | | | | | - Instead of setting the suffixes in a bunch of places, just set one master list in the top-level config. We now only modify the suffix list in a few suites that have one particular unique suffix (.ml, .mc, .yaml, .td, .py). - Aside from removing the need for a bunch of lit.local.cfg files, this enables 4 tests that were inadvertently being skipped (one in Transforms/BranchFolding, a .s file each in DebugInfo/AArch64 and CodeGen/PowerPC, and one in CodeGen/SI which is now failing and has been XFAILED). - This commit also fixes a bunch of config files to use config.root instead of older copy-pasted code. llvm-svn: 188513
* [SystemZ] Add a definition of the CLC instructionRichard Sandiford2013-08-121-0/+72
| | | | llvm-svn: 188162
* [SystemZ] Add a definition of the IPM instructionRichard Sandiford2013-08-121-0/+9
| | | | llvm-svn: 188161
* [SystemZ] Add floating-point load-and-test instructionsRichard Sandiford2013-08-071-0/+36
| | | | | | These instructions can also be used as comparisons with zero. llvm-svn: 187882
* [SystemZ] Add definitions for BRCT and BRCTGRichard Sandiford2013-08-051-0/+32
| | | | llvm-svn: 187721
* [SystemZ] Add LOAD AND TEST instructionsRichard Sandiford2013-08-051-0/+126
| | | | | | Just the definitions and MC support. The next patch uses them for codegen. llvm-svn: 187719
* [SystemZ] Add RISBLG and RISBHG instruction definitionsRichard Sandiford2013-07-311-0/+42
| | | | | | The next patch will make use of RISBLG for codegen. llvm-svn: 187490
* [SystemZ] Add LOCR and LOCGRRichard Sandiford2013-07-251-0/+96
| | | | llvm-svn: 187113
* [SystemZ] Add LOC and LOCGRichard Sandiford2013-07-251-0/+96
| | | | | | | As with the stores, these instructions can trap when the condition is false, so they are only used for things like (cond ? x : *ptr). llvm-svn: 187112
* [SystemZ] Add STOC and STOCGRichard Sandiford2013-07-251-0/+96
| | | | | | | | These instructions are allowed to trap even if the condition is false, so for now they are only used for "*ptr = (cond ? x : *ptr)"-style constructs. llvm-svn: 187111
* [SystemZ] Add tests for ALHSIK and ALGHSIKRichard Sandiford2013-07-191-0/+30
| | | | | | | The insn definitions themselves crept into r186689, sorry. This should be the last of the distinct-ops instructions. llvm-svn: 186690
* [SystemZ] Add ALRK, AGLRK, SLRK and SGLRKRichard Sandiford2013-07-191-0/+24
| | | | | | | Follows the same lines as r186686, but much more limited, since we only use ADD LOGICAL for multi-i64 additions. llvm-svn: 186689
* [SystemZ] Add AHIK and AGHIKRichard Sandiford2013-07-191-0/+30
| | | | | | | I did these as a separate patch because it uses a slightly different form of RIE layout. llvm-svn: 186687
* [SystemZ] Add ARK, AGRK, SRK and SGRKRichard Sandiford2013-07-191-0/+24
| | | | | | The testsuite changes follow the same lines as for r186683. llvm-svn: 186686
* [SystemZ] Add NGRK, OGRK and XGRKRichard Sandiford2013-07-191-0/+18
| | | | | | Like r186683, but for 64 bits. llvm-svn: 186685
* [SystemZ] Add NRK, ORK and XRKRichard Sandiford2013-07-191-0/+18
| | | | | | | | | | | | The atomic tests assume the two-operand forms, so I've restricted them to z10. Running and-01.ll, or-01.ll and xor-01.ll for z196 as well as z10 shows why using convertToThreeAddress() is better than exposing the three-operand forms first and then converting back to two operands where possible (which is what I'd originally tried). Using the three-operand form first stops us from taking advantage of NG, OG and XG for spills. llvm-svn: 186683
* [SystemZ] Start adding z196 and zEC12 supportRichard Sandiford2013-07-191-1/+109
| | | | | | | | | | | | This first step just adds definitions for SLLK, SRLK and SRAK. The next patch will actually make use of them during codegen. insn-bad.s tests that some form of error is reported when using these instructions on z10. More work is needed to get the "instruction requires: distinct-ops" that we'd ideally like, so I've stubbed that part out for now. I'll come back and make it mandatory once the necessary changes are in. llvm-svn: 186680
* [SystemZ] Add MC support for R[NOX]SBGRichard Sandiford2013-07-161-0/+63
| | | | | | CodeGen support will come later. llvm-svn: 186401
* [SystemZ] Allow 8-bit operands to RISBGRichard Sandiford2013-07-111-4/+4
| | | | | | | | | | | | RISBG has three 8-bit operands (I3, I4 and I5). I'd originally restricted all three to 6 bits, since that's the only range we intended to use at the time. However, the top bit of I4 acts as a "zero" flag for RISBG, while the top bit of I3 acts as a "test" flag for RNSBG & co. This patch therefore allows them to have the full 8-bit range. I've left the fifth operand as a 6-bit value for now since the upper 2 bits have no defined meaning. llvm-svn: 186070
* [SystemZ] Immediate compare-and-branch supportRichard Sandiford2013-05-291-0/+192
| | | | | | This patch adds support for the CIJ and CGIJ instructions. llvm-svn: 182846
* [SystemZ] Register compare-and-branch supportRichard Sandiford2013-05-281-0/+175
| | | | | | | | | | | | | | This patch adds support for the CRJ and CGRJ instructions. Support for the immediate forms will be a separate patch. The architecture has a large number of comparison instructions. I think it's generally better to concentrate on using the "best" comparison instruction first and foremost, then only use something like CRJ if CR really was the natual choice of comparison instruction. The patch therefore opportunistically converts separate CR and BRC instructions into a single CRJ while emitting instructions in ISelLowering. llvm-svn: 182764
* [SystemZ] Make use of SUBTRACT HALFWORDRichard Sandiford2013-05-151-0/+51
| | | | | | Thanks to Ulrich Weigand for noticing that this instruction was missing. llvm-svn: 181893
* [SystemZ] Consolidate disassembler tests for valid input into 2 big testsRichard Sandiford2013-05-15339-6714/+6953
| | | | llvm-svn: 181879
* [SystemZ] Add disassembler supportRichard Sandiford2013-05-14341-0/+6789
llvm-svn: 181777
OpenPOWER on IntegriCloud