<thead>
<row>
<entry>opcode</entry>
-<entry>destination</entry>
-<entry>source 1</entry>
-<entry>source 2</entry>
+<entry>destination size</entry>
+<entry>source 1 size</entry>
+<entry>source 2 size</entry>
<entry>description</entry>
<entry>pseudo code</entry>
</row>
<entry>shlb</entry>
<entry>1</entry>
<entry>1</entry>
-<entry>1</entry>
+<entry>1S</entry>
<entry>shift left</entry>
<entry>a << b</entry>
</row>
<entry>shrsb</entry>
<entry>1</entry>
<entry>1</entry>
-<entry>1</entry>
+<entry>1S</entry>
<entry>signed shift right</entry>
<entry>a >> b</entry>
</row>
<entry>shrub</entry>
<entry>1</entry>
<entry>1</entry>
-<entry>1</entry>
+<entry>1S</entry>
<entry>unsigned shift right</entry>
<entry>a >> b</entry>
</row>
<entry>shlw</entry>
<entry>2</entry>
<entry>2</entry>
-<entry>2</entry>
+<entry>2S</entry>
<entry>shift left</entry>
<entry>a << b</entry>
</row>
<entry>shrsw</entry>
<entry>2</entry>
<entry>2</entry>
-<entry>2</entry>
+<entry>2S</entry>
<entry>signed shift right</entry>
<entry>a >> b</entry>
</row>
<entry>shruw</entry>
<entry>2</entry>
<entry>2</entry>
-<entry>2</entry>
+<entry>2S</entry>
<entry>unsigned shift right</entry>
<entry>a >> b</entry>
</row>
<entry>shll</entry>
<entry>4</entry>
<entry>4</entry>
-<entry>4</entry>
+<entry>4S</entry>
<entry>shift left</entry>
<entry>a << b</entry>
</row>
<entry>shrsl</entry>
<entry>4</entry>
<entry>4</entry>
-<entry>4</entry>
+<entry>4S</entry>
<entry>signed shift right</entry>
<entry>a >> b</entry>
</row>
<entry>shrul</entry>
<entry>4</entry>
<entry>4</entry>
-<entry>4</entry>
+<entry>4S</entry>
<entry>unsigned shift right</entry>
<entry>a >> b</entry>
</row>
<entry>2</entry>
<entry>4</entry>
<entry></entry>
-<entry></entry>
-<entry></entry>
+<entry>split first/second words</entry>
+<entry>special</entry>
</row>
<row>
<entry>splitwb</entry>
<entry>1</entry>
<entry>2</entry>
<entry></entry>
-<entry></entry>
-<entry></entry>
+<entry>split first/second bytes</entry>
+<entry>special</entry>
</row>
<row>
<entry>addf</entry>
<entry>4</entry>
<entry>4</entry>
<entry>4</entry>
-<entry></entry>
-<entry></entry>
+<entry>add</entry>
+<entry>a + b</entry>
</row>
<row>
<entry>subf</entry>
<entry>4</entry>
<entry>4</entry>
<entry>4</entry>
-<entry></entry>
-<entry></entry>
+<entry>subtract</entry>
+<entry>a - b</entry>
</row>
<row>
<entry>mulf</entry>
<entry>4</entry>
<entry>4</entry>
<entry>4</entry>
-<entry></entry>
-<entry></entry>
+<entry>multiply</entry>
+<entry>a * b</entry>
</row>
<row>
<entry>divf</entry>
<entry>4</entry>
<entry>4</entry>
<entry>4</entry>
-<entry></entry>
-<entry></entry>
+<entry>divide</entry>
+<entry>a / b</entry>
</row>
<row>
<entry>sqrtf</entry>
<entry>4</entry>
<entry>4</entry>
<entry></entry>
-<entry></entry>
-<entry></entry>
+<entry>square root</entry>
+<entry>sqrt(a)</entry>
</row>
<row>
<entry>maxf</entry>
<entry>4</entry>
<entry>4</entry>
<entry>4</entry>
-<entry></entry>
-<entry></entry>
+<entry>maximum</entry>
+<entry>max(a,b)</entry>
</row>
<row>
<entry>minf</entry>
<entry>4</entry>
<entry>4</entry>
<entry>4</entry>
-<entry></entry>
-<entry></entry>
+<entry>minimum</entry>
+<entry>min(a,b)</entry>
</row>
<row>
<entry>cmpeqf</entry>
<entry>4</entry>
<entry>4</entry>
<entry>4</entry>
-<entry></entry>
-<entry></entry>
+<entry>compare equal</entry>
+<entry>(a == b) ? (~0) : 0</entry>
</row>
<row>
<entry>cmpltf</entry>
<entry>4</entry>
<entry>4</entry>
<entry>4</entry>
-<entry></entry>
-<entry></entry>
+<entry>compare less than</entry>
+<entry>(a == b) ? (~0) : 0</entry>
</row>
<row>
<entry>cmplef</entry>
<entry>4</entry>
<entry>4</entry>
<entry>4</entry>
-<entry></entry>
-<entry></entry>
+<entry>compare less than or equal</entry>
+<entry>(a == b) ? (~0) : 0</entry>
</row>
<row>
<entry>convfl</entry>
<entry>4</entry>
<entry>4</entry>
<entry></entry>
-<entry></entry>
-<entry></entry>
+<entry>convert float point to integer</entry>
+<entry>a</entry>
</row>
<row>
<entry>convlf</entry>
<entry>4</entry>
<entry>4</entry>
<entry></entry>
-<entry></entry>
-<entry></entry>
+<entry>convert integer to floating point</entry>
+<entry>a</entry>
</row>
</tbody>
</tgroup>
"<thead>\n"
"<row>\n"
"<entry>opcode</entry>\n"
-"<entry>destination</entry>\n"
-"<entry>source 1</entry>\n"
-"<entry>source 2</entry>\n"
+"<entry>destination size</entry>\n"
+"<entry>source 1 size</entry>\n"
+"<entry>source 2 size</entry>\n"
"<entry>description</entry>\n"
"<entry>pseudo code</entry>\n"
"</row>\n"
printf("<entry>%d</entry>\n", opcode_set->opcodes[i].dest_size[0]);
printf("<entry>%d</entry>\n", opcode_set->opcodes[i].src_size[0]);
if (opcode_set->opcodes[i].src_size[1]) {
- printf("<entry>%d</entry>\n", opcode_set->opcodes[i].src_size[1]);
+ printf("<entry>%d%s</entry>\n", opcode_set->opcodes[i].src_size[1],
+ (opcode_set->opcodes[i].flags & ORC_STATIC_OPCODE_SCALAR) ? "S" : "");
} else {
printf("<entry></entry>\n");
}
{ "accw", "+= a", "accumulate" },
{ "accl", "+= a", "accumulate" },
- { "accsadubl", "+= abs(a - b)", "accumulate absolute difference" }
+ { "accsadubl", "+= abs(a - b)", "accumulate absolute difference" },
+
+ { "splitlw" , "special", "split first/second words" },
+ { "splitwb" , "special", "split first/second bytes" },
+ { "addf", "a + b", "add" },
+ { "subf", "a - b", "subtract" },
+ { "mulf", "a * b", "multiply" },
+ { "divf", "a / b", "divide" },
+ { "sqrtf", "sqrt(a)", "square root" },
+ { "maxf", "max(a,b)", "maximum" },
+ { "minf", "min(a,b)", "minimum" },
+ { "cmpeqf", "(a == b) ? (~0) : 0", "compare equal" },
+ { "cmpltf", "(a == b) ? (~0) : 0", "compare less than" },
+ { "cmplef", "(a == b) ? (~0) : 0", "compare less than or equal" },
+ { "convfl", "a", "convert float point to integer" },
+ { "convlf", "a", "convert integer to floating point" }
};