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

Function parse_fcmp

tools/alive_parser.cpp:1050–1092  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1048}
1049
1050static unique_ptr<Instr> parse_fcmp(string_view name) {
1051 // fcmp cond ty %a, &b
1052 FCmp::Cond cond = FCmp::OEQ;
1053 auto cond_t = *tokenizer;
1054 switch (cond_t) {
1055 case OEQ: cond = FCmp::OEQ; break;
1056 case OGT: cond = FCmp::OGT; break;
1057 case OGE: cond = FCmp::OGE; break;
1058 case OLT: cond = FCmp::OLT; break;
1059 case OLE: cond = FCmp::OLE; break;
1060 case ONE: cond = FCmp::ONE; break;
1061 case ORD: cond = FCmp::ORD; break;
1062 case UEQ: cond = FCmp::UEQ; break;
1063 case UGT: cond = FCmp::UGT; break;
1064 case UGE: cond = FCmp::UGE; break;
1065 case ULT: cond = FCmp::ULT; break;
1066 case ULE: cond = FCmp::ULE; break;
1067 case UNE: cond = FCmp::UNE; break;
1068 case UNO: cond = FCmp::UNO; break;
1069 case TRUE: break;
1070 case FALSE: break;
1071 default:
1072 error("Expected fcmp cond", cond_t);
1073 }
1074
1075 auto &ty = parse_type();
1076 auto &a = parse_operand(ty);
1077 parse_comma();
1078 auto &b = parse_operand(ty);
1079 auto &bool_ty = *int_types[1].get();
1080
1081 switch (cond_t) {
1082 case TRUE:
1083 case FALSE:
1084 return make_unique<UnaryOp>(bool_ty, string(name),
1085 get_constant(cond_t == TRUE, bool_ty),
1086 UnaryOp::Copy);
1087 default:
1088 return make_unique<FCmp>(bool_ty, string(name), cond, a, b,
1089 parse_fast_math(FCMP), FpExceptionMode(), false);
1090 }
1091 UNREACHABLE();
1092}
1093
1094static unique_ptr<Instr> parse_freeze(string_view name) {
1095 // freeze ty %op

Callers 1

parse_instrFunction · 0.85

Calls 5

parse_commaFunction · 0.85
parse_fast_mathFunction · 0.85
FpExceptionModeClass · 0.85
errorFunction · 0.70
getMethod · 0.45

Tested by

no test coverage detected