summaryrefslogtreecommitdiff
path: root/lib/Target/SystemZ/SystemZInstrInfo.h
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-08-01 10:39:40 +0000
committerRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-08-01 10:39:40 +0000
commit8f0ad5ae8f2699f6ab13a229941a0b192273cae8 (patch)
tree9d0bb8af50d25824ea6549b972bee2930b765bba /lib/Target/SystemZ/SystemZInstrInfo.h
parent3237f88882eed8a67fa679f7071a5441c4306ac3 (diff)
downloadllvm-8f0ad5ae8f2699f6ab13a229941a0b192273cae8.tar.gz
llvm-8f0ad5ae8f2699f6ab13a229941a0b192273cae8.tar.bz2
llvm-8f0ad5ae8f2699f6ab13a229941a0b192273cae8.tar.xz
[SystemZ] Reuse CC results for integer comparisons with zero
This also fixes a bug in the predication of LR to LOCR: I'd forgotten that with these in-place instruction builds, the implicit operands need to be added manually. I think this was latent until now, but is tested by int-cmp-45.c. It also adds a CC valid mask to STOC, again tested by int-cmp-45.c. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187573 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/SystemZ/SystemZInstrInfo.h')
-rw-r--r--lib/Target/SystemZ/SystemZInstrInfo.h24
1 files changed, 17 insertions, 7 deletions
diff --git a/lib/Target/SystemZ/SystemZInstrInfo.h b/lib/Target/SystemZ/SystemZInstrInfo.h
index 917ac6e348..763a3956fc 100644
--- a/lib/Target/SystemZ/SystemZInstrInfo.h
+++ b/lib/Target/SystemZ/SystemZInstrInfo.h
@@ -28,17 +28,27 @@ class SystemZTargetMachine;
namespace SystemZII {
enum {
// See comments in SystemZInstrFormats.td.
- SimpleBDXLoad = (1 << 0),
- SimpleBDXStore = (1 << 1),
- Has20BitOffset = (1 << 2),
- HasIndex = (1 << 3),
- Is128Bit = (1 << 4),
- AccessSizeMask = (31 << 5),
- AccessSizeShift = 5
+ SimpleBDXLoad = (1 << 0),
+ SimpleBDXStore = (1 << 1),
+ Has20BitOffset = (1 << 2),
+ HasIndex = (1 << 3),
+ Is128Bit = (1 << 4),
+ AccessSizeMask = (31 << 5),
+ AccessSizeShift = 5,
+ CCValuesMask = (15 << 10),
+ CCValuesShift = 10,
+ CCHasZero = (1 << 14),
+ CCHasOrder = (1 << 15),
+ CCMaskFirst = (1 << 16),
+ CCMaskLast = (1 << 17),
+ IsLogical = (1 << 18)
};
static inline unsigned getAccessSize(unsigned int Flags) {
return (Flags & AccessSizeMask) >> AccessSizeShift;
}
+ static inline unsigned getCCValues(unsigned int Flags) {
+ return (Flags & CCValuesMask) >> CCValuesShift;
+ }
// SystemZ MachineOperand target flags.
enum {