//===-- llvm/iBinary.h - Binary Operator node definitions --------*- C++ -*--=//
//
// This file contains the declarations of all of the Binary Operator classes.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_IBINARY_H
#define LLVM_IBINARY_H

#include "llvm/InstrTypes.h"

//===----------------------------------------------------------------------===//
//                 Classes to represent Binary operators
//===----------------------------------------------------------------------===//
//
// All of these classes are subclasses of the BinaryOperator class...
//

class GenericBinaryInst : public BinaryOperator {
  const char *OpcodeString;
public:
  GenericBinaryInst(unsigned Opcode, Value *S1, Value *S2, 
		    const char *OpcodeStr, const string &Name = "")
    : BinaryOperator(Opcode, S1, S2, Name) {
    OpcodeString = OpcodeStr;
  }

  virtual string getOpcode() const { return OpcodeString; }
};

class SetCondInst : public BinaryOperator {
  BinaryOps OpType;
public:
  SetCondInst(BinaryOps opType, Value *S1, Value *S2, 
	      const string &Name = "");

  virtual string getOpcode() const;
};

#endif

//===-- llvm/iBinary.h - Binary Operator node definitions --------*- C++ -*--=//
//
// This file contains the declarations of all of the Binary Operator classes.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_IBINARY_H
#define LLVM_IBINARY_H

#include "llvm/InstrTypes.h"

//===----------------------------------------------------------------------===//
//                 Classes to represent Binary operators
//===----------------------------------------------------------------------===//
//
// All of these classes are subclasses of the BinaryOperator class...
//

class AddInst : public BinaryOperator {
public:
  AddInst(Value *S1, Value *S2, const string &Name = "")
      : BinaryOperator(Instruction::Add, S1, S2, Name) {
  }

  virtual string getOpcode() const { return "add"; }
};


class SubInst : public BinaryOperator {
public:
  SubInst(Value *S1, Value *S2, const string &Name = "") 
    : BinaryOperator(Instruction::Sub, S1, S2, Name) {
  }

  virtual string getOpcode() const { return "sub"; }
};


class SetCondInst : public BinaryOperator {
  BinaryOps OpType;
public:
  SetCondInst(BinaryOps opType, Value *S1, Value *S2, 
	      const string &Name = "");

  virtual string getOpcode() const;
};

#endif

--- 
+++ 
@@ -16,25 +16,17 @@
 // All of these classes are subclasses of the BinaryOperator class...
 //
 
-class AddInst : public BinaryOperator {
+class GenericBinaryInst : public BinaryOperator {
+  const char *OpcodeString;
 public:
-  AddInst(Value *S1, Value *S2, const string &Name = "")
-      : BinaryOperator(Instruction::Add, S1, S2, Name) {
+  GenericBinaryInst(unsigned Opcode, Value *S1, Value *S2, 
+		    const char *OpcodeStr, const string &Name = "")
+    : BinaryOperator(Opcode, S1, S2, Name) {
+    OpcodeString = OpcodeStr;
   }
 
-  virtual string getOpcode() const { return "add"; }
+  virtual string getOpcode() const { return OpcodeString; }
 };
-
-
-class SubInst : public BinaryOperator {
-public:
-  SubInst(Value *S1, Value *S2, const string &Name = "") 
-    : BinaryOperator(Instruction::Sub, S1, S2, Name) {
-  }
-
-  virtual string getOpcode() const { return "sub"; }
-};
-
 
 class SetCondInst : public BinaryOperator {
   BinaryOps OpType;
Make a new GenericBinaryInst class, instead of providing lots of silly
little classes.


git-svn-id: 0ff597fd157e6f4fc38580e8d64ab130330d2411@82 91177308-0d34-0410-b5e6-96231b3b80d8
