#ifndef GOOSE_CIR_ARITH_H
#define GOOSE_CIR_ARITH_H
namespace goose::cir
{
class Add : public BinaryOp
{
public:
Add( LocationId loc ) :
BinaryOp( loc )
{}
friend ostream& operator<<( ostream& out, const Add& ins )
{
return out << "ADD";
}
};
class Sub : public BinaryOp
{
public:
Sub( LocationId loc ) :
BinaryOp( loc )
{}
friend ostream& operator<<( ostream& out, const Sub& ins )
{
return out << "SUB";
}
};
class Mul : public BinaryOp
{
public:
Mul( LocationId loc ) :
BinaryOp( loc )
{}
friend ostream& operator<<( ostream& out, const Mul& ins )
{
return out << "MUL";
}
};
class UDiv : public BinaryOp
{
public:
UDiv( LocationId loc ) :
BinaryOp( loc )
{}
friend ostream& operator<<( ostream& out, const UDiv& ins )
{
return out << "UDIV";
}
};
class SDiv : public BinaryOp
{
public:
SDiv( LocationId loc ) :
BinaryOp( loc )
{}
friend ostream& operator<<( ostream& out, const SDiv& ins )
{
return out << "SDIV";
}
};
class URem : public BinaryOp
{
public:
URem( LocationId loc ) :
BinaryOp( loc )
{}
friend ostream& operator<<( ostream& out, const URem& ins )
{
return out << "UREM";
}
};
class SRem : public BinaryOp
{
public:
SRem( LocationId loc ) :
BinaryOp( loc )
{}
friend ostream& operator<<( ostream& out, const SRem& ins )
{
return out << "SREM";
}
};
}
#endif