Commit | Line | Data |
---|---|---|
98fa08a5 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
d16005f8 | 2 | /* |
98fa08a5 | 3 | * Copyright (C) 2014-2021 Paul Cercueil <paul@crapouillou.net> |
d16005f8 PC |
4 | */ |
5 | ||
6 | #ifndef __OPTIMIZER_H__ | |
7 | #define __OPTIMIZER_H__ | |
8 | ||
9 | #include "disassembler.h" | |
10 | ||
11 | struct block; | |
98fa08a5 | 12 | struct opcode; |
d16005f8 | 13 | |
cb72ea13 PC |
14 | __cnst _Bool opcode_reads_register(union code op, u8 reg); |
15 | __cnst _Bool opcode_writes_register(union code op, u8 reg); | |
16 | __cnst u64 opcode_write_mask(union code op); | |
17 | __cnst _Bool has_delay_slot(union code op); | |
9259d748 | 18 | _Bool is_delay_slot(const struct opcode *list, unsigned int offset); |
cb72ea13 PC |
19 | __cnst _Bool opcode_is_mfc(union code op); |
20 | __cnst _Bool opcode_is_load(union code op); | |
21 | __cnst _Bool opcode_is_io(union code op); | |
22 | __cnst _Bool is_unconditional_jump(union code c); | |
23 | __cnst _Bool is_syscall(union code c); | |
d16005f8 | 24 | |
98fa08a5 PC |
25 | _Bool should_emulate(const struct opcode *op); |
26 | ||
27 | int lightrec_optimize(struct lightrec_state *state, struct block *block); | |
d16005f8 PC |
28 | |
29 | #endif /* __OPTIMIZER_H__ */ |