Skip to content

Commit 3ccd41f

Browse files
committed
add 'jg', 'ja', 'jl', and 'jb' instrs
1 parent bfd3992 commit 3ccd41f

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

impl.h

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,4 +264,36 @@ DEF(jne) {
264264
vmnext;
265265
}
266266

267+
DEF(jg) {
268+
if (hasf(RVM_FGT)) {
269+
pc += imm23s;
270+
util_checkpc();
271+
}
272+
vmnext;
273+
}
274+
275+
DEF(ja) {
276+
if (hasf(RVM_FAB)) {
277+
pc += imm23s;
278+
util_checkpc();
279+
}
280+
vmnext;
281+
}
282+
283+
DEF(jl) {
284+
if (!hasf(RVM_FGT | RVM_FEQ)) {
285+
pc += imm23s;
286+
util_checkpc();
287+
}
288+
vmnext;
289+
}
290+
291+
DEF(jb) {
292+
if (!hasf(RVM_FAB | RVM_FEQ)) {
293+
pc += imm23s;
294+
util_checkpc();
295+
}
296+
vmnext;
297+
}
298+
267299
#endif /* impl.h */

opcodes.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,9 @@ DEF(jr, 37) /* [M] pc = rgA */
5959
DEF(loop, 38) /* [M] if (rgA-- != 0) pc += imm19s */
6060
DEF(je, 39) /* [J] jump if eq */
6161
DEF(jne, 40) /* [J] jump if not-eq */
62+
DEF(jg, 41) /* [J] jump if gt */
63+
DEF(ja, 42) /* [J] jump if ab */
64+
DEF(jl, 43) /* [J] jump if not-gt and not-eq */
65+
DEF(jb, 44) /* [J] jump if not-ab and not-eq */
6266

6367
#endif /* opcodes.h */

0 commit comments

Comments
 (0)