Skip to content

Commit 783df30

Browse files
committed
Add Relational ins opcodes
1 parent 648a121 commit 783df30

File tree

2 files changed

+52
-7
lines changed

2 files changed

+52
-7
lines changed

docs/nqp-opcode.txt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,6 @@ General notes:
7878
nqp::findcclass pir::find_cclass__Iisii (?)
7979
nqp::findnotcclass pir::find_not_cclass__Iisii (?)
8080

81-
relational:
82-
nqp::iseq_i pir::iseq__Iii
83-
nqp::iseq_n pir::iseq__Inn
84-
nqp::iseq_s pir::iseq__Iss
85-
nqp::iseq_I
86-
...etc...
87-
8881
aggregate:
8982
nqp::list(item0, item1, ...) create a low-level list
9083
nqp::qlist(item0, item1, ...) temporary for QRPA

docs/ops.markdown

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,58 @@ name. `h` indicates a hyperbolic variant.
171171
## tanh
172172
* `tanh_n(num $n)`
173173

174+
# Relational Opcodes
175+
176+
## cmp
177+
* `cmp_i(int $l, int $r)`
178+
* `cmp_n(num $l, num $r)`
179+
* `cmp_s(str $l, str $r)`
180+
181+
Compare two values, returns -1 if $l is greater than $r, 0 if they are equal,
182+
and 1 if $r is greater than $l.
183+
184+
## iseq
185+
* `iseq_i(int $l, int $r)`
186+
* `iseq_n(num $l, num $r)`
187+
* `iseq_s(str $l, str $r)`
188+
189+
Return non-zero if the two parameters are equal.
190+
191+
## isgt
192+
* `isgt_i(int $l, int $r)`
193+
* `isgt_n(num $l, num $r)`
194+
* `isgt_s(str $l, str $r)`
195+
196+
Return non-zero if $l is greater than two $r.
197+
198+
## isge
199+
* `isge_i(int $l, int $r)`
200+
* `isge_n(num $l, num $r)`
201+
* `isge_s(str $l, str $r)`
202+
203+
Return non-zero if $l is greater than or equal two $r.
204+
205+
## islt
206+
* `islt_i(int $l, int $r)`
207+
* `islt_n(num $l, num $r)`
208+
* `islt_s(str $l, str $r)`
209+
210+
Return non-zero if $l is less than two $r.
211+
212+
## isle
213+
* `isle_i(int $l, int $r)`
214+
* `isle_n(num $l, num $r)`
215+
* `isle_s(str $l, str $r)`
216+
217+
Return non-zero if $l is less than or equal two $r.
218+
219+
## isne
220+
* `isne_i(int $l, int $r)`
221+
* `isne_n(num $l, num $r)`
222+
* `isne_s(str $l, str $r)`
223+
224+
Return non-zero if the two parameters are not equal.
225+
174226
# String Opcodes
175227

176228
## radix

0 commit comments

Comments
 (0)