llvm/test
Richard Sandiford 299fdd814f [SystemZ] Add TM and TMY
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...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190400 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-10 10:20:32 +00:00
..
Analysis Fix lint assert on integer vector division 2013-08-26 23:29:33 +00:00
Assembler Remove verifier check that attribute 'builtin' is only applied to calls to 2013-09-07 00:25:48 +00:00
Bindings/Ocaml [PR11606] ocaml bindings tests produce binaries in source dir 2013-08-23 00:55:32 +00:00
Bitcode Revert patches to add case-range support for PR1255. 2013-09-09 19:14:35 +00:00
BugPoint
CodeGen [SystemZ] Add TM and TMY 2013-09-10 10:20:32 +00:00
DebugInfo MCObjectFileInfo.cpp: Fix a couple of possible typo(s), s/DwarfPub/DwarfGnuPub/, in r190344. 2013-09-10 06:01:56 +00:00
ExecutionEngine llvm interpreter: select, shuffle and insertelement instructions. 2013-09-02 06:40:09 +00:00
Feature Add function attribute 'optnone'. 2013-08-23 11:53:55 +00:00
FileCheck
Instrumentation Debug Info Testing: update context from empty string to null. 2013-09-08 03:11:54 +00:00
Integer
JitListener Debug Info Testing: updated to use NULL instead of "i32 0" in a few fields. 2013-09-06 21:03:58 +00:00
Linker Debug Info: In DIBuilder, the context fields of a TAG_inheritance and a 2013-09-09 23:07:58 +00:00
MC [SystemZ] Add TM and TMY 2013-09-10 10:20:32 +00:00
Object Add a minimal implementation of ranlib. 2013-08-28 16:22:16 +00:00
Other Update to remove the no-frame-pointer-elim-non-leaf flag if it was set to 'false'. 2013-08-22 21:28:54 +00:00
TableGen FileCheckize some tests. 2013-08-22 20:46:05 +00:00
tools Print string value for DT_RPATH and DT_RUNPATH. 2013-09-03 17:13:53 +00:00
Transforms Don't shrink atomic ops to bool in GlobalOpt. 2013-09-09 22:00:13 +00:00
Unit
Verifier
YAMLParser
CMakeLists.txt
lit.cfg Restore llvm-ranlib expansion in RUN-lines removed in r184019 2013-08-30 12:53:22 +00:00
lit.site.cfg.in
Makefile
Makefile.tests
TestRunner.sh