| 933 | } |
| 934 | |
| 935 | static unique_ptr<Instr> parse_conversionop(string_view name, token op_token) { |
| 936 | // op ty %op to ty2 |
| 937 | auto &opty = parse_type(); |
| 938 | auto &val = parse_operand(opty); |
| 939 | auto &ty2 = parse_type(/*optional=*/!tokenizer.consumeIf(TO)); |
| 940 | |
| 941 | ConversionOp::Op op; |
| 942 | switch (op_token) { |
| 943 | case BITCAST: op = ConversionOp::BitCast; break; |
| 944 | case SEXT: op = ConversionOp::SExt; break; |
| 945 | case ZEXT: op = ConversionOp::ZExt; break; |
| 946 | case TRUNC: op = ConversionOp::Trunc; break; |
| 947 | case PTRTOINT: op = ConversionOp::Ptr2Int; break; |
| 948 | default: |
| 949 | UNREACHABLE(); |
| 950 | } |
| 951 | return make_unique<ConversionOp>(ty2, string(name), val, op); |
| 952 | } |
| 953 | |
| 954 | static unique_ptr<Instr> |
| 955 | parse_fp_conversionop(string_view name, token op_token) { |
no test coverage detected