| ... | ... | @@ -62,8 +62,7 @@ pub fn findByMnemonic( |
| 62 | 62 | .rex, .rex_short => if (!rex_required) continue, |
| 63 | 63 | else => {}, |
| 64 | 64 | } |
| 65 | | for (input_ops, data.ops) |input_op, data_op| |
| 66 | | if (!input_op.isSubset(data_op)) continue :next; |
| 65 | for (input_ops, data.ops) |input_op, data_op| if (!input_op.isSubset(data_op)) continue :next; |
| 67 | 66 | |
| 68 | 67 | const enc = Encoding{ .mnemonic = mnemonic, .data = data }; |
| 69 | 68 | if (shortest_enc) |previous_shortest_enc| { |
| ... | ... | @@ -828,18 +827,13 @@ const mnemonic_to_encodings_map = init: { |
| 828 | 827 | for (&data_storage, entries, 0..) |*data, entry, data_index| { |
| 829 | 828 | data.* = .{ |
| 830 | 829 | .op_en = entry[1], |
| 831 | | .ops = undefined, |
| 830 | .ops = (entry[2] ++ .{.none} ** (data.ops.len - entry[2].len)).*, |
| 832 | 831 | .opc_len = entry[3].len, |
| 833 | | .opc = undefined, |
| 832 | .opc = (entry[3] ++ .{undefined} ** (data.opc.len - entry[3].len)).*, |
| 834 | 833 | .modrm_ext = entry[4], |
| 835 | 834 | .mode = entry[5], |
| 836 | 835 | .feature = entry[6], |
| 837 | 836 | }; |
| 838 | | // TODO: use `@memcpy` for these. When I did that, I got a false positive |
| 839 | | // compile error for this copy happening at compile time. |
| 840 | | std.mem.copyForwards(Op, &data.ops, entry[2]); |
| 841 | | std.mem.copyForwards(u8, &data.opc, entry[3]); |
| 842 | | |
| 843 | 837 | while (mnemonic_int < @intFromEnum(entry[0])) : (mnemonic_int += 1) { |
| 844 | 838 | mnemonic_map[mnemonic_int] = data_storage[mnemonic_start..data_index]; |
| 845 | 839 | mnemonic_start = data_index; |