Richard Sandiford
6824f127f9
[SystemZ] Be more careful about inverting CC masks
...
System z branches have a mask to select which of the 4 CC values should
cause the branch to be taken. We can invert a branch by inverting the mask.
However, not all instructions can produce all 4 CC values, so inverting
the branch like this can lead to some oddities. For example, integer
comparisons only produce a CC of 0 (equal), 1 (less) or 2 (greater).
If an integer EQ is reversed to NE before instruction selection,
the branch will test for 1 or 2. If instead the branch is reversed
after instruction selection (by inverting the mask), it will test for
1, 2 or 3. Both are correct, but the second isn't really canonical.
This patch therefore keeps track of which CC values are possible
and uses this when inverting a mask.
Although this is mostly cosmestic, it fixes undefined behavior
for the CIJNLH in branch-08.ll. Another fix would have been
to mask out bit 0 when generating the fused compare and branch,
but the point of this patch is that we shouldn't need to do that
in the first place.
The patch also makes it easier to reuse CC results from other instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187495 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-31 12:30:20 +00:00
..
2013-07-05 14:02:01 +00:00
2013-07-31 11:36:35 +00:00
2013-07-31 11:36:35 +00:00
2013-07-14 06:24:09 +00:00
2013-07-31 11:36:35 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:21:55 +00:00
2013-07-31 11:36:35 +00:00
2013-07-19 16:24:22 +00:00
2013-07-31 11:36:35 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:24:22 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-31 12:30:20 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-25 09:04:52 +00:00
2013-07-25 09:04:52 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-31 12:30:20 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-31 11:36:35 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-31 11:36:35 +00:00
2013-07-31 11:36:35 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:26:39 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:26:39 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:37:00 +00:00
2013-07-19 16:37:00 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:26:39 +00:00
2013-07-19 16:32:12 +00:00
2013-07-19 16:32:12 +00:00
2013-07-19 16:44:32 +00:00
2013-07-14 06:24:09 +00:00
2013-07-31 12:30:20 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:26:39 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:26:39 +00:00
2013-07-19 16:37:00 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:26:39 +00:00
2013-07-19 16:37:00 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-05-06 16:17:29 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:21:55 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:24:22 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:24:22 +00:00
2013-07-31 11:36:35 +00:00
2013-07-16 11:55:57 +00:00
2013-07-18 10:40:35 +00:00
2013-07-16 11:55:57 +00:00
2013-07-18 10:06:15 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:12:08 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:21:55 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:24:22 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-14 06:24:09 +00:00
2013-07-19 16:24:22 +00:00