| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/usr/bin/perl
- %packed_insns = (
- 'vfmadd' => 0x98,
- 'vfmaddsub' => 0x96,
- 'vfmsubadd' => 0x97,
- 'vfmsub' => 0x9a,
- 'vfnmadd' => 0x9c,
- 'vfnmsub' => 0x9e
- );
- %scalar_insns = (
- 'vfmadd' => 0x99,
- 'vfmsub' => 0x9b,
- 'vfnmadd' => 0x9d,
- 'vfnmsub' => 0x9f
- );
- foreach $pi ( sort(keys(%packed_insns)) ) {
- $op = $packed_insns{$pi};
- foreach $order ('132', '213', '231') {
- $xorder = substr($order,1,1).substr($order,0,1).substr($order,2,1);
- foreach $o ($order, $xorder) {
- for ($w = 0; $w < 2; $w++) {
- $suf = $w ? 'pd' : 'ps';
- for ($l = 128; $l <= 256; $l <<= 1) {
- $sx = ($l == 256) ? 'SY' : 'SO';
- $mm = ($l == 256) ? 'ymm' : 'xmm';
- printf "%-15s %-31s %-8s%-39s %s\n",
- "\U${pi}${o}${suf}",
- "${mm}reg,${mm}reg,${mm}rm",
- "[rvm:",
- sprintf("vex.dds.%d.66.0f38.w%d %02x /r]",
- $l, $w, $op),
- "FMA,FUTURE,${sx}";
- }
- }
- }
- $op += 0x10;
- }
- }
- foreach $si ( sort(keys(%scalar_insns)) ) {
- $op = $scalar_insns{$si};
- foreach $order ('132', '213', '231') {
- $xorder = substr($order,1,1).substr($order,0,1).substr($order,2,1);
- foreach $o ($order, $xorder) {
- for ($w = 0; $w < 2; $w++) {
- $suf = $w ? 'sd' : 'ss';
- $sx = $w ? 'SQ' : 'SD';
- $l = 128;
- $mm = 'xmm';
- printf "%-15s %-31s %-8s%-39s %s\n",
- "\U${si}${o}${suf}",
- "${mm}reg,${mm}reg,${mm}rm",
- '[rvm:',
- sprintf("vex.dds.%d.66.0f38.w%d %02x /r]",
- $l, $w, $op),
- "FMA,FUTURE,${sx}";
- }
- }
- $op += 0x10;
- }
- }
|