Fix documentation of opcodes
authorDavid Schleef <ds@schleef.org>
Tue, 28 Sep 2010 20:01:31 +0000 (13:01 -0700)
committerDavid Schleef <ds@schleef.org>
Thu, 30 Sep 2010 03:08:18 +0000 (20:08 -0700)
doc/opcode_table.xml
doc/table.xml
testsuite/generate_xml_table2.c

index b20d9fe..40692ec 100644 (file)
 <entry>4</entry>
 <entry>4</entry>
 <entry>high bits of signed multiply</entry>
-<entry>(a * b) &gt;&gt; 8</entry>
+<entry>(a * b) &gt;&gt; 16</entry>
 </row>
 <row>
 <entry>mulhul</entry>
 <entry>4</entry>
 <entry>4</entry>
 <entry>high bits of unsigned multiply</entry>
-<entry>(a * b) &gt;&gt; 8</entry>
+<entry>(a * b) &gt;&gt; 16</entry>
 </row>
 <row>
 <entry>orl</entry>
 <entry>special</entry>
 </row>
 <row>
+<entry>copyq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>cmpeqq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>cmpgtsq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>andq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>andnq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>orq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>xorq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>addq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>subq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>shlq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8S</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>shrsq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8S</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>shruq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8S</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
 <entry>convsbw</entry>
 <entry>2</entry>
 <entry>1</entry>
 <entry>2</entry>
 <entry>4</entry>
 <entry></entry>
-<entry>convert signed to unsigned with saturation</entry>
+<entry>convert signed to signed with saturation</entry>
 <entry>clamp(a)</entry>
 </row>
 <row>
 <entry>2</entry>
 <entry>4</entry>
 <entry></entry>
-<entry>convert signed to signed with saturation</entry>
+<entry>convert signed to unsigned with saturation</entry>
 <entry>clamp(a)</entry>
 </row>
 <row>
 <entry>2</entry>
 <entry>4</entry>
 <entry></entry>
-<entry>convert unsigned to unsigned with saturation</entry>
+<entry>convert unsigned to signed with saturation</entry>
 <entry>clamp(a)</entry>
 </row>
 <row>
 <entry>2</entry>
 <entry>4</entry>
 <entry></entry>
-<entry>convert unsigned to signed with saturation</entry>
+<entry>convert unsigned to unsigned with saturation</entry>
 <entry>clamp(a)</entry>
 </row>
 <row>
 <entry>4</entry>
 <entry>8</entry>
 <entry></entry>
-<entry></entry>
-<entry></entry>
+<entry>convert</entry>
+<entry>a</entry>
 </row>
 <row>
 <entry>convsssql</entry>
 <entry>4</entry>
 <entry>8</entry>
 <entry></entry>
-<entry>convert signed to unsigned with saturation</entry>
+<entry>convert signed to signed with saturation</entry>
 <entry>clamp(a)</entry>
 </row>
 <row>
 <entry>4</entry>
 <entry>8</entry>
 <entry></entry>
-<entry>convert signed to signed with saturation</entry>
+<entry>convert signed to unsigned with saturation</entry>
 <entry>clamp(a)</entry>
 </row>
 <row>
 <entry>4</entry>
 <entry>8</entry>
 <entry></entry>
-<entry>convert unsigned to unsigned with saturation</entry>
+<entry>convert unsigned to signed with saturation</entry>
 <entry>clamp(a)</entry>
 </row>
 <row>
 <entry>4</entry>
 <entry>8</entry>
 <entry></entry>
-<entry>convert unsigned to signed with saturation</entry>
+<entry>convert unsigned to unsigned with saturation</entry>
 <entry>clamp(a)</entry>
 </row>
 <row>
 <entry>special</entry>
 </row>
 <row>
+<entry>swapwl</entry>
+<entry>4</entry>
+<entry>4</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>swapq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>swaplq</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
 <entry>select0wb</entry>
 <entry>1</entry>
 <entry>2</entry>
 <entry>special</entry>
 </row>
 <row>
+<entry>splitql</entry>
+<entry>4</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
 <entry>splitlw</entry>
 <entry>2</entry>
 <entry>4</entry>
 <entry>convert integer to floating point</entry>
 <entry>a</entry>
 </row>
+<row>
+<entry>addd</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>subd</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>muld</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>divd</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>sqrtd</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>maxd</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>mind</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>cmpeqd</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>cmpltd</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>cmpled</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>convdl</entry>
+<entry>4</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>convld</entry>
+<entry>8</entry>
+<entry>4</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>convfd</entry>
+<entry>8</entry>
+<entry>4</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
+<row>
+<entry>convdf</entry>
+<entry>4</entry>
+<entry>8</entry>
+<entry></entry>
+<entry></entry>
+<entry></entry>
+</row>
 </tbody>
 </tgroup>
 </table>
index d914dbd..14beff6 100644 (file)
@@ -17,7 +17,7 @@
 <entry>absb</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 </row>
 <row>
 <entry>ldresnearl</entry>
-<entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>no</entry>
 <entry>no</entry>
 </row>
 <row>
 <entry>ldreslinl</entry>
-<entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>no</entry>
 <entry>no</entry>
 <entry>absw</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>div255w</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>absl</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>loadq</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>no</entry>
-<entry>yes</entry>
+<entry>no</entry>
 <entry>no</entry>
 </row>
 <row>
 <entry>storeq</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>splatw3q</entry>
 <entry>yes</entry>
 <entry>yes</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>yes</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>copyq</entry>
+<entry>yes</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>cmpeqq</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>cmpgtsq</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>andq</entry>
+<entry>yes</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>andnq</entry>
+<entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>orq</entry>
+<entry>yes</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>xorq</entry>
+<entry>yes</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>addq</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>subq</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>shlq</entry>
+<entry>yes</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>shrsq</entry>
+<entry>yes</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>shruq</entry>
+<entry>yes</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
 </row>
 <row>
 <entry>convsbw</entry>
 <entry>splatbw</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>splatbl</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>convslq</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>convulq</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>convhwb</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>convhlw</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>convql</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>swapw</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>swapl</entry>
 <entry>yes</entry>
 <entry>yes</entry>
+<entry>yes</entry>
+<entry>yes</entry>
+<entry>yes</entry>
 <entry>no</entry>
+</row>
+<row>
+<entry>swapwl</entry>
 <entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
 </row>
 <row>
-<entry>select0wb</entry>
+<entry>swapq</entry>
 <entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>swaplq</entry>
 <entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
 </row>
 <row>
-<entry>select1wb</entry>
+<entry>select0wb</entry>
+<entry>yes</entry>
+<entry>yes</entry>
+<entry>yes</entry>
 <entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
+</row>
+<row>
+<entry>select1wb</entry>
+<entry>yes</entry>
+<entry>yes</entry>
+<entry>yes</entry>
 <entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>select0lw</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>select1lw</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>mergewl</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>mergebw</entry>
 <entry>yes</entry>
 <entry>yes</entry>
+<entry>yes</entry>
 <entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
+</row>
+<row>
+<entry>splitql</entry>
+<entry>yes</entry>
 <entry>yes</entry>
 <entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
 </row>
 <row>
 <entry>splitlw</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>splitwb</entry>
 <entry>yes</entry>
 <entry>yes</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>addf</entry>
 <entry>yes</entry>
 <entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>subf</entry>
 <entry>yes</entry>
 <entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>mulf</entry>
 <entry>yes</entry>
 <entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>maxf</entry>
 <entry>yes</entry>
 <entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>minf</entry>
 <entry>yes</entry>
 <entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>cmpeqf</entry>
 <entry>yes</entry>
 <entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>cmpltf</entry>
 <entry>yes</entry>
 <entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>no</entry>
 <entry>no</entry>
 <entry>cmplef</entry>
 <entry>yes</entry>
 <entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>no</entry>
 <entry>no</entry>
 <entry>convfl</entry>
 <entry>yes</entry>
 <entry>no</entry>
-<entry>no</entry>
+<entry>yes</entry>
 <entry>no</entry>
 <entry>yes</entry>
 <entry>no</entry>
 <entry>convlf</entry>
 <entry>yes</entry>
 <entry>no</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>yes</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>addd</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
 <entry>no</entry>
 <entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>subd</entry>
 <entry>yes</entry>
 <entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>muld</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>divd</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>sqrtd</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>maxd</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>mind</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>cmpeqd</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>cmpltd</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>cmpled</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>convdl</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>convld</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>convfd</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+</row>
+<row>
+<entry>convdf</entry>
+<entry>yes</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
+<entry>no</entry>
 </row>
 </tbody>
 </tgroup>
index 9294e4b..750d840 100644 (file)
@@ -163,8 +163,8 @@ struct a ops[] = {
   { "minsl", "(a &lt; b) ? a : b", "signed minimum" },
   { "minul", "(a &lt; b) ? a : b", "unsigned minimum" },
   { "mulll", "a * b", "low bits of multiply" },
-  { "mulhsl", "(a * b) &gt;&gt; 8", "high bits of signed multiply" },
-  { "mulhul", "(a * b) &gt;&gt; 8", "high bits of unsigned multiply" },
+  { "mulhsl", "(a * b) &gt;&gt; 16", "high bits of signed multiply" },
+  { "mulhul", "(a * b) &gt;&gt; 16", "high bits of unsigned multiply" },
   { "orl", "a | b", "bitwise or" },
   { "shll", "a &lt;&lt; b", "shift left" },
   { "shrsl", "a &gt;&gt; b", "signed shift right" },
@@ -185,10 +185,10 @@ struct a ops[] = {
   { "convusswb", "clamp(a)", "convert unsigned to signed with saturation" },
   { "convuuswb", "clamp(a)", "convert unsigned to unsigned with saturation" },
   { "convlw", "a", "convert" },
-  { "convssslw", "clamp(a)", "convert signed to unsigned with saturation" },
-  { "convsuslw", "clamp(a)", "convert signed to signed with saturation" },
-  { "convusslw", "clamp(a)", "convert unsigned to unsigned with saturation" },
-  { "convuuslw", "clamp(a)", "convert unsigned to signed with saturation" },
+  { "convssslw", "clamp(a)", "convert signed to signed with saturation" },
+  { "convsuslw", "clamp(a)", "convert signed to unsigned with saturation" },
+  { "convusslw", "clamp(a)", "convert unsigned to signed with saturation" },
+  { "convuuslw", "clamp(a)", "convert unsigned to unsigned with saturation" },
   { "mulsbw", "a * b", "multiply signed" },
   { "mulubw", "a * b", "multiply unsigned" },
   { "mulswl", "a * b", "multiply signed" },
@@ -254,10 +254,10 @@ struct a ops[] = {
   { "convulq", "a", "unsigned convert" },
   { "convhwb", "a>>8", "shift and convert" },
   { "convhlw", "a>>16", "shift and convert" },
-  { "convsssql", "clamp(a)", "convert signed to unsigned with saturation" },
-  { "convsusql", "clamp(a)", "convert signed to signed with saturation" },
-  { "convussql", "clamp(a)", "convert unsigned to unsigned with saturation" },
-  { "convuusql", "clamp(a)", "convert unsigned to signed with saturation" },
+  { "convsssql", "clamp(a)", "convert signed to signed with saturation" },
+  { "convsusql", "clamp(a)", "convert signed to unsigned with saturation" },
+  { "convussql", "clamp(a)", "convert unsigned to signed with saturation" },
+  { "convuusql", "clamp(a)", "convert unsigned to unsigned with saturation" },
 
 };