| 1193 | } |
| 1194 | |
| 1195 | static unique_ptr<Instr> parse_shufflevector(string_view name) { |
| 1196 | // %p = shufflevector ty %a, ty %b, ty %c |
| 1197 | auto &ty_a = parse_type(); |
| 1198 | auto &a = parse_operand(ty_a); |
| 1199 | parse_comma(); |
| 1200 | auto &ty_b = parse_type(); |
| 1201 | auto &b = parse_operand(ty_b); |
| 1202 | |
| 1203 | vector<unsigned> mask; |
| 1204 | while (tokenizer.consumeIf(COMMA)) { |
| 1205 | mask.push_back((unsigned)parse_number()); |
| 1206 | } |
| 1207 | return make_unique<ShuffleVector>(get_sym_type(), string(name), a, b, |
| 1208 | std::move(mask)); |
| 1209 | } |
| 1210 | |
| 1211 | static unique_ptr<Instr> parse_copyop(string_view name, token t) { |
| 1212 | tokenizer.unget(t); |
no test coverage detected