summaryrefslogtreecommitdiff
path: root/lib/Target/PTX/PTXInstrFormats.td
diff options
context:
space:
mode:
authorJustin Holewinski <justin.holewinski@gmail.com>2011-09-30 12:54:43 +0000
committerJustin Holewinski <justin.holewinski@gmail.com>2011-09-30 12:54:43 +0000
commitc90e149ee43b5ffa751a7a03fab8b1a54cc3de92 (patch)
treef9b1057fb71a86201dd3bc6d08bbc28d9783ada5 /lib/Target/PTX/PTXInstrFormats.td
parent10a11ecb59b8b9d5de462930960df0d4bd4bf801 (diff)
downloadllvm-c90e149ee43b5ffa751a7a03fab8b1a54cc3de92.tar.gz
llvm-c90e149ee43b5ffa751a7a03fab8b1a54cc3de92.tar.bz2
llvm-c90e149ee43b5ffa751a7a03fab8b1a54cc3de92.tar.xz
PTX: Attempt to cleanup/unify the handling of FP rounding modes. This requires
us to manually provide Pat<> definitions for all FP instruction patterns. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140849 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/PTX/PTXInstrFormats.td')
-rw-r--r--lib/Target/PTX/PTXInstrFormats.td27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/Target/PTX/PTXInstrFormats.td b/lib/Target/PTX/PTXInstrFormats.td
index 6632bbfbc5..397fdc319a 100644
--- a/lib/Target/PTX/PTXInstrFormats.td
+++ b/lib/Target/PTX/PTXInstrFormats.td
@@ -7,12 +7,39 @@
//
//===----------------------------------------------------------------------===//
+
+// Rounding Mode Specifier
+/*class RoundingMode<bits<3> val> {
+ bits<3> Value = val;
+}
+
+def RndDefault : RoundingMode<0>;
+def RndNearestEven : RoundingMode<1>;
+def RndNearestZero : RoundingMode<2>;
+def RndNegInf : RoundingMode<3>;
+def RndPosInf : RoundingMode<4>;
+def RndApprox : RoundingMode<5>;*/
+
+
+// Rounding Mode Operand
+def RndMode : Operand<i32> {
+ let PrintMethod = "printRoundingMode";
+}
+
+def RndDefault : PatLeaf<(i32 0)>;
+
// PTX Predicate operand, default to (0, 0) = (zero-reg, none).
// Leave PrintMethod empty; predicate printing is defined elsewhere.
def pred : PredicateOperand<OtherVT, (ops RegPred, i32imm),
(ops (i1 zero_reg), (i32 2))>;
+def RndModeOperand : Operand<OtherVT> {
+ let MIOperandInfo = (ops i32imm);
+}
+
+// Instruction Types
let Namespace = "PTX" in {
+
class InstPTX<dag oops, dag iops, string asmstr, list<dag> pattern>
: Instruction {
dag OutOperandList = oops;