diff options
author | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-08-01 10:39:40 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-08-01 10:39:40 +0000 |
commit | 8f0ad5ae8f2699f6ab13a229941a0b192273cae8 (patch) | |
tree | 9d0bb8af50d25824ea6549b972bee2930b765bba /lib/Target/SystemZ/SystemZInstrInfo.h | |
parent | 3237f88882eed8a67fa679f7071a5441c4306ac3 (diff) | |
download | llvm-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.h | 24 |
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 { |