aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/SystemZ/SystemZInstrFP.td
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-08-07 11:03:34 +0000
committerRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-08-07 11:03:34 +0000
commite0bbf7288c00c377a97a9d4bf5fb0bf20c44cd1c (patch)
tree135e0f5a045189d9e3910753a4c931a3c6c919ff /lib/Target/SystemZ/SystemZInstrFP.td
parentc11b107f21f8f1baf1021999fc7d01b93e00922b (diff)
downloadexternal_llvm-e0bbf7288c00c377a97a9d4bf5fb0bf20c44cd1c.zip
external_llvm-e0bbf7288c00c377a97a9d4bf5fb0bf20c44cd1c.tar.gz
external_llvm-e0bbf7288c00c377a97a9d4bf5fb0bf20c44cd1c.tar.bz2
[SystemZ] Add floating-point load-and-test instructions
These instructions can also be used as comparisons with zero. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187882 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/SystemZ/SystemZInstrFP.td')
-rw-r--r--lib/Target/SystemZ/SystemZInstrFP.td11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Target/SystemZ/SystemZInstrFP.td b/lib/Target/SystemZ/SystemZInstrFP.td
index 23a3790..47d864b 100644
--- a/lib/Target/SystemZ/SystemZInstrFP.td
+++ b/lib/Target/SystemZ/SystemZInstrFP.td
@@ -39,6 +39,17 @@ let neverHasSideEffects = 1 in {
def LXR : UnaryRRE<"lx", 0xB365, null_frag, FP128, FP128>;
}
+// Moves between two floating-point registers that also set the condition
+// codes.
+let Defs = [CC] in {
+ defm LTEBR : LoadAndTestRRE<"lteb", 0xB302, FP32>;
+ defm LTDBR : LoadAndTestRRE<"ltdb", 0xB312, FP64>;
+ defm LTXBR : LoadAndTestRRE<"ltxb", 0xB342, FP128>;
+}
+def : CompareZeroFP<LTEBRCompare, FP32>;
+def : CompareZeroFP<LTDBRCompare, FP64>;
+def : CompareZeroFP<LTXBRCompare, FP128>;
+
// Moves between 64-bit integer and floating-point registers.
def LGDR : UnaryRRE<"lgd", 0xB3CD, bitconvert, GR64, FP64>;
def LDGR : UnaryRRE<"ldg", 0xB3C1, bitconvert, FP64, GR64>;