MCPcopy Create free account
hub / github.com/AliveToolkit/alive2 / parse_fp_binop

Function parse_fp_binop

tools/alive_parser.cpp:788–815  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

786}
787
788static unique_ptr<Instr> parse_fp_binop(string_view name, token op_token) {
789 auto fmath = parse_fast_math(op_token);
790 auto &type = parse_type();
791 auto &a = parse_operand(type);
792 parse_comma();
793 Type &type_rhs = try_parse_type(type);
794 auto &b = parse_operand(type_rhs);
795 Type *rettype = &type;
796
797 FpBinOp::Op op;
798 switch (op_token) {
799 case FADD: op = FpBinOp::FAdd; break;
800 case FSUB: op = FpBinOp::FSub; break;
801 case FMUL: op = FpBinOp::FMul; break;
802 case FDIV: op = FpBinOp::FDiv; break;
803 case FREM: op = FpBinOp::FRem; break;
804 case FMAX: op = FpBinOp::FMax; break;
805 case FMIN: op = FpBinOp::FMin; break;
806 case FMAXIMUM: op = FpBinOp::FMaximum; break;
807 case FMINIMUM: op = FpBinOp::FMinimum; break;
808 case FMAXIMUMNUM: op = FpBinOp::FMaximumnum; break;
809 case FMINIMUMNUM: op = FpBinOp::FMinimumnum; break;
810 default:
811 UNREACHABLE();
812 }
813 return make_unique<FpBinOp>(*rettype, string(name), a, b, op, fmath,
814 FpRoundingMode(), FpExceptionMode());
815}
816
817static unique_ptr<Instr> parse_unaryop(string_view name, token op_token) {
818 UnaryOp::Op op;

Callers 1

parse_instrFunction · 0.85

Calls 4

parse_fast_mathFunction · 0.85
parse_commaFunction · 0.85
FpRoundingModeClass · 0.85
FpExceptionModeClass · 0.85

Tested by

no test coverage detected