| 952 | } |
| 953 | |
| 954 | static unique_ptr<Instr> |
| 955 | parse_fp_conversionop(string_view name, token op_token) { |
| 956 | // op ty %op to ty2 |
| 957 | auto &opty = parse_type(); |
| 958 | auto &val = parse_operand(opty); |
| 959 | auto &ty2 = parse_type(/*optional=*/!tokenizer.consumeIf(TO)); |
| 960 | |
| 961 | FpConversionOp::Op op; |
| 962 | switch (op_token) { |
| 963 | case SITOFP: op = FpConversionOp::SIntToFP; break; |
| 964 | case UITOFP: op = FpConversionOp::UIntToFP; break; |
| 965 | case FPTOSI: op = FpConversionOp::FPToSInt; break; |
| 966 | case FPTOUI: op = FpConversionOp::FPToUInt; break; |
| 967 | case FPEXT: op = FpConversionOp::FPExt; break; |
| 968 | case FPTRUNC: op = FpConversionOp::FPTrunc; break; |
| 969 | default: |
| 970 | UNREACHABLE(); |
| 971 | } |
| 972 | return make_unique<FpConversionOp>(ty2, string(name), val, op, |
| 973 | FpRoundingMode(), FpExceptionMode(), |
| 974 | FpConversionOp::None, |
| 975 | parse_fast_math(op_token)); |
| 976 | } |
| 977 | |
| 978 | static unique_ptr<Instr> parse_select(string_view name) { |
| 979 | // select condty %cond, ty %a, ty %b |
no test coverage detected