in src/main/java/org/apache/sysds/runtime/instructions/InstructionUtils.java [862:921]
public static BinaryOperator parseExtendedBinaryOperator(String opcode) {
if(opcode.equalsIgnoreCase(Opcodes.EQUAL.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPEQ.toString()))
return new BinaryOperator(Equals.getEqualsFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.NOTEQUAL.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPNEQ.toString()))
return new BinaryOperator(NotEquals.getNotEqualsFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.LESS.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPLT.toString()))
return new BinaryOperator(LessThan.getLessThanFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.GREATER.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPGT.toString()))
return new BinaryOperator(GreaterThan.getGreaterThanFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.LESSEQUAL.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPLE.toString()))
return new BinaryOperator(LessThanEquals.getLessThanEqualsFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.GREATEREQUAL.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPGE.toString()))
return new BinaryOperator(GreaterThanEquals.getGreaterThanEqualsFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.AND.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPAND.toString()))
return new BinaryOperator(And.getAndFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.OR.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPOR.toString()))
return new BinaryOperator(Or.getOrFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.XOR.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPXOR.toString()))
return new BinaryOperator(Xor.getXorFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.BITWAND.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPBITWAND.toString()))
return new BinaryOperator(BitwAnd.getBitwAndFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.BITWOR.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPBITWOR.toString()))
return new BinaryOperator(BitwOr.getBitwOrFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.BITWXOR.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPBITWXOR.toString()))
return new BinaryOperator(BitwXor.getBitwXorFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.BITWSHIFTL.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPBITWSHIFTL.toString()))
return new BinaryOperator(BitwShiftL.getBitwShiftLFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.BITWSHIFTR.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPBITWSHIFTR.toString()))
return new BinaryOperator(BitwShiftR.getBitwShiftRFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.PLUS.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPPLUS.toString()))
return new BinaryOperator(Plus.getPlusFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.MINUS.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPMINUS.toString()))
return new BinaryOperator(Minus.getMinusFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.MULT.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPMULT.toString()))
return new BinaryOperator(Multiply.getMultiplyFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.MINUS1_MULT.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPMINUS1_MULT.toString()))
return new BinaryOperator(Minus1Multiply.getMinus1MultiplyFnObject());
else if ( opcode.equalsIgnoreCase(Opcodes.MULT2.toString()) )
return new BinaryOperator(Multiply2.getMultiply2FnObject());
else if(opcode.equalsIgnoreCase(Opcodes.DIV.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPDIV.toString()))
return new BinaryOperator(Divide.getDivideFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.MODULUS.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPMOD.toString()))
return new BinaryOperator(Modulus.getFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.INTDIV.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPINTDIV.toString()))
return new BinaryOperator(IntegerDivide.getFnObject());
else if(opcode.equalsIgnoreCase(Opcodes.POW.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPPOW.toString()))
return new BinaryOperator(Power.getPowerFnObject());
else if ( opcode.equalsIgnoreCase(Opcodes.POW2.toString()) )
return new BinaryOperator(Power2.getPower2FnObject());
else if ( opcode.equalsIgnoreCase(Opcodes.MAX.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPMAX.toString()) )
return new BinaryOperator(Builtin.getBuiltinFnObject("max"));
else if ( opcode.equalsIgnoreCase(Opcodes.MIN.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPMIN.toString()) )
return new BinaryOperator(Builtin.getBuiltinFnObject("min"));
else if ( opcode.equalsIgnoreCase(Opcodes.DROPINVALIDLENGTH.toString()) || opcode.equalsIgnoreCase(Opcodes.MAPDROPINVALIDLENGTH.toString()) )
return new BinaryOperator(Builtin.getBuiltinFnObject("dropInvalidLength"));
else if ( opcode.equalsIgnoreCase(Opcodes.VALUESWAP.toString()) || opcode.equalsIgnoreCase("mapValueSwap") )
return new BinaryOperator(Builtin.getBuiltinFnObject("valueSwap"));
throw new DMLRuntimeException("Unknown binary opcode " + opcode);
}