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 PC |
13 | |
14 | _Bool opcode_reads_register(union code op, u8 reg); | |
15 | _Bool opcode_writes_register(union code op, u8 reg); | |
16 | _Bool has_delay_slot(union code op); | |
17 | _Bool load_in_delay_slot(union code op); | |
98fa08a5 PC |
18 | _Bool opcode_is_io(union code op); |
19 | _Bool is_unconditional_jump(union code c); | |
20 | _Bool is_syscall(union code c); | |
d16005f8 | 21 | |
98fa08a5 PC |
22 | _Bool should_emulate(const struct opcode *op); |
23 | ||
24 | int lightrec_optimize(struct lightrec_state *state, struct block *block); | |
d16005f8 PC |
25 | |
26 | #endif /* __OPTIMIZER_H__ */ |