From b9c2c736c207ee8f510ce98231b38813b469e01a Mon Sep 17 00:00:00 2001 From: Denis Drakhnia Date: Sun, 18 Feb 2024 16:45:03 +0200 Subject: [PATCH] e2k: use decodetree for alops --- target/e2k/alop.decode | 1644 ++++++++++++++++++++++++++++++++ target/e2k/alops.inc | 19 +- target/e2k/meson.build | 5 + target/e2k/trans/alop-v1.c.inc | 758 +++++++++++++++ target/e2k/trans/alop-v2.c.inc | 42 + target/e2k/trans/alop-v3.c.inc | 79 ++ target/e2k/trans/alop-v4.c.inc | 3 + target/e2k/trans/alop-v5.c.inc | 239 +++++ target/e2k/trans/alop-v6.c.inc | 66 ++ target/e2k/trans/alop-v7.c.inc | 40 + target/e2k/translate.c | 168 ++-- 11 files changed, 2998 insertions(+), 65 deletions(-) create mode 100644 target/e2k/alop.decode create mode 100644 target/e2k/trans/alop-v1.c.inc create mode 100644 target/e2k/trans/alop-v2.c.inc create mode 100644 target/e2k/trans/alop-v3.c.inc create mode 100644 target/e2k/trans/alop-v4.c.inc create mode 100644 target/e2k/trans/alop-v5.c.inc create mode 100644 target/e2k/trans/alop-v6.c.inc create mode 100644 target/e2k/trans/alop-v7.c.inc diff --git a/target/e2k/alop.decode b/target/e2k/alop.decode new file mode 100644 index 0000000000..80a76234ed --- /dev/null +++ b/target/e2k/alop.decode @@ -0,0 +1,1644 @@ +# +# E2K translation routines +# +# Copyright (c) 2024 Denis Drakhnia, numas13@gmail.com +# +# This program is free software; you can redistribute it and/or modify it +# under the terms and conditions of the GNU General Public License, +# version 2 or later, as published by the Free Software Foundation. +# +# This program is distributed in the hope it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, see . + +# Fields: +%dst 0:8 +%src4 0:8 +%pdst 0:5 +%src2 8:8 +%src1 16:8 +%sm 31:1 +%src3 32:8 +%mas 51:7 +%map 40:1 24:7 +%aalit 8:2 +%aainc 10:1 +%aas 11:1 +%aaincr 12:3 +%aaindex 15:4 +%aad 19:5 + +# Argument sets: +&alf1 sm dst src1 src2 +&alf1_mas sm dst src1 src2 mas +&alf1_lit8 sm dst src1 src2 imm +&alf2 sm dst src2 +&alf2_pshufh sm dst src2 imm +&alf2_icalld sm dst src2 wbs +&alf3_mas sm src4 src1 src2 mas +&alf7 sm dst src1 src2 +&alf8 sm dst src2 +&alf15 sm dst src2 +&alf16 sm dst src1 +&alf21 sm dst src1 src2 src3 +&alf21_log sm dst src1 src2 src3 map +&alf10_mas sm dst aad aaindex aaincr aas aainc aalit mas +&alf13_mas sm src4 aad aaindex aaincr aas aainc aalit mas + +# Formats: +@alf1 ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf1 %sm %dst %src1 %src2 +@alf1_mas ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf1_mas %sm %dst %src1 %src2 %mas +@alf1_lit8 ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf1_lit8 %sm %dst %src1 %src2 imm=%src3 +@alf2 ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf2 %sm %dst %src2 +@alf2_pshufh ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf2_pshufh %sm %dst %src2 imm=%src3 +@alf2_icalld ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf2_icalld %sm %dst %src2 wbs=%src1 +@alf3_mas ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf3_mas %sm %src4 %src1 %src2 %mas +@alf7 ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf7 %sm dst=%pdst %src1 %src2 +@alf8 ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf8 %sm dst=%pdst %src2 +@alf15 ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf15 %sm %dst %src2 +@alf16 ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf16 %sm %dst %src1 +@alf21 ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf21 %sm %dst %src1 %src2 %src3 +@alf21_log ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf21_log %sm %dst %src1 %src2 %src3 %map +@alf10_mas ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf10_mas %sm %dst %aad %aaindex %aaincr %aas %aainc %aalit %mas +#@alf13_mas ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf13_mas %sm %src4 %aad %aaindex %aaincr %aas %aainc %aalit %mas +#@aaurr ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf10_mas %sm %dst %aad %aaindex %aaincr %aas %aainc %aalit %mas +#@aaurw ...... ....... ... ........ ........ . ....... ........ ........ ........ &alf13_mas %sm %src4 %aad %aaindex %aaincr %aas %aainc %aalit %mas + +# channel encodings: +# 000 alc0 +# 001 alc1 +# 010 alc2 +# 100 alc3 +# 101 alc4 +# 110 alc5 +# +# -00 alc0 or alc3 +# -01 alc1 or alc4 +# -10 alc2 or alc5 +# +# --0 alc0, alc2, alc3 or alc5 +# -0- alc0, alc1, alc3 or alc4 +# +# --- any alc + +# elbrus-v1: +andw 0----- ------- --- -------- -------- . 0000000 ........ ........ ........ @alf1 +andd 0----- ------- --- -------- -------- . 0000001 ........ ........ ........ @alf1 +andnw 0----- ------- --- -------- -------- . 0000010 ........ ........ ........ @alf1 +andnd 0----- ------- --- -------- -------- . 0000011 ........ ........ ........ @alf1 +orw 0----- ------- --- -------- -------- . 0000100 ........ ........ ........ @alf1 +ord 0----- ------- --- -------- -------- . 0000101 ........ ........ ........ @alf1 +ornw 0----- ------- --- -------- -------- . 0000110 ........ ........ ........ @alf1 +ornd 0----- ------- --- -------- -------- . 0000111 ........ ........ ........ @alf1 +xorw 0----- ------- --- -------- -------- . 0001000 ........ ........ ........ @alf1 +xord 0----- ------- --- -------- -------- . 0001001 ........ ........ ........ @alf1 +xornw 0----- ------- --- -------- -------- . 0001010 ........ ........ ........ @alf1 +xornd 0----- ------- --- -------- -------- . 0001011 ........ ........ ........ @alf1 +{ + [ + sxtb 0----- ------- --- -------- -------- . 0001100 11000000 ........ ........ @alf2 + sxth 0----- ------- --- -------- -------- . 0001100 11000001 ........ ........ @alf2 + sxtw 0----- ------- --- -------- -------- . 0001100 11000010 ........ ........ @alf2 + zxtb 0----- ------- --- -------- -------- . 0001100 11000100 ........ ........ @alf2 + zxth 0----- ------- --- -------- -------- . 0001100 11000101 ........ ........ @alf2 + zxtw 0----- ------- --- -------- -------- . 0001100 11000110 ........ ........ @alf2 + ] + sxt 0----- ------- --- -------- -------- . 0001100 ........ ........ ........ @alf1 +} +mergew 0----- ------- --- -------- -------- . 0001110 ........ ........ ........ @alf1 +merged 0----- ------- --- -------- -------- . 0001111 ........ ........ ........ @alf1 +addw 0----- ------- --- -------- -------- . 0010000 ........ ........ ........ @alf1 +addd 0----- ------- --- -------- -------- . 0010001 ........ ........ ........ @alf1 +{ + negw 0----- ------- --- -------- -------- . 0010010 11000000 ........ ........ @alf2 + subw 0----- ------- --- -------- -------- . 0010010 ........ ........ ........ @alf1 +} +{ + negd 0----- ------- --- -------- -------- . 0010011 11000000 ........ ........ @alf2 + subd 0----- ------- --- -------- -------- . 0010011 ........ ........ ........ @alf1 +} +sclw 0----- ------- --- -------- -------- . 0010100 ........ ........ ........ @alf1 +scld 0----- ------- --- -------- -------- . 0010101 ........ ........ ........ @alf1 +scrw 0----- ------- --- -------- -------- . 0010110 ........ ........ ........ @alf1 +scrd 0----- ------- --- -------- -------- . 0010111 ........ ........ ........ @alf1 +shlw 0----- ------- --- -------- -------- . 0011000 ........ ........ ........ @alf1 +shld 0----- ------- --- -------- -------- . 0011001 ........ ........ ........ @alf1 +shrw 0----- ------- --- -------- -------- . 0011010 ........ ........ ........ @alf1 +shrd 0----- ------- --- -------- -------- . 0011011 ........ ........ ........ @alf1 +sarw 0----- ------- --- -------- -------- . 0011100 ........ ........ ........ @alf1 +sard 0----- ------- --- -------- -------- . 0011101 ........ ........ ........ @alf1 +getfw 0----- ------- --- -------- -------- . 0011110 ........ ........ ........ @alf1 +getfd 0----- ------- --- -------- -------- . 0011111 ........ ........ ........ @alf1 +cmpowb 0----- ------- -0- -------- -------- . 0100000 ........ ........ 000..... @alf7 +cmpbwb 0----- ------- -0- -------- -------- . 0100000 ........ ........ 001..... @alf7 +cmpewb 0----- ------- -0- -------- -------- . 0100000 ........ ........ 010..... @alf7 +cmpbewb 0----- ------- -0- -------- -------- . 0100000 ........ ........ 011..... @alf7 +cmpswb 0----- ------- -0- -------- -------- . 0100000 ........ ........ 100..... @alf7 +cmppwb 0----- ------- -0- -------- -------- . 0100000 ........ ........ 101..... @alf7 +cmplwb 0----- ------- -0- -------- -------- . 0100000 ........ ........ 110..... @alf7 +cmplewb 0----- ------- -0- -------- -------- . 0100000 ........ ........ 111..... @alf7 +cmpodb 0----- ------- -0- -------- -------- . 0100001 ........ ........ 000..... @alf7 +cmpbdb 0----- ------- -0- -------- -------- . 0100001 ........ ........ 001..... @alf7 +cmpedb 0----- ------- -0- -------- -------- . 0100001 ........ ........ 010..... @alf7 +cmpbedb 0----- ------- -0- -------- -------- . 0100001 ........ ........ 011..... @alf7 +cmpsdb 0----- ------- -0- -------- -------- . 0100001 ........ ........ 100..... @alf7 +cmppdb 0----- ------- -0- -------- -------- . 0100001 ........ ........ 101..... @alf7 +cmpldb 0----- ------- -0- -------- -------- . 0100001 ........ ........ 110..... @alf7 +cmpledb 0----- ------- -0- -------- -------- . 0100001 ........ ........ 111..... @alf7 +cmpandewb 0----- ------- -0- -------- -------- . 0100010 ........ ........ 010..... @alf7 +cmpandswb 0----- ------- -0- -------- -------- . 0100010 ........ ........ 100..... @alf7 +cmpandpwb 0----- ------- -0- -------- -------- . 0100010 ........ ........ 101..... @alf7 +cmpandlewb 0----- ------- -0- -------- -------- . 0100010 ........ ........ 111..... @alf7 +cmpandedb 0----- ------- -0- -------- -------- . 0100011 ........ ........ 010..... @alf7 +cmpandsdb 0----- ------- -0- -------- -------- . 0100011 ........ ........ 100..... @alf7 +cmpandpdb 0----- ------- -0- -------- -------- . 0100011 ........ ........ 101..... @alf7 +cmpandledb 0----- ------- -0- -------- -------- . 0100011 ........ ........ 111..... @alf7 +cctopo 0----- ------- -00 -------- -------- . 0100100 11000000 ........ 000..... @alf8 +cctopb 0----- ------- -00 -------- -------- . 0100100 11000000 ........ 001..... @alf8 +cctope 0----- ------- -00 -------- -------- . 0100100 11000000 ........ 010..... @alf8 +cctopbe 0----- ------- -00 -------- -------- . 0100100 11000000 ........ 011..... @alf8 +cctops 0----- ------- -00 -------- -------- . 0100100 11000000 ........ 100..... @alf8 +cctopp 0----- ------- -00 -------- -------- . 0100100 11000000 ........ 101..... @alf8 +cctopl 0----- ------- -00 -------- -------- . 0100100 11000000 ........ 110..... @alf8 +cctople 0----- ------- -00 -------- -------- . 0100100 11000000 ........ 111..... @alf8 +stb 0----- ....... -10 -------- -------- . 0100100 ........ ........ ........ @alf3_mas +sth 0----- ....... -10 -------- -------- . 0100101 ........ ........ ........ @alf3_mas +stw 0----- ....... -10 -------- -------- . 0100110 ........ ........ ........ @alf3_mas +std 0----- ....... -10 -------- -------- . 0100111 ........ ........ ........ @alf3_mas +stcsb 0----- ....... -10 -------- -------- . 0101000 ........ ........ ........ @alf3_mas +stcsh 0----- ....... -10 -------- -------- . 0101001 ........ ........ ........ @alf3_mas +stcsw 0----- ....... -10 -------- -------- . 0101010 ........ ........ ........ @alf3_mas +stcsd 0----- ....... -10 -------- -------- . 0101011 ........ ........ ........ @alf3_mas +stdsb 0----- ....... -10 -------- -------- . 0101100 ........ ........ ........ @alf3_mas +stdsh 0----- ....... -10 -------- -------- . 0101101 ........ ........ ........ @alf3_mas +stdsw 0----- ....... -10 -------- -------- . 0101110 ........ ........ ........ @alf3_mas +stdsd 0----- ....... -10 -------- -------- . 0101111 ........ ........ ........ @alf3_mas +stesb 0----- ....... -10 -------- -------- . 0110000 ........ ........ ........ @alf3_mas +stesh 0----- ....... -10 -------- -------- . 0110001 ........ ........ ........ @alf3_mas +stesw 0----- ....... -10 -------- -------- . 0110010 ........ ........ ........ @alf3_mas +stesd 0----- ....... -10 -------- -------- . 0110011 ........ ........ ........ @alf3_mas +stfsb 0----- ....... -10 -------- -------- . 0110100 ........ ........ ........ @alf3_mas +stfsh 0----- ....... -10 -------- -------- . 0110101 ........ ........ ........ @alf3_mas +stfsw 0----- ....... -10 -------- -------- . 0110110 ........ ........ ........ @alf3_mas +stfsd 0----- ....... -10 -------- -------- . 0110111 ........ ........ ........ @alf3_mas +stgsb 0----- ....... -10 -------- -------- . 0111000 ........ ........ ........ @alf3_mas +stgsh 0----- ....... -10 -------- -------- . 0111001 ........ ........ ........ @alf3_mas +stgsw 0----- ....... -10 -------- -------- . 0111010 ........ ........ ........ @alf3_mas +stgsd 0----- ....... -10 -------- -------- . 0111011 ........ ........ ........ @alf3_mas +stssb 0----- ....... -10 -------- -------- . 0111100 ........ ........ ........ @alf3_mas +stssh 0----- ....... -10 -------- -------- . 0111101 ........ ........ ........ @alf3_mas +stssw 0----- ....... -10 -------- -------- . 0111110 ........ ........ ........ @alf3_mas +stssd 0----- ....... -10 -------- -------- . 0111111 ........ ........ ........ @alf3_mas +fxcmpeqsb 0----- ------- -0- -------- -------- . 0101000 ........ ........ 000..... @alf7 +fxcmpltsb 0----- ------- -0- -------- -------- . 0101000 ........ ........ 001..... @alf7 +fxcmplesb 0----- ------- -0- -------- -------- . 0101000 ........ ........ 010..... @alf7 +fxcmpuodsb 0----- ------- -0- -------- -------- . 0101000 ........ ........ 011..... @alf7 +fxcmpneqsb 0----- ------- -0- -------- -------- . 0101000 ........ ........ 100..... @alf7 +fxcmpnltsb 0----- ------- -0- -------- -------- . 0101000 ........ ........ 101..... @alf7 +fxcmpnlesb 0----- ------- -0- -------- -------- . 0101000 ........ ........ 110..... @alf7 +fxcmpodsb 0----- ------- -0- -------- -------- . 0101000 ........ ........ 111..... @alf7 +fxcmpeqdb 0----- ------- -0- -------- -------- . 0101001 ........ ........ 000..... @alf7 +fxcmpltdb 0----- ------- -0- -------- -------- . 0101001 ........ ........ 001..... @alf7 +fxcmpledb 0----- ------- -0- -------- -------- . 0101001 ........ ........ 010..... @alf7 +fxcmpuoddb 0----- ------- -0- -------- -------- . 0101001 ........ ........ 011..... @alf7 +fxcmpneqdb 0----- ------- -0- -------- -------- . 0101001 ........ ........ 100..... @alf7 +fxcmpnltdb 0----- ------- -0- -------- -------- . 0101001 ........ ........ 101..... @alf7 +fxcmpnledb 0----- ------- -0- -------- -------- . 0101001 ........ ........ 110..... @alf7 +fxcmpoddb 0----- ------- -0- -------- -------- . 0101001 ........ ........ 111..... @alf7 +fxcmpeqxb 0----- ------- -0- -------- -------- . 0101011 ........ ........ 000..... @alf7 +fxcmpltxb 0----- ------- -0- -------- -------- . 0101011 ........ ........ 001..... @alf7 +fxcmplexb 0----- ------- -0- -------- -------- . 0101011 ........ ........ 010..... @alf7 +fxcmpuodxb 0----- ------- -0- -------- -------- . 0101011 ........ ........ 011..... @alf7 +fxcmpneqxb 0----- ------- -0- -------- -------- . 0101011 ........ ........ 100..... @alf7 +fxcmpnltxb 0----- ------- -0- -------- -------- . 0101011 ........ ........ 101..... @alf7 +fxcmpnlexb 0----- ------- -0- -------- -------- . 0101011 ........ ........ 110..... @alf7 +fxcmpodxb 0----- ------- -0- -------- -------- . 0101011 ........ ........ 111..... @alf7 +fcmpeqsb 0----- ------- -0- -------- -------- . 0101110 ........ ........ 000..... @alf7 +fcmpltsb 0----- ------- -0- -------- -------- . 0101110 ........ ........ 001..... @alf7 +fcmplesb 0----- ------- -0- -------- -------- . 0101110 ........ ........ 010..... @alf7 +fcmpuodsb 0----- ------- -0- -------- -------- . 0101110 ........ ........ 011..... @alf7 +fcmpneqsb 0----- ------- -0- -------- -------- . 0101110 ........ ........ 100..... @alf7 +fcmpnltsb 0----- ------- -0- -------- -------- . 0101110 ........ ........ 101..... @alf7 +fcmpnlesb 0----- ------- -0- -------- -------- . 0101110 ........ ........ 110..... @alf7 +fcmpodsb 0----- ------- -0- -------- -------- . 0101110 ........ ........ 111..... @alf7 +fcmpeqdb 0----- ------- -0- -------- -------- . 0101111 ........ ........ 000..... @alf7 +fcmpltdb 0----- ------- -0- -------- -------- . 0101111 ........ ........ 001..... @alf7 +fcmpledb 0----- ------- -0- -------- -------- . 0101111 ........ ........ 010..... @alf7 +fcmpuoddb 0----- ------- -0- -------- -------- . 0101111 ........ ........ 011..... @alf7 +fcmpneqdb 0----- ------- -0- -------- -------- . 0101111 ........ ........ 100..... @alf7 +fcmpnltdb 0----- ------- -0- -------- -------- . 0101111 ........ ........ 101..... @alf7 +fcmpnledb 0----- ------- -0- -------- -------- . 0101111 ........ ........ 110..... @alf7 +fcmpoddb 0----- ------- -0- -------- -------- . 0101111 ........ ........ 111..... @alf7 +fadds 0----- ------- -0- -------- -------- . 0110000 ........ ........ ........ @alf1 +faddd 0----- ------- -0- -------- -------- . 0110001 ........ ........ ........ @alf1 +fsubs 0----- ------- -0- -------- -------- . 0110010 ........ ........ ........ @alf1 +fsubd 0----- ------- -0- -------- -------- . 0110011 ........ ........ ........ @alf1 +fmins 0----- ------- -0- -------- -------- . 0110100 ........ ........ ........ @alf1 +fmind 0----- ------- -0- -------- -------- . 0110101 ........ ........ ........ @alf1 +fmaxs 0----- ------- -0- -------- -------- . 0110110 ........ ........ ........ @alf1 +fmaxd 0----- ------- -0- -------- -------- . 0110111 ........ ........ ........ @alf1 +fmuls 0----- ------- -0- -------- -------- . 0111000 ........ ........ ........ @alf1 +fmuld 0----- ------- -0- -------- -------- . 0111001 ........ ........ ........ @alf1 +fstoiw 0----- ------- -0- -------- -------- . 0111100 11000000 ........ ........ @alf2 +iwtofs 0----- ------- -0- -------- -------- . 0111100 11000100 ........ ........ @alf2 +fdtoid 0----- ------- -0- -------- -------- . 0111101 11000000 ........ ........ @alf2 +fxtoid 0----- ------- -0- -------- -------- . 0111101 11000001 ........ ........ @alf2 +fstoiwtr 0----- ------- -0- -------- -------- . 0111100 11000010 ........ ........ @alf2 +idtofd 0----- ------- -0- -------- -------- . 0111101 11000100 ........ ........ @alf2 +idtofx 0----- ------- -0- -------- -------- . 0111101 11000101 ........ ........ @alf2 +fxtofd 0----- ------- -0- -------- -------- . 0111101 11000110 ........ ........ @alf2 +fdtofx 0----- ------- -0- -------- -------- . 0111101 11000111 ........ ........ @alf2 +pfstoiw 0----- ------- -0- -------- -------- . 0111101 11001000 ........ ........ @alf2 +pfstoiwtr 0----- ------- -0- -------- -------- . 0111101 11001010 ........ ........ @alf2 +piwtofs 0----- ------- -0- -------- -------- . 0111101 11001100 ........ ........ @alf2 +fstoid 0----- ------- -0- -------- -------- . 0111110 11000000 ........ ........ @alf2 +iwtofd 0----- ------- -0- -------- -------- . 0111110 11000100 ........ ........ @alf2 +iwtofx 0----- ------- -0- -------- -------- . 0111110 11000101 ........ ........ @alf2 +fstofd 0----- ------- -0- -------- -------- . 0111110 11000110 ........ ........ @alf2 +fstofx 0----- ------- -0- -------- -------- . 0111110 11000111 ........ ........ @alf2 +pfstofd 0----- ------- -0- -------- -------- . 0111110 11001110 ........ ........ @alf2 +fdtoiw 0----- ------- -0- -------- -------- . 0111111 11000000 ........ ........ @alf2 +fxtoiw 0----- ------- -0- -------- -------- . 0111111 11000001 ........ ........ @alf2 +fdtoiwtr 0----- ------- -0- -------- -------- . 0111111 11000010 ........ ........ @alf2 +idtofs 0----- ------- -0- -------- -------- . 0111111 11000100 ........ ........ @alf2 +fdtofs 0----- ------- -0- -------- -------- . 0111111 11000110 ........ ........ @alf2 +fxtofs 0----- ------- -0- -------- -------- . 0111111 11000111 ........ ........ @alf2 +pfdtoiw 0----- ------- -0- -------- -------- . 0111111 11001000 ........ ........ @alf2 +pfdtoiwtr 0----- ------- -0- -------- -------- . 0111111 11001010 ........ ........ @alf2 +pfdtofs 0----- ------- -0- -------- -------- . 0111111 11001110 ........ ........ @alf2 +udivw 0----- ------- 110 -------- -------- . 1000000 ........ ........ ........ @alf1 +udivd 0----- ------- 110 -------- -------- . 1000001 ........ ........ ........ @alf1 +sdivw 0----- ------- 110 -------- -------- . 1000010 ........ ........ ........ @alf1 +sdivd 0----- ------- 110 -------- -------- . 1000011 ........ ........ ........ @alf1 +udivx 0----- ------- 110 -------- -------- . 1000100 ........ ........ ........ @alf1 +umodx 0----- ------- 110 -------- -------- . 1000101 ........ ........ ........ @alf1 +sdivx 0----- ------- 110 -------- -------- . 1000110 ........ ........ ........ @alf1 +smodx 0----- ------- 110 -------- -------- . 1000111 ........ ........ ........ @alf1 +fxaddss 0----- ------- -0- -------- -------- . 1000000 ........ ........ ........ @alf1 +fxadddd 0----- ------- -0- -------- -------- . 1000001 ........ ........ ........ @alf1 +fxaddsx 0----- ------- -0- -------- -------- . 1000010 ........ ........ ........ @alf1 +fxadddx 0----- ------- -0- -------- -------- . 1000011 ........ ........ ........ @alf1 +fxaddxs 0----- ------- -0- -------- -------- . 1000100 ........ ........ ........ @alf1 +fxaddxd 0----- ------- -0- -------- -------- . 1000101 ........ ........ ........ @alf1 +fxaddxx 0----- ------- -0- -------- -------- . 1000111 ........ ........ ........ @alf1 +fxdivss 0----- ------- 110 -------- -------- . 1001000 ........ ........ ........ @alf1 +fxsubss 0----- ------- -0- -------- -------- . 1001000 ........ ........ ........ @alf1 +fxdivdd 0----- ------- 110 -------- -------- . 1001001 ........ ........ ........ @alf1 +fxsubdd 0----- ------- -0- -------- -------- . 1001001 ........ ........ ........ @alf1 +fxdivsx 0----- ------- 110 -------- -------- . 1001010 ........ ........ ........ @alf1 +fxsubsx 0----- ------- -0- -------- -------- . 1001010 ........ ........ ........ @alf1 +fxdivdx 0----- ------- 110 -------- -------- . 1001011 ........ ........ ........ @alf1 +fxsubdx 0----- ------- -0- -------- -------- . 1001011 ........ ........ ........ @alf1 +fxdivxs 0----- ------- 110 -------- -------- . 1001100 ........ ........ ........ @alf1 +fxsubxs 0----- ------- -0- -------- -------- . 1001100 ........ ........ ........ @alf1 +fxdivxd 0----- ------- 110 -------- -------- . 1001101 ........ ........ ........ @alf1 +fxsubxd 0----- ------- -0- -------- -------- . 1001101 ........ ........ ........ @alf1 +fxdivxx 0----- ------- 110 -------- -------- . 1001111 ........ ........ ........ @alf1 +fxsubxx 0----- ------- -0- -------- -------- . 1001111 ........ ........ ........ @alf1 +fxmulss 0----- ------- -0- -------- -------- . 1010000 ........ ........ ........ @alf1 +fxmuldd 0----- ------- -0- -------- -------- . 1010001 ........ ........ ........ @alf1 +fxmulsx 0----- ------- -0- -------- -------- . 1010010 ........ ........ ........ @alf1 +fxmuldx 0----- ------- -0- -------- -------- . 1010011 ........ ........ ........ @alf1 +fxmulxs 0----- ------- -0- -------- -------- . 1010100 ........ ........ ........ @alf1 +fxmulxd 0----- ------- -0- -------- -------- . 1010101 ........ ........ ........ @alf1 +fxmulxx 0----- ------- -0- -------- -------- . 1010111 ........ ........ ........ @alf1 +fxrsubss 0----- ------- -0- -------- -------- . 1011000 ........ ........ ........ @alf1 +fxrsubdd 0----- ------- -0- -------- -------- . 1011001 ........ ........ ........ @alf1 +fxrsubsx 0----- ------- -0- -------- -------- . 1011010 ........ ........ ........ @alf1 +fxrsubdx 0----- ------- -0- -------- -------- . 1011011 ........ ........ ........ @alf1 +fxsqrtisx 0----- ------- 110 -------- -------- . 1010010 11000000 ........ ........ @alf2 +fxsqrtidx 0----- ------- 110 -------- -------- . 1010011 11000000 ........ ........ @alf2 +fxsqrtixx 0----- ------- 110 -------- -------- . 1010111 11000000 ........ ........ @alf2 +fxsqrtuxx 0----- ------- 110 -------- -------- . 1011001 ........ ........ ........ @alf1 +fxsqrtusx 0----- ------- 110 -------- -------- . 1011010 ........ ........ ........ @alf1 +fxsqrtudx 0----- ------- 110 -------- -------- . 1011011 ........ ........ ........ @alf1 +fxsqrttxx 0----- ------- 110 -------- -------- . 1011101 ........ ........ ........ @alf1 +fxsqrttsx 0----- ------- 110 -------- -------- . 1011110 ........ ........ ........ @alf1 +fxsqrttdx 0----- ------- 110 -------- -------- . 1011111 ........ ........ ........ @alf1 +fxdivtss 0----- ------- 110 -------- -------- . 1100000 ........ ........ ........ @alf1 +fxdivtdd 0----- ------- 110 -------- -------- . 1100001 ........ ........ ........ @alf1 +fxdivtsx 0----- ------- 110 -------- -------- . 1100010 ........ ........ ........ @alf1 +fxdivtdx 0----- ------- 110 -------- -------- . 1100011 ........ ........ ........ @alf1 +movfi 0----- ------- -0- -------- -------- . 1011100 11000000 ........ ........ @alf2 +movif 0----- ------- -0- -------- -------- . 1011110 ........ ........ ........ @alf1 +movts 0----- ------- -0- -------- -------- . 1100000 11000000 ........ ........ @alf2 +movtcs 0----- ------- -0- -------- -------- . 1100000 11000001 ........ ........ @alf2 +#movtrs 0----- ------- -0- -------- -------- . 1100000 11000010 ........ ........ @alf2 +#movtrcs 0----- ------- -0- -------- -------- . 1100000 11000011 ........ ........ @alf2 +movtd 0----- ------- -0- -------- -------- . 1100001 11000000 ........ ........ @alf2 +movtcd 0----- ------- -0- -------- -------- . 1100001 11000001 ........ ........ @alf2 +#movtrd 0----- ------- -0- -------- -------- . 1100001 11000010 ........ ........ @alf2 +#movtrcd 0----- ------- -0- -------- -------- . 1100001 11000011 ........ ........ @alf2 +movtq 1----- ------- -0- 00000001 11000000 . 1010111 11000000 ........ ........ @alf2 +movtcq 1----- ------- -0- 00000001 11000000 . 1010111 11000001 ........ ........ @alf2 +#movtrq 1----- ------- -0- 00000001 11000000 . 1010111 11000010 ........ ........ @alf2 +#movtrcq 1----- ------- -0- 00000001 11000000 . 1010111 11000011 ........ ........ @alf2 +#getsap 0----- ------- 00- -------- -------- . 1100010 11101100 ........ ........ @alf2 +#cudtoap 0----- ------- -0- -------- -------- . 1100010 11110000 ........ ........ @alf2 +#gdtoap 0----- ------- -0- -------- -------- . 1100010 11110010 ........ ........ @alf2 +#vfsi 0----- ------- -01 -------- -------- . 1100011 ........ ........ ........ @alf1 +getpl 0----- ------- -00 -------- -------- . 1100011 11110000 ........ ........ @alf2 +ldb 0----- ....... --0 -------- -------- . 1100100 ........ ........ ........ @alf1_mas +ldh 0----- ....... --0 -------- -------- . 1100101 ........ ........ ........ @alf1_mas +ldw 0----- ....... --0 -------- -------- . 1100110 ........ ........ ........ @alf1_mas +ldd 0----- ....... --0 -------- -------- . 1100111 ........ ........ ........ @alf1_mas +ldcsb 0----- ....... --0 -------- -------- . 1101000 ........ ........ ........ @alf1_mas +ldcsh 0----- ....... --0 -------- -------- . 1101001 ........ ........ ........ @alf1_mas +ldcsw 0----- ....... --0 -------- -------- . 1101010 ........ ........ ........ @alf1_mas +ldcsd 0----- ....... --0 -------- -------- . 1101011 ........ ........ ........ @alf1_mas +lddsb 0----- ....... --0 -------- -------- . 1101100 ........ ........ ........ @alf1_mas +lddsh 0----- ....... --0 -------- -------- . 1101101 ........ ........ ........ @alf1_mas +lddsw 0----- ....... --0 -------- -------- . 1101110 ........ ........ ........ @alf1_mas +lddsd 0----- ....... --0 -------- -------- . 1101111 ........ ........ ........ @alf1_mas +ldesb 0----- ....... --0 -------- -------- . 1110000 ........ ........ ........ @alf1_mas +ldesh 0----- ....... --0 -------- -------- . 1110001 ........ ........ ........ @alf1_mas +ldesw 0----- ....... --0 -------- -------- . 1110010 ........ ........ ........ @alf1_mas +ldesd 0----- ....... --0 -------- -------- . 1110011 ........ ........ ........ @alf1_mas +ldfsb 0----- ....... --0 -------- -------- . 1110100 ........ ........ ........ @alf1_mas +ldfsh 0----- ....... --0 -------- -------- . 1110101 ........ ........ ........ @alf1_mas +ldfsw 0----- ....... --0 -------- -------- . 1110110 ........ ........ ........ @alf1_mas +ldfsd 0----- ....... --0 -------- -------- . 1110111 ........ ........ ........ @alf1_mas +ldgsb 0----- ....... --0 -------- -------- . 1111000 ........ ........ ........ @alf1_mas +ldgsh 0----- ....... --0 -------- -------- . 1111001 ........ ........ ........ @alf1_mas +ldgsw 0----- ....... --0 -------- -------- . 1111010 ........ ........ ........ @alf1_mas +ldgsd 0----- ....... --0 -------- -------- . 1111011 ........ ........ ........ @alf1_mas +ldssb 0----- ....... --0 -------- -------- . 1111100 ........ ........ ........ @alf1_mas +ldssh 0----- ....... --0 -------- -------- . 1111101 ........ ........ ........ @alf1_mas +ldssw 0----- ....... --0 -------- -------- . 1111110 ........ ........ ........ @alf1_mas +ldssd 0----- ....... --0 -------- -------- . 1111111 ........ ........ ........ @alf1_mas +#stq 1----- ....... -10 00000001 11000000 . 0000001 ........ ........ ........ @alf3_mas +#stcsq 1----- ....... -10 00000001 11000000 . 0000010 ........ ........ ........ @alf3_mas +#stdsq 1----- ....... -10 00000001 11000000 . 0000011 ........ ........ ........ @alf3_mas +#stesq 1----- ....... -10 00000001 11000000 . 0000100 ........ ........ ........ @alf3_mas +#stfsq 1----- ....... -10 00000001 11000000 . 0000101 ........ ........ ........ @alf3_mas +#stgsq 1----- ....... -10 00000001 11000000 . 0000110 ........ ........ ........ @alf3_mas +#stssq 1----- ....... -10 00000001 11000000 . 0000111 ........ ........ ........ @alf3_mas +gettags 1----- ------- -10 00000001 11000000 . 0001000 11000000 ........ ........ @alf2 +gettagd 1----- ------- -10 00000001 11000000 . 0001001 11000000 ........ ........ @alf2 +puttags 1----- ....... -10 00000001 11000000 . 0001010 ........ ........ ........ @alf1_mas +puttagd 1----- ....... -10 00000001 11000000 . 0001011 ........ ........ ........ @alf1_mas +pminub 1----- ------- -00 00000001 11000000 . 0000000 ........ ........ ........ @alf1 +pminsh 1----- ------- -00 00000001 11000000 . 0000001 ........ ........ ........ @alf1 +pmaxub 1----- ------- -00 00000001 11000000 . 0000010 ........ ........ ........ @alf1 +pmaxsh 1----- ------- -00 00000001 11000000 . 0000011 ........ ........ ........ @alf1 +punpckhbh 1----- ------- -01 00000001 11000000 . 0000000 ........ ........ ........ @alf1 +punpcklbh 1----- ------- -01 00000001 11000000 . 0000001 ........ ........ ........ @alf1 +punpckhhw 1----- ------- -01 00000001 11000000 . 0000010 ........ ........ ........ @alf1 +punpcklhw 1----- ------- -01 00000001 11000000 . 0000011 ........ ........ ........ @alf1 +punpckhwd 1----- ------- -01 00000001 11000000 . 0000100 ........ ........ ........ @alf1 +punpcklwd 1----- ------- -01 00000001 11000000 . 0000101 ........ ........ ........ @alf1 +pmovmskps 1----- ------- -01 00000001 11000000 . 0000110 ........ ........ ........ @alf1 +pmovmskpd 1----- ------- -01 00000001 11000000 . 0000111 ........ ........ ........ @alf1 +packsshb 1----- ------- -01 00000001 11000000 . 0001000 ........ ........ ........ @alf1 +packushb 1----- ------- -01 00000001 11000000 . 0001001 ........ ........ ........ @alf1 +packsswh 1----- ------- -01 00000001 11000000 . 0001010 ........ ........ ........ @alf1 +pmovmskb 1----- ------- -01 00000001 11000000 . 0001011 ........ ........ ........ @alf1 +paddb 1----- ------- -00 00000001 11000000 . 0001000 ........ ........ ........ @alf1 +paddh 1----- ------- -00 00000001 11000000 . 0001001 ........ ........ ........ @alf1 +paddsb 1----- ------- -00 00000001 11000000 . 0001010 ........ ........ ........ @alf1 +paddsh 1----- ------- -00 00000001 11000000 . 0001011 ........ ........ ........ @alf1 +paddusb 1----- ------- -00 00000001 11000000 . 0001100 ........ ........ ........ @alf1 +paddush 1----- ------- -00 00000001 11000000 . 0001101 ........ ........ ........ @alf1 +paddw 1----- ------- -00 00000001 11000000 . 0001110 ........ ........ ........ @alf1 +paddd 1----- ------- -00 00000001 11000000 . 0001111 ........ ........ ........ @alf1 +psubb 1----- ------- -00 00000001 11000000 . 0010000 ........ ........ ........ @alf1 +psubh 1----- ------- -00 00000001 11000000 . 0010001 ........ ........ ........ @alf1 +psubsb 1----- ------- -00 00000001 11000000 . 0010010 ........ ........ ........ @alf1 +psubsh 1----- ------- -00 00000001 11000000 . 0010011 ........ ........ ........ @alf1 +psubusb 1----- ------- -00 00000001 11000000 . 0010100 ........ ........ ........ @alf1 +psubush 1----- ------- -00 00000001 11000000 . 0010101 ........ ........ ........ @alf1 +psubw 1----- ------- -00 00000001 11000000 . 0010110 ........ ........ ........ @alf1 +psubd 1----- ------- -00 00000001 11000000 . 0010111 ........ ........ ........ @alf1 +psrlqh 1----- ------- -01 00000001 ........ . 0001100 ........ ........ ........ @alf1_lit8 +psrlql 1----- ------- -01 00000001 ........ . 0001101 ........ ........ ........ @alf1_lit8 +psllqh 1----- ------- -01 00000001 ........ . 0001110 ........ ........ ........ @alf1_lit8 +psllql 1----- ------- -01 00000001 ........ . 0001111 ........ ........ ........ @alf1_lit8 +psrlw 1----- ------- -01 00000001 11000000 . 0010000 ........ ........ ........ @alf1 +psrlw 1----- ------- -00 00000010 11000000 . 0010000 ........ ........ ........ @alf1 +psrlh 1----- ------- -01 00000001 11000000 . 0010001 ........ ........ ........ @alf1 +psrlh 1----- ------- -00 00000010 11000000 . 0010001 ........ ........ ........ @alf1 +psraw 1----- ------- -01 00000001 11000000 . 0010010 ........ ........ ........ @alf1 +psraw 1----- ------- -00 00000010 11000000 . 0010010 ........ ........ ........ @alf1 +psrah 1----- ------- -01 00000001 11000000 . 0010011 ........ ........ ........ @alf1 +psrah 1----- ------- -00 00000010 11000000 . 0010011 ........ ........ ........ @alf1 +psllw 1----- ------- -01 00000001 11000000 . 0010100 ........ ........ ........ @alf1 +psllw 1----- ------- -00 00000010 11000000 . 0010100 ........ ........ ........ @alf1 +psllh 1----- ------- -01 00000001 11000000 . 0010101 ........ ........ ........ @alf1 +psllh 1----- ------- -00 00000010 11000000 . 0010101 ........ ........ ........ @alf1 +pshufw 1----- ------- -01 00000001 ........ . 0010110 ........ ........ ........ @alf1_lit8 +pshufh 1----- ------- -01 00000001 ........ . 0010111 11000000 ........ ........ @alf2_pshufh +pcmpeqb 1----- ------- -00 00000001 11000000 . 0011000 ........ ........ ........ @alf1 +pcmpeqh 1----- ------- -00 00000001 11000000 . 0011001 ........ ........ ........ @alf1 +pcmpeqw 1----- ------- -00 00000001 11000000 . 0011010 ........ ........ ........ @alf1 +pcmpgtb 1----- ------- -00 00000001 11000000 . 0011011 ........ ........ ........ @alf1 +pcmpgth 1----- ------- -00 00000001 11000000 . 0011100 ........ ........ ........ @alf1 +pcmpgtw 1----- ------- -00 00000001 11000000 . 0011101 ........ ........ ........ @alf1 +pmulhh 1----- ------- -01 00000001 11000000 . 0011000 ........ ........ ........ @alf1 +pmullh 1----- ------- -01 00000001 11000000 . 0011001 ........ ........ ........ @alf1 +pmaddh 1----- ------- -01 00000001 11000000 . 0011010 ........ ........ ........ @alf1 +psadbw 1----- ------- -01 00000001 11000000 . 0011100 ........ ........ ........ @alf1 +pmulhuh 1----- ------- -01 00000001 11000000 . 0011011 ........ ........ ........ @alf1 +pextrh 1----- ------- -01 00000001 ........ . 0011110 ........ ........ ........ @alf1_lit8 +pinsh 1----- ------- -01 00000001 ........ . 0011111 ........ ........ ........ @alf1_lit8 +pavgusb 1----- ------- -00 00000001 11000000 . 0011110 ........ ........ ........ @alf1 +pavgush 1----- ------- -00 00000001 11000000 . 0011111 ........ ........ ........ @alf1 +mulw 1----- ------- -0- 00000001 11000000 . 0100000 ........ ........ ........ @alf1 +muld 1----- ------- -0- 00000001 11000000 . 0100001 ........ ........ ........ @alf1 +umulx 1----- ------- -0- 00000001 11000000 . 0100010 ........ ........ ........ @alf1 +smulx 1----- ------- -0- 00000001 11000000 . 0100011 ........ ........ ........ @alf1 +#strd 1----- ....... -10 00000001 11000000 . 0011011 ........ ........ ........ @alf13_mas +staab 1----- ....... -10 00000001 11000000 . 0011100 ........ ........ ........ @alf10_mas +staah 1----- ....... -10 00000001 11000000 . 0011101 ........ ........ ........ @alf10_mas +staaw 1----- ....... -10 00000001 11000000 . 0011110 ........ ........ ........ @alf10_mas +staad 1----- ....... -10 00000001 11000000 . 0011111 ........ ........ ........ @alf10_mas +staaq 1----- ....... -10 00000001 11000000 . 0111111 ........ ........ ........ @alf10_mas +stgdb 1----- ....... -10 00000001 11000000 . 0100100 ........ ........ ........ @alf3_mas +stgdh 1----- ....... -10 00000001 11000000 . 0100101 ........ ........ ........ @alf3_mas +stgdw 1----- ....... -10 00000001 11000000 . 0100110 ........ ........ ........ @alf3_mas +stgdd 1----- ....... -10 00000001 11000000 . 0100111 ........ ........ ........ @alf3_mas +#stapb 1----- ....... -10 00000001 11000000 . 0101000 ........ ........ ........ @alf13_mas +#staph 1----- ....... -10 00000001 11000000 . 0101001 ........ ........ ........ @alf13_mas +#stapw 1----- ....... -10 00000001 11000000 . 0101010 ........ ........ ........ @alf13_mas +#stapd 1----- ....... -10 00000001 11000000 . 0101011 ........ ........ ........ @alf13_mas +# stodrb 1----- ....... -10 00000001 11000000 . 0101100 ........ ........ ........ @alf13_mas +# stodrh 1----- ....... -10 00000001 11000000 . 0101101 ........ ........ ........ @alf13_mas +# stodrw 1----- ....... -10 00000001 11000000 . 0101110 ........ ........ ........ @alf13_mas +# stodrd 1----- ....... -10 00000001 11000000 . 0101111 ........ ........ ........ @alf13_mas +# stodwb 1----- ....... -10 00000001 11000000 . 0110000 ........ ........ ........ @alf13_mas +# stodwh 1----- ....... -10 00000001 11000000 . 0110001 ........ ........ ........ @alf13_mas +# stodww 1----- ....... -10 00000001 11000000 . 0110010 ........ ........ ........ @alf13_mas +# stodwd 1----- ....... -10 00000001 11000000 . 0110011 ........ ........ ........ @alf13_mas +# stodpb 1----- ....... -10 00000001 11000000 . 0110100 ........ ........ ........ @alf13_mas +# stodph 1----- ....... -10 00000001 11000000 . 0110101 ........ ........ ........ @alf13_mas +# stodpw 1----- ....... -10 00000001 11000000 . 0110110 ........ ........ ........ @alf13_mas +# stodpd 1----- ....... -10 00000001 11000000 . 0110111 ........ ........ ........ @alf13_mas +#stapq 1----- ....... -10 00000001 11000000 . 0111010 ........ ........ ........ @alf13_mas +#stgdq 1----- ....... -10 00000001 11000000 . 0111001 ........ ........ ........ @alf13_mas +# stodrq 1----- ....... -10 00000001 11000000 . 0111011 ........ ........ ........ @alf13_mas +# stodwq 1----- ....... -10 00000001 11000000 . 0111100 ........ ........ ........ @alf13_mas +# stodpq 1----- ....... -10 00000001 11000000 . 0111101 ........ ........ ........ @alf13_mas +#gettc 1----- ------- 000 00000001 11000000 . 0100100 11000000 ........ ........ @alf2 +#puttc 1----- ------- 000 00000001 11000000 . 0100101 ........ ........ ........ @alf1 +#invtc 1----- ------- 000 00000001 11000000 . 0100110 11000000 ........ ........ @alf2 +fxcmpudsf 1----- ------- -0- 00000001 11000011 . 0101000 ........ ........ ........ @alf1 +fxcmpodsf 1----- ------- -0- 00000001 11000111 . 0101000 ........ ........ ........ @alf1 +fxcmpuddf 1----- ------- -0- 00000001 11000011 . 0101001 ........ ........ ........ @alf1 +fxcmpoddf 1----- ------- -0- 00000001 11000111 . 0101001 ........ ........ ........ @alf1 +fxcmpudxf 1----- ------- -0- 00000001 11000011 . 0101011 ........ ........ ........ @alf1 +fxcmpodxf 1----- ------- -0- 00000001 11000111 . 0101011 ........ ........ ........ @alf1 +fcmpeqs 1----- ------- -0- 00000001 11000000 . 0101100 ........ ........ ........ @alf1 +fcmplts 1----- ------- -0- 00000001 11000001 . 0101100 ........ ........ ........ @alf1 +fcmples 1----- ------- -0- 00000001 11000010 . 0101100 ........ ........ ........ @alf1 +fcmpuods 1----- ------- -0- 00000001 11000011 . 0101100 ........ ........ ........ @alf1 +fcmpneqs 1----- ------- -0- 00000001 11000100 . 0101100 ........ ........ ........ @alf1 +fcmpnlts 1----- ------- -0- 00000001 11000101 . 0101100 ........ ........ ........ @alf1 +fcmpnles 1----- ------- -0- 00000001 11000110 . 0101100 ........ ........ ........ @alf1 +fcmpods 1----- ------- -0- 00000001 11000111 . 0101100 ........ ........ ........ @alf1 +fcmpeqd 1----- ------- -0- 00000001 11000000 . 0101101 ........ ........ ........ @alf1 +fcmpltd 1----- ------- -0- 00000001 11000001 . 0101101 ........ ........ ........ @alf1 +fcmpled 1----- ------- -0- 00000001 11000010 . 0101101 ........ ........ ........ @alf1 +fcmpuodd 1----- ------- -0- 00000001 11000011 . 0101101 ........ ........ ........ @alf1 +fcmpneqd 1----- ------- -0- 00000001 11000100 . 0101101 ........ ........ ........ @alf1 +fcmpnltd 1----- ------- -0- 00000001 11000101 . 0101101 ........ ........ ........ @alf1 +fcmpnled 1----- ------- -0- 00000001 11000110 . 0101101 ........ ........ ........ @alf1 +fcmpodd 1----- ------- -0- 00000001 11000111 . 0101101 ........ ........ ........ @alf1 +fcmpudsf 1----- ------- -0- 00000001 11000011 . 0101110 ........ ........ ........ @alf1 +fcmpodsf 1----- ------- -0- 00000001 11000111 . 0101110 ........ ........ ........ @alf1 +fcmpuddf 1----- ------- -0- 00000001 11000011 . 0101111 ........ ........ ........ @alf1 +fcmpoddf 1----- ------- -0- 00000001 11000111 . 0101111 ........ ........ ........ @alf1 +pfadds 1----- ------- --- 00000001 11000000 . 0110000 ........ ........ ........ @alf1 +pfaddd 1----- ------- --- 00000001 11000000 . 0110001 ........ ........ ........ @alf1 +pfsubs 1----- ------- --- 00000001 11000000 . 0110010 ........ ........ ........ @alf1 +pfsubd 1----- ------- --- 00000001 11000000 . 0110011 ........ ........ ........ @alf1 +pfmins 1----- ------- -0- 00000001 11000000 . 0110100 ........ ........ ........ @alf1 +pfmind 1----- ------- -0- 00000001 11000000 . 0110101 ........ ........ ........ @alf1 +pfmaxs 1----- ------- -0- 00000001 11000000 . 0110110 ........ ........ ........ @alf1 +pfmaxd 1----- ------- -0- 00000001 11000000 . 0110111 ........ ........ ........ @alf1 +pfmuls 1----- ------- --- 00000001 11000000 . 0111000 ........ ........ ........ @alf1 +pfmuld 1----- ------- -0- 00000001 11000000 . 0111001 ........ ........ ........ @alf1 +pfcmpeqs 1----- ------- -0- 00000001 11000000 . 0111010 ........ ........ ........ @alf1 +pfcmplts 1----- ------- -0- 00000001 11000001 . 0111010 ........ ........ ........ @alf1 +pfcmples 1----- ------- -0- 00000001 11000010 . 0111010 ........ ........ ........ @alf1 +pfcmpuods 1----- ------- -0- 00000001 11000011 . 0111010 ........ ........ ........ @alf1 +pfcmpneqs 1----- ------- -0- 00000001 11000100 . 0111010 ........ ........ ........ @alf1 +pfcmpnlts 1----- ------- -0- 00000001 11000101 . 0111010 ........ ........ ........ @alf1 +pfcmpnles 1----- ------- -0- 00000001 11000110 . 0111010 ........ ........ ........ @alf1 +pfcmpods 1----- ------- -0- 00000001 11000111 . 0111010 ........ ........ ........ @alf1 +pfcmpeqd 1----- ------- -0- 00000001 11000000 . 0111011 ........ ........ ........ @alf1 +pfcmpltd 1----- ------- -0- 00000001 11000001 . 0111011 ........ ........ ........ @alf1 +pfcmpled 1----- ------- -0- 00000001 11000010 . 0111011 ........ ........ ........ @alf1 +pfcmpuodd 1----- ------- -0- 00000001 11000011 . 0111011 ........ ........ ........ @alf1 +pfcmpneqd 1----- ------- -0- 00000001 11000100 . 0111011 ........ ........ ........ @alf1 +pfcmpnltd 1----- ------- -0- 00000001 11000101 . 0111011 ........ ........ ........ @alf1 +pfcmpnled 1----- ------- -0- 00000001 11000110 . 0111011 ........ ........ ........ @alf1 +pfcmpodd 1----- ------- -0- 00000001 11000111 . 0111011 ........ ........ ........ @alf1 +pandd 1----- ------- -0- 00000001 11000000 . 1001000 ........ ........ ........ @alf1 +pandnd 1----- ------- -0- 00000001 11000000 . 1001001 ........ ........ ........ @alf1 +pord 1----- ------- -0- 00000001 11000000 . 1001010 ........ ........ ........ @alf1 +pxord 1----- ------- -0- 00000001 11000000 . 1001011 ........ ........ ........ @alf1 +psrld 1----- ------- -01 00000001 11000000 . 1001100 ........ ........ ........ @alf1 +pslld 1----- ------- -01 00000001 11000000 . 1001110 ........ ........ ........ @alf1 +fdivs 1----- ------- 110 00000001 11000000 . 1001000 ........ ........ ........ @alf1 +fdivd 1----- ------- 110 00000001 11000000 . 1001001 ........ ........ ........ @alf1 +pfdivs 1----- ------- 110 00000001 11000000 . 1001010 ........ ........ ........ @alf1 +pfdivd 1----- ------- 110 00000001 11000000 . 1001011 ........ ........ ........ @alf1 +fsqrts 1----- ------- 110 00000001 11000000 . 1001100 11000000 ........ ........ @alf2 +fsqrtid 1----- ------- 110 00000001 11000000 . 1001101 11000000 ........ ........ @alf2 +pfsqrts 1----- ------- 110 00000001 11000000 . 1001110 11000000 ........ ........ @alf2 +frcps 1----- ------- 110 00000001 11000000 . 1010000 11000000 ........ ........ @alf2 +fsqrttd 1----- ------- 110 00000001 11000000 . 1010001 ........ ........ ........ @alf1 +pfsqrttd 1----- ------- 110 00000001 11000000 . 1010011 ........ ........ ........ @alf1 +frsqrts 1----- ------- 110 00000001 11000000 . 1010100 11000000 ........ ........ @alf2 +insfw 1----- ------- -0- 00001011 ........ . 1101100 ........ ........ ........ @alf21 +insfd 1----- ------- -0- 00001011 ........ . 1101101 ........ ........ ........ @alf21 +rww 1----- ------- 000 00000001 11000000 . 0111100 11000000 ........ ........ @alf15 +rwd 1----- ------- 000 00000001 11000000 . 0111101 11000000 ........ ........ @alf15 +rrw 1----- ------- 000 00000001 11000000 . 0111110 ........ 11000000 ........ @alf16 +rrd 1----- ------- 000 00000001 11000000 . 0111111 ........ 11000000 ........ @alf16 +#ldfsq 1----- ....... --0 00000001 11000000 . 1000101 ........ ........ ........ @alf1_mas +#ldgsq 1----- ....... --0 00000001 11000000 . 1000110 ........ ........ ........ @alf1_mas +#ldssq 1----- ....... --0 00000001 11000000 . 1000111 ........ ........ ........ @alf1_mas +#aptoap 1----- ------- -0- 00000001 11000000 . 1010000 ........ ........ ........ @alf1 +#getva 1----- ------- -00 00000001 11000000 . 1010010 ........ ........ ........ @alf1 +# tdtomp 1----- ------- -0- 00000001 11000000 . 1010011 ........ ........ ........ @alf1 +# odtoap 1----- ------- -0- 00000001 11000000 . 1010100 ........ ........ ........ @alf1 +# cast 1----- ------- -0- 00000001 11000000 . 1010101 ........ ........ ........ @alf1 +# gettd 1----- ------- -00 00000001 11000000 . 1010110 11000000 ........ ........ @alf2 +getsp 1----- ------- 000 00000001 11000000 . 1011000 11101100 ........ ........ @alf2 +# getsod 1----- ------- -0- 00000001 11000000 . 1011010 11101100 ........ ........ @alf2 +#ldrd 1----- ------- --0 00000001 11000000 . 1011011 ........ ........ ........ @alf1 +#ldcudb 1----- ....... --0 00000001 11000000 . 1100000 ........ ........ ........ @alf1_mas +#ldcudh 1----- ....... --0 00000001 11000000 . 1100001 ........ ........ ........ @alf1_mas +#ldcudw 1----- ....... --0 00000001 11000000 . 1100010 ........ ........ ........ @alf1_mas +#ldcudd 1----- ....... --0 00000001 11000000 . 1100011 ........ ........ ........ @alf1_mas +ldgdb 1----- ....... --0 00000001 11000000 . 1100100 ........ ........ ........ @alf1_mas +ldgdh 1----- ....... --0 00000001 11000000 . 1100101 ........ ........ ........ @alf1_mas +ldgdw 1----- ....... --0 00000001 11000000 . 1100110 ........ ........ ........ @alf1_mas +ldgdd 1----- ....... --0 00000001 11000000 . 1100111 ........ ........ ........ @alf1_mas +#ldapb 1----- ....... --0 00000001 11000000 . 1101000 ........ ........ ........ @alf1_mas +#ldaph 1----- ....... --0 00000001 11000000 . 1101001 ........ ........ ........ @alf1_mas +#ldapw 1----- ....... --0 00000001 11000000 . 1101010 ........ ........ ........ @alf1_mas +#ldapd 1----- ....... --0 00000001 11000000 . 1101011 ........ ........ ........ @alf1_mas +# ldodrb 1----- ....... --0 00000001 11000000 . 1101100 ........ ........ ........ @alf1_mas +# ldodrh 1----- ....... --0 00000001 11000000 . 1101101 ........ ........ ........ @alf1_mas +# ldodrw 1----- ....... --0 00000001 11000000 . 1101110 ........ ........ ........ @alf1_mas +# ldodrd 1----- ....... --0 00000001 11000000 . 1101111 ........ ........ ........ @alf1_mas +# ldodwb 1----- ....... --0 00000001 11000000 . 1110000 ........ ........ ........ @alf1_mas +# ldodwh 1----- ....... --0 00000001 11000000 . 1110001 ........ ........ ........ @alf1_mas +# ldodww 1----- ....... --0 00000001 11000000 . 1110010 ........ ........ ........ @alf1_mas +# ldodwd 1----- ....... --0 00000001 11000000 . 1110011 ........ ........ ........ @alf1_mas +# ldodpb 1----- ....... --0 00000001 11000000 . 1110100 ........ ........ ........ @alf1_mas +# ldodph 1----- ....... --0 00000001 11000000 . 1110101 ........ ........ ........ @alf1_mas +# ldodpw 1----- ....... --0 00000001 11000000 . 1110110 ........ ........ ........ @alf1_mas +# ldodpd 1----- ....... --0 00000001 11000000 . 1110111 ........ ........ ........ @alf1_mas +#ldcudq 1----- ....... --0 00000001 11000000 . 1111000 ........ ........ ........ @alf1_mas +#ldgdq 1----- ....... --0 00000001 11000000 . 1111001 ........ ........ ........ @alf1_mas +#ldapq 1----- ....... --0 00000001 11000000 . 1111010 ........ ........ ........ @alf1_mas +# ldodrq 1----- ....... --0 00000001 11000000 . 1111011 ........ ........ ........ @alf1_mas +# ldodwq 1----- ....... --0 00000001 11000000 . 1111100 ........ ........ ........ @alf1_mas +# ldodpq 1----- ....... --0 00000001 11000000 . 1111101 ........ ........ ........ @alf1_mas +#andw_fb 1----- ------- -00 00000100 11000000 . 0000000 ........ ........ ........ @alf1 +#andnw_fb 1----- ------- -00 00000100 11000000 . 0000010 ........ ........ ........ @alf1 +#orw_fb 1----- ------- -00 00000100 11000000 . 0000100 ........ ........ ........ @alf1 +#ornw_fb 1----- ------- -00 00000100 11000000 . 0000110 ........ ........ ........ @alf1 +#xorw_fb 1----- ------- -00 00000100 11000000 . 0001000 ........ ........ ........ @alf1 +#xornw_fb 1----- ------- -00 00000100 11000000 . 0001010 ........ ........ ........ @alf1 +#addw_fb 1----- ------- -00 00000100 11000000 . 0010000 ........ ........ ........ @alf1 +#subw_fb 1----- ------- -00 00000100 11000000 . 0010010 ........ ........ ........ @alf1 +#sclw_fb 1----- ------- -00 00000100 ........ . 0010100 ........ ........ ........ @alf21 +#scrw_fb 1----- ------- -00 00000100 ........ . 0010110 ........ ........ ........ @alf21 +#shlw_fb 1----- ------- -00 00000100 ........ . 0011000 ........ ........ ........ @alf21 +#shrw_fb 1----- ------- -00 00000100 ........ . 0011010 ........ ........ ........ @alf21 +#sarw_fb 1----- ------- -00 00000100 ........ . 0011100 ........ ........ ........ @alf21 +#umulx_fb 1----- ------- -00 00000100 11000000 . 0100010 ........ ........ ........ @alf1 +#smulx_fb 1----- ------- -00 00000100 11000000 . 0100011 ........ ........ ........ @alf1 +#incw_fb 1----- ------- -00 00000100 ........ . 0110000 ........ ........ ........ @alf21 +#decw_fb 1----- ------- -00 00000100 ........ . 0110010 ........ ........ ........ @alf21 +#andw_fh 1----- ------- -00 00000101 11000000 . 0000000 ........ ........ ........ @alf1 +#andnw_fh 1----- ------- -00 00000101 11000000 . 0000010 ........ ........ ........ @alf1 +#orw_fh 1----- ------- -00 00000101 11000000 . 0000100 ........ ........ ........ @alf1 +#ornw_fh 1----- ------- -00 00000101 11000000 . 0000110 ........ ........ ........ @alf1 +#xorw_fh 1----- ------- -00 00000101 11000000 . 0001000 ........ ........ ........ @alf1 +#xornw_fh 1----- ------- -00 00000101 11000000 . 0001010 ........ ........ ........ @alf1 +#addw_fh 1----- ------- -00 00000101 11000000 . 0010000 ........ ........ ........ @alf1 +#subw_fh 1----- ------- -00 00000101 11000000 . 0010010 ........ ........ ........ @alf1 +#sclw_fh 1----- ------- -00 00000101 ........ . 0010100 ........ ........ ........ @alf21 +#scrw_fh 1----- ------- -00 00000101 ........ . 0010110 ........ ........ ........ @alf21 +#shlw_fh 1----- ------- -00 00000101 ........ . 0011000 ........ ........ ........ @alf21 +#shrw_fh 1----- ------- -00 00000101 ........ . 0011010 ........ ........ ........ @alf21 +#sarw_fh 1----- ------- -00 00000101 ........ . 0011100 ........ ........ ........ @alf21 +#umulx_fh 1----- ------- -00 00000101 11000000 . 0100010 ........ ........ ........ @alf1 +#smulx_fh 1----- ------- -00 00000101 11000000 . 0100011 ........ ........ ........ @alf1 +#incw_fh 1----- ------- -00 00000101 ........ . 0110000 ........ ........ ........ @alf21 +#decw_fh 1----- ------- -00 00000101 ........ . 0110010 ........ ........ ........ @alf21 +#andw_fw 1----- ------- -00 00000110 11000000 . 0000000 ........ ........ ........ @alf1 +#andnw_fw 1----- ------- -00 00000110 11000000 . 0000010 ........ ........ ........ @alf1 +#orw_fw 1----- ------- -00 00000110 11000000 . 0000100 ........ ........ ........ @alf1 +#ornw_fw 1----- ------- -00 00000110 11000000 . 0000110 ........ ........ ........ @alf1 +#xorw_fw 1----- ------- -00 00000110 11000000 . 0001000 ........ ........ ........ @alf1 +#xornw_fw 1----- ------- -00 00000110 11000000 . 0001010 ........ ........ ........ @alf1 +#addw_fw 1----- ------- -00 00000110 11000000 . 0010000 ........ ........ ........ @alf1 +#subw_fw 1----- ------- -00 00000110 11000000 . 0010010 ........ ........ ........ @alf1 +#sclw_fw 1----- ------- -00 00000110 ........ . 0010100 ........ ........ ........ @alf21 +#scrw_fw 1----- ------- -00 00000110 ........ . 0010110 ........ ........ ........ @alf21 +#shlw_fw 1----- ------- -00 00000110 ........ . 0011000 ........ ........ ........ @alf21 +#shrw_fw 1----- ------- -00 00000110 ........ . 0011010 ........ ........ ........ @alf21 +#sarw_fw 1----- ------- -00 00000110 ........ . 0011100 ........ ........ ........ @alf21 +#umulx_fw 1----- ------- -00 00000110 11000000 . 0100010 ........ ........ ........ @alf1 +#smulx_fw 1----- ------- -00 00000110 11000000 . 0100011 ........ ........ ........ @alf1 +#incw_fw 1----- ------- -00 00000110 ........ . 0110000 ........ ........ ........ @alf21 +#decw_fw 1----- ------- -00 00000110 ........ . 0110010 ........ ........ ........ @alf21 +and_andw 1----- ------- -01 00001000 ........ . 0000000 ........ ........ ........ @alf21 +and_andd 1----- ------- -01 00001000 ........ . 0000001 ........ ........ ........ @alf21 +andn_andw 1----- ------- -01 00001000 ........ . 0000010 ........ ........ ........ @alf21 +andn_andd 1----- ------- -01 00001000 ........ . 0000011 ........ ........ ........ @alf21 +or_andw 1----- ------- -01 00001000 ........ . 0000100 ........ ........ ........ @alf21 +or_andd 1----- ------- -01 00001000 ........ . 0000101 ........ ........ ........ @alf21 +orn_andw 1----- ------- -01 00001000 ........ . 0000110 ........ ........ ........ @alf21 +orn_andd 1----- ------- -01 00001000 ........ . 0000111 ........ ........ ........ @alf21 +xor_andw 1----- ------- -01 00001000 ........ . 0001000 ........ ........ ........ @alf21 +xor_andd 1----- ------- -01 00001000 ........ . 0001001 ........ ........ ........ @alf21 +xorn_andw 1----- ------- -01 00001000 ........ . 0001010 ........ ........ ........ @alf21 +xorn_andd 1----- ------- -01 00001000 ........ . 0001011 ........ ........ ........ @alf21 +merge_andw 1----- ------- -01 00001000 ........ . 0001110 ........ ........ ........ @alf21 +merge_andd 1----- ------- -01 00001000 ........ . 0001111 ........ ........ ........ @alf21 +add_andw 1----- ------- -01 00001000 ........ . 0010000 ........ ........ ........ @alf21 +add_andd 1----- ------- -01 00001000 ........ . 0010001 ........ ........ ........ @alf21 +sub_andw 1----- ------- -01 00001000 ........ . 0010010 ........ ........ ........ @alf21 +sub_andd 1----- ------- -01 00001000 ........ . 0010011 ........ ........ ........ @alf21 +scl_andw 1----- ------- -01 00001000 ........ . 0010100 ........ ........ ........ @alf21 +scl_andd 1----- ------- -01 00001000 ........ . 0010101 ........ ........ ........ @alf21 +scr_andw 1----- ------- -01 00001000 ........ . 0010110 ........ ........ ........ @alf21 +scr_andd 1----- ------- -01 00001000 ........ . 0010111 ........ ........ ........ @alf21 +shl_andw 1----- ------- -01 00001000 ........ . 0011000 ........ ........ ........ @alf21 +shl_andd 1----- ------- -01 00001000 ........ . 0011001 ........ ........ ........ @alf21 +shr_andw 1----- ------- -01 00001000 ........ . 0011010 ........ ........ ........ @alf21 +shr_andd 1----- ------- -01 00001000 ........ . 0011011 ........ ........ ........ @alf21 +sar_andw 1----- ------- -01 00001000 ........ . 0011100 ........ ........ ........ @alf21 +sar_andd 1----- ------- -01 00001000 ........ . 0011101 ........ ........ ........ @alf21 +getf_andw 1----- ------- -01 00001000 ........ . 0011110 ........ ........ ........ @alf21 +getf_andd 1----- ------- -01 00001000 ........ . 0011111 ........ ........ ........ @alf21 +and_andnw 1----- ------- -01 00001000 ........ . 0100000 ........ ........ ........ @alf21 +and_andnd 1----- ------- -01 00001000 ........ . 0100001 ........ ........ ........ @alf21 +andn_andnw 1----- ------- -01 00001000 ........ . 0100010 ........ ........ ........ @alf21 +andn_andnd 1----- ------- -01 00001000 ........ . 0100011 ........ ........ ........ @alf21 +or_andnw 1----- ------- -01 00001000 ........ . 0100100 ........ ........ ........ @alf21 +or_andnd 1----- ------- -01 00001000 ........ . 0100101 ........ ........ ........ @alf21 +orn_andnw 1----- ------- -01 00001000 ........ . 0100110 ........ ........ ........ @alf21 +orn_andnd 1----- ------- -01 00001000 ........ . 0100111 ........ ........ ........ @alf21 +xor_andnw 1----- ------- -01 00001000 ........ . 0101000 ........ ........ ........ @alf21 +xor_andnd 1----- ------- -01 00001000 ........ . 0101001 ........ ........ ........ @alf21 +xorn_andnw 1----- ------- -01 00001000 ........ . 0101010 ........ ........ ........ @alf21 +xorn_andnd 1----- ------- -01 00001000 ........ . 0101011 ........ ........ ........ @alf21 +merge_andnw 1----- ------- -01 00001000 ........ . 0101110 ........ ........ ........ @alf21 +merge_andnd 1----- ------- -01 00001000 ........ . 0101111 ........ ........ ........ @alf21 +add_andnw 1----- ------- -01 00001000 ........ . 0110000 ........ ........ ........ @alf21 +add_andnd 1----- ------- -01 00001000 ........ . 0110001 ........ ........ ........ @alf21 +sub_andnw 1----- ------- -01 00001000 ........ . 0110010 ........ ........ ........ @alf21 +sub_andnd 1----- ------- -01 00001000 ........ . 0110011 ........ ........ ........ @alf21 +scl_andnw 1----- ------- -01 00001000 ........ . 0110100 ........ ........ ........ @alf21 +scl_andnd 1----- ------- -01 00001000 ........ . 0110101 ........ ........ ........ @alf21 +scr_andnw 1----- ------- -01 00001000 ........ . 0110110 ........ ........ ........ @alf21 +scr_andnd 1----- ------- -01 00001000 ........ . 0110111 ........ ........ ........ @alf21 +shl_andnw 1----- ------- -01 00001000 ........ . 0111000 ........ ........ ........ @alf21 +shl_andnd 1----- ------- -01 00001000 ........ . 0111001 ........ ........ ........ @alf21 +shr_andnw 1----- ------- -01 00001000 ........ . 0111010 ........ ........ ........ @alf21 +shr_andnd 1----- ------- -01 00001000 ........ . 0111011 ........ ........ ........ @alf21 +sar_andnw 1----- ------- -01 00001000 ........ . 0111100 ........ ........ ........ @alf21 +sar_andnd 1----- ------- -01 00001000 ........ . 0111101 ........ ........ ........ @alf21 +getf_andnw 1----- ------- -01 00001000 ........ . 0111110 ........ ........ ........ @alf21 +getf_andnd 1----- ------- -01 00001000 ........ . 0111111 ........ ........ ........ @alf21 +and_orw 1----- ------- -01 00001000 ........ . 1000000 ........ ........ ........ @alf21 +and_ord 1----- ------- -01 00001000 ........ . 1000001 ........ ........ ........ @alf21 +andn_orw 1----- ------- -01 00001000 ........ . 1000010 ........ ........ ........ @alf21 +andn_ord 1----- ------- -01 00001000 ........ . 1000011 ........ ........ ........ @alf21 +or_orw 1----- ------- -01 00001000 ........ . 1000100 ........ ........ ........ @alf21 +or_ord 1----- ------- -01 00001000 ........ . 1000101 ........ ........ ........ @alf21 +orn_orw 1----- ------- -01 00001000 ........ . 1000110 ........ ........ ........ @alf21 +orn_ord 1----- ------- -01 00001000 ........ . 1000111 ........ ........ ........ @alf21 +xor_orw 1----- ------- -01 00001000 ........ . 1001000 ........ ........ ........ @alf21 +xor_ord 1----- ------- -01 00001000 ........ . 1001001 ........ ........ ........ @alf21 +xorn_orw 1----- ------- -01 00001000 ........ . 1001010 ........ ........ ........ @alf21 +xorn_ord 1----- ------- -01 00001000 ........ . 1001011 ........ ........ ........ @alf21 +merge_orw 1----- ------- -01 00001000 ........ . 1001110 ........ ........ ........ @alf21 +merge_ord 1----- ------- -01 00001000 ........ . 1001111 ........ ........ ........ @alf21 +add_orw 1----- ------- -01 00001000 ........ . 1010000 ........ ........ ........ @alf21 +add_ord 1----- ------- -01 00001000 ........ . 1010001 ........ ........ ........ @alf21 +sub_orw 1----- ------- -01 00001000 ........ . 1010010 ........ ........ ........ @alf21 +sub_ord 1----- ------- -01 00001000 ........ . 1010011 ........ ........ ........ @alf21 +scl_orw 1----- ------- -01 00001000 ........ . 1010100 ........ ........ ........ @alf21 +scl_ord 1----- ------- -01 00001000 ........ . 1010101 ........ ........ ........ @alf21 +scr_orw 1----- ------- -01 00001000 ........ . 1010110 ........ ........ ........ @alf21 +scr_ord 1----- ------- -01 00001000 ........ . 1010111 ........ ........ ........ @alf21 +shl_orw 1----- ------- -01 00001000 ........ . 1011000 ........ ........ ........ @alf21 +shl_ord 1----- ------- -01 00001000 ........ . 1011001 ........ ........ ........ @alf21 +shr_orw 1----- ------- -01 00001000 ........ . 1011010 ........ ........ ........ @alf21 +shr_ord 1----- ------- -01 00001000 ........ . 1011011 ........ ........ ........ @alf21 +sar_orw 1----- ------- -01 00001000 ........ . 1011100 ........ ........ ........ @alf21 +sar_ord 1----- ------- -01 00001000 ........ . 1011101 ........ ........ ........ @alf21 +getf_orw 1----- ------- -01 00001000 ........ . 1011110 ........ ........ ........ @alf21 +getf_ord 1----- ------- -01 00001000 ........ . 1011111 ........ ........ ........ @alf21 +and_ornw 1----- ------- -01 00001000 ........ . 1100000 ........ ........ ........ @alf21 +and_ornd 1----- ------- -01 00001000 ........ . 1100001 ........ ........ ........ @alf21 +andn_ornw 1----- ------- -01 00001000 ........ . 1100010 ........ ........ ........ @alf21 +andn_ornd 1----- ------- -01 00001000 ........ . 1100011 ........ ........ ........ @alf21 +or_ornw 1----- ------- -01 00001000 ........ . 1100100 ........ ........ ........ @alf21 +or_ornd 1----- ------- -01 00001000 ........ . 1100101 ........ ........ ........ @alf21 +orn_ornw 1----- ------- -01 00001000 ........ . 1100110 ........ ........ ........ @alf21 +orn_ornd 1----- ------- -01 00001000 ........ . 1100111 ........ ........ ........ @alf21 +xor_ornw 1----- ------- -01 00001000 ........ . 1101000 ........ ........ ........ @alf21 +xor_ornd 1----- ------- -01 00001000 ........ . 1101001 ........ ........ ........ @alf21 +xorn_ornw 1----- ------- -01 00001000 ........ . 1101010 ........ ........ ........ @alf21 +xorn_ornd 1----- ------- -01 00001000 ........ . 1101011 ........ ........ ........ @alf21 +merge_ornw 1----- ------- -01 00001000 ........ . 1101110 ........ ........ ........ @alf21 +merge_ornd 1----- ------- -01 00001000 ........ . 1101111 ........ ........ ........ @alf21 +add_ornw 1----- ------- -01 00001000 ........ . 1110000 ........ ........ ........ @alf21 +add_ornd 1----- ------- -01 00001000 ........ . 1110001 ........ ........ ........ @alf21 +sub_ornw 1----- ------- -01 00001000 ........ . 1110010 ........ ........ ........ @alf21 +sub_ornd 1----- ------- -01 00001000 ........ . 1110011 ........ ........ ........ @alf21 +scl_ornw 1----- ------- -01 00001000 ........ . 1110100 ........ ........ ........ @alf21 +scl_ornd 1----- ------- -01 00001000 ........ . 1110101 ........ ........ ........ @alf21 +scr_ornw 1----- ------- -01 00001000 ........ . 1110110 ........ ........ ........ @alf21 +scr_ornd 1----- ------- -01 00001000 ........ . 1110111 ........ ........ ........ @alf21 +shl_ornw 1----- ------- -01 00001000 ........ . 1111000 ........ ........ ........ @alf21 +shl_ornd 1----- ------- -01 00001000 ........ . 1111001 ........ ........ ........ @alf21 +shr_ornw 1----- ------- -01 00001000 ........ . 1111010 ........ ........ ........ @alf21 +shr_ornd 1----- ------- -01 00001000 ........ . 1111011 ........ ........ ........ @alf21 +sar_ornw 1----- ------- -01 00001000 ........ . 1111100 ........ ........ ........ @alf21 +sar_ornd 1----- ------- -01 00001000 ........ . 1111101 ........ ........ ........ @alf21 +getf_ornw 1----- ------- -01 00001000 ........ . 1111110 ........ ........ ........ @alf21 +getf_ornd 1----- ------- -01 00001000 ........ . 1111111 ........ ........ ........ @alf21 +and_xorw 1----- ------- -01 00001001 ........ . 0000000 ........ ........ ........ @alf21 +and_xord 1----- ------- -01 00001001 ........ . 0000001 ........ ........ ........ @alf21 +andn_xorw 1----- ------- -01 00001001 ........ . 0000010 ........ ........ ........ @alf21 +andn_xord 1----- ------- -01 00001001 ........ . 0000011 ........ ........ ........ @alf21 +or_xorw 1----- ------- -01 00001001 ........ . 0000100 ........ ........ ........ @alf21 +or_xord 1----- ------- -01 00001001 ........ . 0000101 ........ ........ ........ @alf21 +orn_xorw 1----- ------- -01 00001001 ........ . 0000110 ........ ........ ........ @alf21 +orn_xord 1----- ------- -01 00001001 ........ . 0000111 ........ ........ ........ @alf21 +xor_xorw 1----- ------- -01 00001001 ........ . 0001000 ........ ........ ........ @alf21 +xor_xord 1----- ------- -01 00001001 ........ . 0001001 ........ ........ ........ @alf21 +xorn_xorw 1----- ------- -01 00001001 ........ . 0001010 ........ ........ ........ @alf21 +xorn_xord 1----- ------- -01 00001001 ........ . 0001011 ........ ........ ........ @alf21 +merge_xorw 1----- ------- -01 00001001 ........ . 0001110 ........ ........ ........ @alf21 +merge_xord 1----- ------- -01 00001001 ........ . 0001111 ........ ........ ........ @alf21 +add_xorw 1----- ------- -01 00001001 ........ . 0010000 ........ ........ ........ @alf21 +add_xord 1----- ------- -01 00001001 ........ . 0010001 ........ ........ ........ @alf21 +sub_xorw 1----- ------- -01 00001001 ........ . 0010010 ........ ........ ........ @alf21 +sub_xord 1----- ------- -01 00001001 ........ . 0010011 ........ ........ ........ @alf21 +scl_xorw 1----- ------- -01 00001001 ........ . 0010100 ........ ........ ........ @alf21 +scl_xord 1----- ------- -01 00001001 ........ . 0010101 ........ ........ ........ @alf21 +scr_xorw 1----- ------- -01 00001001 ........ . 0010110 ........ ........ ........ @alf21 +scr_xord 1----- ------- -01 00001001 ........ . 0010111 ........ ........ ........ @alf21 +shl_xorw 1----- ------- -01 00001001 ........ . 0011000 ........ ........ ........ @alf21 +shl_xord 1----- ------- -01 00001001 ........ . 0011001 ........ ........ ........ @alf21 +shr_xorw 1----- ------- -01 00001001 ........ . 0011010 ........ ........ ........ @alf21 +shr_xord 1----- ------- -01 00001001 ........ . 0011011 ........ ........ ........ @alf21 +sar_xorw 1----- ------- -01 00001001 ........ . 0011100 ........ ........ ........ @alf21 +sar_xord 1----- ------- -01 00001001 ........ . 0011101 ........ ........ ........ @alf21 +getf_xorw 1----- ------- -01 00001001 ........ . 0011110 ........ ........ ........ @alf21 +getf_xord 1----- ------- -01 00001001 ........ . 0011111 ........ ........ ........ @alf21 +and_xornw 1----- ------- -01 00001001 ........ . 0100000 ........ ........ ........ @alf21 +and_xornd 1----- ------- -01 00001001 ........ . 0100001 ........ ........ ........ @alf21 +andn_xornw 1----- ------- -01 00001001 ........ . 0100010 ........ ........ ........ @alf21 +andn_xornd 1----- ------- -01 00001001 ........ . 0100011 ........ ........ ........ @alf21 +or_xornw 1----- ------- -01 00001001 ........ . 0100100 ........ ........ ........ @alf21 +or_xornd 1----- ------- -01 00001001 ........ . 0100101 ........ ........ ........ @alf21 +orn_xornw 1----- ------- -01 00001001 ........ . 0100110 ........ ........ ........ @alf21 +orn_xornd 1----- ------- -01 00001001 ........ . 0100111 ........ ........ ........ @alf21 +xor_xornw 1----- ------- -01 00001001 ........ . 0101000 ........ ........ ........ @alf21 +xor_xornd 1----- ------- -01 00001001 ........ . 0101001 ........ ........ ........ @alf21 +xorn_xornw 1----- ------- -01 00001001 ........ . 0101010 ........ ........ ........ @alf21 +xorn_xornd 1----- ------- -01 00001001 ........ . 0101011 ........ ........ ........ @alf21 +merge_xornw 1----- ------- -01 00001001 ........ . 0101110 ........ ........ ........ @alf21 +merge_xornd 1----- ------- -01 00001001 ........ . 0101111 ........ ........ ........ @alf21 +add_xornw 1----- ------- -01 00001001 ........ . 0110000 ........ ........ ........ @alf21 +add_xornd 1----- ------- -01 00001001 ........ . 0110001 ........ ........ ........ @alf21 +sub_xornw 1----- ------- -01 00001001 ........ . 0110010 ........ ........ ........ @alf21 +sub_xornd 1----- ------- -01 00001001 ........ . 0110011 ........ ........ ........ @alf21 +scl_xornw 1----- ------- -01 00001001 ........ . 0110100 ........ ........ ........ @alf21 +scl_xornd 1----- ------- -01 00001001 ........ . 0110101 ........ ........ ........ @alf21 +scr_xornw 1----- ------- -01 00001001 ........ . 0110110 ........ ........ ........ @alf21 +scr_xornd 1----- ------- -01 00001001 ........ . 0110111 ........ ........ ........ @alf21 +shl_xornw 1----- ------- -01 00001001 ........ . 0111000 ........ ........ ........ @alf21 +shl_xornd 1----- ------- -01 00001001 ........ . 0111001 ........ ........ ........ @alf21 +shr_xornw 1----- ------- -01 00001001 ........ . 0111010 ........ ........ ........ @alf21 +shr_xornd 1----- ------- -01 00001001 ........ . 0111011 ........ ........ ........ @alf21 +sar_xornw 1----- ------- -01 00001001 ........ . 0111100 ........ ........ ........ @alf21 +sar_xornd 1----- ------- -01 00001001 ........ . 0111101 ........ ........ ........ @alf21 +getf_xornw 1----- ------- -01 00001001 ........ . 0111110 ........ ........ ........ @alf21 +getf_xornd 1----- ------- -01 00001001 ........ . 0111111 ........ ........ ........ @alf21 +and_rsubw 1----- ------- -01 00001001 ........ . 1000000 ........ ........ ........ @alf21 +and_rsubd 1----- ------- -01 00001001 ........ . 1000001 ........ ........ ........ @alf21 +andn_rsubw 1----- ------- -01 00001001 ........ . 1000010 ........ ........ ........ @alf21 +andn_rsubd 1----- ------- -01 00001001 ........ . 1000011 ........ ........ ........ @alf21 +or_rsubw 1----- ------- -01 00001001 ........ . 1000100 ........ ........ ........ @alf21 +or_rsubd 1----- ------- -01 00001001 ........ . 1000101 ........ ........ ........ @alf21 +orn_rsubw 1----- ------- -01 00001001 ........ . 1000110 ........ ........ ........ @alf21 +orn_rsubd 1----- ------- -01 00001001 ........ . 1000111 ........ ........ ........ @alf21 +xor_rsubw 1----- ------- -01 00001001 ........ . 1001000 ........ ........ ........ @alf21 +xor_rsubd 1----- ------- -01 00001001 ........ . 1001001 ........ ........ ........ @alf21 +xorn_rsubw 1----- ------- -01 00001001 ........ . 1001010 ........ ........ ........ @alf21 +xorn_rsubd 1----- ------- -01 00001001 ........ . 1001011 ........ ........ ........ @alf21 +merge_rsubw 1----- ------- -01 00001001 ........ . 1001110 ........ ........ ........ @alf21 +merge_rsubd 1----- ------- -01 00001001 ........ . 1001111 ........ ........ ........ @alf21 +add_rsubw 1----- ------- -01 00001001 ........ . 1010000 ........ ........ ........ @alf21 +add_rsubd 1----- ------- -01 00001001 ........ . 1010001 ........ ........ ........ @alf21 +sub_rsubw 1----- ------- -01 00001001 ........ . 1010010 ........ ........ ........ @alf21 +sub_rsubd 1----- ------- -01 00001001 ........ . 1010011 ........ ........ ........ @alf21 +scl_rsubw 1----- ------- -01 00001001 ........ . 1010100 ........ ........ ........ @alf21 +scl_rsubd 1----- ------- -01 00001001 ........ . 1010101 ........ ........ ........ @alf21 +scr_rsubw 1----- ------- -01 00001001 ........ . 1010110 ........ ........ ........ @alf21 +scr_rsubd 1----- ------- -01 00001001 ........ . 1010111 ........ ........ ........ @alf21 +shl_rsubw 1----- ------- -01 00001001 ........ . 1011000 ........ ........ ........ @alf21 +shl_rsubd 1----- ------- -01 00001001 ........ . 1011001 ........ ........ ........ @alf21 +shr_rsubw 1----- ------- -01 00001001 ........ . 1011010 ........ ........ ........ @alf21 +shr_rsubd 1----- ------- -01 00001001 ........ . 1011011 ........ ........ ........ @alf21 +sar_rsubw 1----- ------- -01 00001001 ........ . 1011100 ........ ........ ........ @alf21 +sar_rsubd 1----- ------- -01 00001001 ........ . 1011101 ........ ........ ........ @alf21 +getf_rsubw 1----- ------- -01 00001001 ........ . 1011110 ........ ........ ........ @alf21 +getf_rsubd 1----- ------- -01 00001001 ........ . 1011111 ........ ........ ........ @alf21 +and_mergew 1----- ------- -01 00001001 ........ . 1100000 ........ ........ ........ @alf21 +and_merged 1----- ------- -01 00001001 ........ . 1100001 ........ ........ ........ @alf21 +andn_mergew 1----- ------- -01 00001001 ........ . 1100010 ........ ........ ........ @alf21 +andn_merged 1----- ------- -01 00001001 ........ . 1100011 ........ ........ ........ @alf21 +or_mergew 1----- ------- -01 00001001 ........ . 1100100 ........ ........ ........ @alf21 +or_merged 1----- ------- -01 00001001 ........ . 1100101 ........ ........ ........ @alf21 +orn_mergew 1----- ------- -01 00001001 ........ . 1100110 ........ ........ ........ @alf21 +orn_merged 1----- ------- -01 00001001 ........ . 1100111 ........ ........ ........ @alf21 +xor_mergew 1----- ------- -01 00001001 ........ . 1101000 ........ ........ ........ @alf21 +xor_merged 1----- ------- -01 00001001 ........ . 1101001 ........ ........ ........ @alf21 +xorn_mergew 1----- ------- -01 00001001 ........ . 1101010 ........ ........ ........ @alf21 +xorn_merged 1----- ------- -01 00001001 ........ . 1101011 ........ ........ ........ @alf21 +merge_mergew 1----- ------- -01 00001001 ........ . 1101110 ........ ........ ........ @alf21 +merge_merged 1----- ------- -01 00001001 ........ . 1101111 ........ ........ ........ @alf21 +add_mergew 1----- ------- -01 00001001 ........ . 1110000 ........ ........ ........ @alf21 +add_merged 1----- ------- -01 00001001 ........ . 1110001 ........ ........ ........ @alf21 +sub_mergew 1----- ------- -01 00001001 ........ . 1110010 ........ ........ ........ @alf21 +sub_merged 1----- ------- -01 00001001 ........ . 1110011 ........ ........ ........ @alf21 +scl_mergew 1----- ------- -01 00001001 ........ . 1110100 ........ ........ ........ @alf21 +scl_merged 1----- ------- -01 00001001 ........ . 1110101 ........ ........ ........ @alf21 +scr_mergew 1----- ------- -01 00001001 ........ . 1110110 ........ ........ ........ @alf21 +scr_merged 1----- ------- -01 00001001 ........ . 1110111 ........ ........ ........ @alf21 +shl_mergew 1----- ------- -01 00001001 ........ . 1111000 ........ ........ ........ @alf21 +shl_merged 1----- ------- -01 00001001 ........ . 1111001 ........ ........ ........ @alf21 +shr_mergew 1----- ------- -01 00001001 ........ . 1111010 ........ ........ ........ @alf21 +shr_merged 1----- ------- -01 00001001 ........ . 1111011 ........ ........ ........ @alf21 +sar_mergew 1----- ------- -01 00001001 ........ . 1111100 ........ ........ ........ @alf21 +sar_merged 1----- ------- -01 00001001 ........ . 1111101 ........ ........ ........ @alf21 +getf_mergew 1----- ------- -01 00001001 ........ . 1111110 ........ ........ ........ @alf21 +getf_merged 1----- ------- -01 00001001 ........ . 1111111 ........ ........ ........ @alf21 +and_addw 1----- ------- -01 00001010 ........ . 0000000 ........ ........ ........ @alf21 +and_addd 1----- ------- -01 00001010 ........ . 0000001 ........ ........ ........ @alf21 +andn_addw 1----- ------- -01 00001010 ........ . 0000010 ........ ........ ........ @alf21 +andn_addd 1----- ------- -01 00001010 ........ . 0000011 ........ ........ ........ @alf21 +or_addw 1----- ------- -01 00001010 ........ . 0000100 ........ ........ ........ @alf21 +or_addd 1----- ------- -01 00001010 ........ . 0000101 ........ ........ ........ @alf21 +orn_addw 1----- ------- -01 00001010 ........ . 0000110 ........ ........ ........ @alf21 +orn_addd 1----- ------- -01 00001010 ........ . 0000111 ........ ........ ........ @alf21 +xor_addw 1----- ------- -01 00001010 ........ . 0001000 ........ ........ ........ @alf21 +xor_addd 1----- ------- -01 00001010 ........ . 0001001 ........ ........ ........ @alf21 +xorn_addw 1----- ------- -01 00001010 ........ . 0001010 ........ ........ ........ @alf21 +xorn_addd 1----- ------- -01 00001010 ........ . 0001011 ........ ........ ........ @alf21 +merge_addw 1----- ------- -01 00001010 ........ . 0001110 ........ ........ ........ @alf21 +merge_addd 1----- ------- -01 00001010 ........ . 0001111 ........ ........ ........ @alf21 +add_addw 1----- ------- -01 00001010 ........ . 0010000 ........ ........ ........ @alf21 +add_addd 1----- ------- -01 00001010 ........ . 0010001 ........ ........ ........ @alf21 +sub_addw 1----- ------- -01 00001010 ........ . 0010010 ........ ........ ........ @alf21 +sub_addd 1----- ------- -01 00001010 ........ . 0010011 ........ ........ ........ @alf21 +scl_addw 1----- ------- -01 00001010 ........ . 0010100 ........ ........ ........ @alf21 +scl_addd 1----- ------- -01 00001010 ........ . 0010101 ........ ........ ........ @alf21 +scr_addw 1----- ------- -01 00001010 ........ . 0010110 ........ ........ ........ @alf21 +scr_addd 1----- ------- -01 00001010 ........ . 0010111 ........ ........ ........ @alf21 +shl_addw 1----- ------- -01 00001010 ........ . 0011000 ........ ........ ........ @alf21 +shl_addd 1----- ------- -01 00001010 ........ . 0011001 ........ ........ ........ @alf21 +shr_addw 1----- ------- -01 00001010 ........ . 0011010 ........ ........ ........ @alf21 +shr_addd 1----- ------- -01 00001010 ........ . 0011011 ........ ........ ........ @alf21 +sar_addw 1----- ------- -01 00001010 ........ . 0011100 ........ ........ ........ @alf21 +sar_addd 1----- ------- -01 00001010 ........ . 0011101 ........ ........ ........ @alf21 +getf_addw 1----- ------- -01 00001010 ........ . 0011110 ........ ........ ........ @alf21 +getf_addd 1----- ------- -01 00001010 ........ . 0011111 ........ ........ ........ @alf21 +and_subw 1----- ------- -01 00001010 ........ . 0100000 ........ ........ ........ @alf21 +and_subd 1----- ------- -01 00001010 ........ . 0100001 ........ ........ ........ @alf21 +andn_subw 1----- ------- -01 00001010 ........ . 0100010 ........ ........ ........ @alf21 +andn_subd 1----- ------- -01 00001010 ........ . 0100011 ........ ........ ........ @alf21 +or_subw 1----- ------- -01 00001010 ........ . 0100100 ........ ........ ........ @alf21 +or_subd 1----- ------- -01 00001010 ........ . 0100101 ........ ........ ........ @alf21 +orn_subw 1----- ------- -01 00001010 ........ . 0100110 ........ ........ ........ @alf21 +orn_subd 1----- ------- -01 00001010 ........ . 0100111 ........ ........ ........ @alf21 +xor_subw 1----- ------- -01 00001010 ........ . 0101000 ........ ........ ........ @alf21 +xor_subd 1----- ------- -01 00001010 ........ . 0101001 ........ ........ ........ @alf21 +xorn_subw 1----- ------- -01 00001010 ........ . 0101010 ........ ........ ........ @alf21 +xorn_subd 1----- ------- -01 00001010 ........ . 0101011 ........ ........ ........ @alf21 +merge_subw 1----- ------- -01 00001010 ........ . 0101110 ........ ........ ........ @alf21 +merge_subd 1----- ------- -01 00001010 ........ . 0101111 ........ ........ ........ @alf21 +add_subw 1----- ------- -01 00001010 ........ . 0110000 ........ ........ ........ @alf21 +add_subd 1----- ------- -01 00001010 ........ . 0110001 ........ ........ ........ @alf21 +sub_subw 1----- ------- -01 00001010 ........ . 0110010 ........ ........ ........ @alf21 +sub_subd 1----- ------- -01 00001010 ........ . 0110011 ........ ........ ........ @alf21 +scl_subw 1----- ------- -01 00001010 ........ . 0110100 ........ ........ ........ @alf21 +scl_subd 1----- ------- -01 00001010 ........ . 0110101 ........ ........ ........ @alf21 +scr_subw 1----- ------- -01 00001010 ........ . 0110110 ........ ........ ........ @alf21 +scr_subd 1----- ------- -01 00001010 ........ . 0110111 ........ ........ ........ @alf21 +shl_subw 1----- ------- -01 00001010 ........ . 0111000 ........ ........ ........ @alf21 +shl_subd 1----- ------- -01 00001010 ........ . 0111001 ........ ........ ........ @alf21 +shr_subw 1----- ------- -01 00001010 ........ . 0111010 ........ ........ ........ @alf21 +shr_subd 1----- ------- -01 00001010 ........ . 0111011 ........ ........ ........ @alf21 +sar_subw 1----- ------- -01 00001010 ........ . 0111100 ........ ........ ........ @alf21 +sar_subd 1----- ------- -01 00001010 ........ . 0111101 ........ ........ ........ @alf21 +getf_subw 1----- ------- -01 00001010 ........ . 0111110 ........ ........ ........ @alf21 +getf_subd 1----- ------- -01 00001010 ........ . 0111111 ........ ........ ........ @alf21 +and_sclw 1----- ------- -01 00001010 ........ . 1000000 ........ ........ ........ @alf21 +and_scld 1----- ------- -01 00001010 ........ . 1000001 ........ ........ ........ @alf21 +andn_sclw 1----- ------- -01 00001010 ........ . 1000010 ........ ........ ........ @alf21 +andn_scld 1----- ------- -01 00001010 ........ . 1000011 ........ ........ ........ @alf21 +or_sclw 1----- ------- -01 00001010 ........ . 1000100 ........ ........ ........ @alf21 +or_scld 1----- ------- -01 00001010 ........ . 1000101 ........ ........ ........ @alf21 +orn_sclw 1----- ------- -01 00001010 ........ . 1000110 ........ ........ ........ @alf21 +orn_scld 1----- ------- -01 00001010 ........ . 1000111 ........ ........ ........ @alf21 +xor_sclw 1----- ------- -01 00001010 ........ . 1001000 ........ ........ ........ @alf21 +xor_scld 1----- ------- -01 00001010 ........ . 1001001 ........ ........ ........ @alf21 +xorn_sclw 1----- ------- -01 00001010 ........ . 1001010 ........ ........ ........ @alf21 +xorn_scld 1----- ------- -01 00001010 ........ . 1001011 ........ ........ ........ @alf21 +merge_sclw 1----- ------- -01 00001010 ........ . 1001110 ........ ........ ........ @alf21 +merge_scld 1----- ------- -01 00001010 ........ . 1001111 ........ ........ ........ @alf21 +add_sclw 1----- ------- -01 00001010 ........ . 1010000 ........ ........ ........ @alf21 +add_scld 1----- ------- -01 00001010 ........ . 1010001 ........ ........ ........ @alf21 +sub_sclw 1----- ------- -01 00001010 ........ . 1010010 ........ ........ ........ @alf21 +sub_scld 1----- ------- -01 00001010 ........ . 1010011 ........ ........ ........ @alf21 +scl_sclw 1----- ------- -01 00001010 ........ . 1010100 ........ ........ ........ @alf21 +scl_scld 1----- ------- -01 00001010 ........ . 1010101 ........ ........ ........ @alf21 +scr_sclw 1----- ------- -01 00001010 ........ . 1010110 ........ ........ ........ @alf21 +scr_scld 1----- ------- -01 00001010 ........ . 1010111 ........ ........ ........ @alf21 +shl_sclw 1----- ------- -01 00001010 ........ . 1011000 ........ ........ ........ @alf21 +shl_scld 1----- ------- -01 00001010 ........ . 1011001 ........ ........ ........ @alf21 +shr_sclw 1----- ------- -01 00001010 ........ . 1011010 ........ ........ ........ @alf21 +shr_scld 1----- ------- -01 00001010 ........ . 1011011 ........ ........ ........ @alf21 +sar_sclw 1----- ------- -01 00001010 ........ . 1011100 ........ ........ ........ @alf21 +sar_scld 1----- ------- -01 00001010 ........ . 1011101 ........ ........ ........ @alf21 +getf_sclw 1----- ------- -01 00001010 ........ . 1011110 ........ ........ ........ @alf21 +getf_scld 1----- ------- -01 00001010 ........ . 1011111 ........ ........ ........ @alf21 +and_scrw 1----- ------- -01 00001010 ........ . 1100000 ........ ........ ........ @alf21 +and_scrd 1----- ------- -01 00001010 ........ . 1100001 ........ ........ ........ @alf21 +andn_scrw 1----- ------- -01 00001010 ........ . 1100010 ........ ........ ........ @alf21 +andn_scrd 1----- ------- -01 00001010 ........ . 1100011 ........ ........ ........ @alf21 +or_scrw 1----- ------- -01 00001010 ........ . 1100100 ........ ........ ........ @alf21 +or_scrd 1----- ------- -01 00001010 ........ . 1100101 ........ ........ ........ @alf21 +orn_scrw 1----- ------- -01 00001010 ........ . 1100110 ........ ........ ........ @alf21 +orn_scrd 1----- ------- -01 00001010 ........ . 1100111 ........ ........ ........ @alf21 +xor_scrw 1----- ------- -01 00001010 ........ . 1101000 ........ ........ ........ @alf21 +xor_scrd 1----- ------- -01 00001010 ........ . 1101001 ........ ........ ........ @alf21 +xorn_scrw 1----- ------- -01 00001010 ........ . 1101010 ........ ........ ........ @alf21 +xorn_scrd 1----- ------- -01 00001010 ........ . 1101011 ........ ........ ........ @alf21 +merge_scrw 1----- ------- -01 00001010 ........ . 1101110 ........ ........ ........ @alf21 +merge_scrd 1----- ------- -01 00001010 ........ . 1101111 ........ ........ ........ @alf21 +add_scrw 1----- ------- -01 00001010 ........ . 1110000 ........ ........ ........ @alf21 +add_scrd 1----- ------- -01 00001010 ........ . 1110001 ........ ........ ........ @alf21 +sub_scrw 1----- ------- -01 00001010 ........ . 1110010 ........ ........ ........ @alf21 +sub_scrd 1----- ------- -01 00001010 ........ . 1110011 ........ ........ ........ @alf21 +scl_scrw 1----- ------- -01 00001010 ........ . 1110100 ........ ........ ........ @alf21 +scl_scrd 1----- ------- -01 00001010 ........ . 1110101 ........ ........ ........ @alf21 +scr_scrw 1----- ------- -01 00001010 ........ . 1110110 ........ ........ ........ @alf21 +scr_scrd 1----- ------- -01 00001010 ........ . 1110111 ........ ........ ........ @alf21 +shl_scrw 1----- ------- -01 00001010 ........ . 1111000 ........ ........ ........ @alf21 +shl_scrd 1----- ------- -01 00001010 ........ . 1111001 ........ ........ ........ @alf21 +shr_scrw 1----- ------- -01 00001010 ........ . 1111010 ........ ........ ........ @alf21 +shr_scrd 1----- ------- -01 00001010 ........ . 1111011 ........ ........ ........ @alf21 +sar_scrw 1----- ------- -01 00001010 ........ . 1111100 ........ ........ ........ @alf21 +sar_scrd 1----- ------- -01 00001010 ........ . 1111101 ........ ........ ........ @alf21 +getf_scrw 1----- ------- -01 00001010 ........ . 1111110 ........ ........ ........ @alf21 +getf_scrd 1----- ------- -01 00001010 ........ . 1111111 ........ ........ ........ @alf21 +and_shlw 1----- ------- -01 00001011 ........ . 0000000 ........ ........ ........ @alf21 +and_shld 1----- ------- -01 00001011 ........ . 0000001 ........ ........ ........ @alf21 +andn_shlw 1----- ------- -01 00001011 ........ . 0000010 ........ ........ ........ @alf21 +andn_shld 1----- ------- -01 00001011 ........ . 0000011 ........ ........ ........ @alf21 +or_shlw 1----- ------- -01 00001011 ........ . 0000100 ........ ........ ........ @alf21 +or_shld 1----- ------- -01 00001011 ........ . 0000101 ........ ........ ........ @alf21 +orn_shlw 1----- ------- -01 00001011 ........ . 0000110 ........ ........ ........ @alf21 +orn_shld 1----- ------- -01 00001011 ........ . 0000111 ........ ........ ........ @alf21 +xor_shlw 1----- ------- -01 00001011 ........ . 0001000 ........ ........ ........ @alf21 +xor_shld 1----- ------- -01 00001011 ........ . 0001001 ........ ........ ........ @alf21 +xorn_shlw 1----- ------- -01 00001011 ........ . 0001010 ........ ........ ........ @alf21 +xorn_shld 1----- ------- -01 00001011 ........ . 0001011 ........ ........ ........ @alf21 +merge_shlw 1----- ------- -01 00001011 ........ . 0001110 ........ ........ ........ @alf21 +merge_shld 1----- ------- -01 00001011 ........ . 0001111 ........ ........ ........ @alf21 +add_shlw 1----- ------- -01 00001011 ........ . 0010000 ........ ........ ........ @alf21 +add_shld 1----- ------- -01 00001011 ........ . 0010001 ........ ........ ........ @alf21 +sub_shlw 1----- ------- -01 00001011 ........ . 0010010 ........ ........ ........ @alf21 +sub_shld 1----- ------- -01 00001011 ........ . 0010011 ........ ........ ........ @alf21 +scl_shlw 1----- ------- -01 00001011 ........ . 0010100 ........ ........ ........ @alf21 +scl_shld 1----- ------- -01 00001011 ........ . 0010101 ........ ........ ........ @alf21 +scr_shlw 1----- ------- -01 00001011 ........ . 0010110 ........ ........ ........ @alf21 +scr_shld 1----- ------- -01 00001011 ........ . 0010111 ........ ........ ........ @alf21 +shl_shlw 1----- ------- -01 00001011 ........ . 0011000 ........ ........ ........ @alf21 +shl_shld 1----- ------- -01 00001011 ........ . 0011001 ........ ........ ........ @alf21 +shr_shlw 1----- ------- -01 00001011 ........ . 0011010 ........ ........ ........ @alf21 +shr_shld 1----- ------- -01 00001011 ........ . 0011011 ........ ........ ........ @alf21 +sar_shlw 1----- ------- -01 00001011 ........ . 0011100 ........ ........ ........ @alf21 +sar_shld 1----- ------- -01 00001011 ........ . 0011101 ........ ........ ........ @alf21 +getf_shlw 1----- ------- -01 00001011 ........ . 0011110 ........ ........ ........ @alf21 +getf_shld 1----- ------- -01 00001011 ........ . 0011111 ........ ........ ........ @alf21 +and_shrw 1----- ------- -01 00001011 ........ . 0100000 ........ ........ ........ @alf21 +and_shrd 1----- ------- -01 00001011 ........ . 0100001 ........ ........ ........ @alf21 +andn_shrw 1----- ------- -01 00001011 ........ . 0100010 ........ ........ ........ @alf21 +andn_shrd 1----- ------- -01 00001011 ........ . 0100011 ........ ........ ........ @alf21 +or_shrw 1----- ------- -01 00001011 ........ . 0100100 ........ ........ ........ @alf21 +or_shrd 1----- ------- -01 00001011 ........ . 0100101 ........ ........ ........ @alf21 +orn_shrw 1----- ------- -01 00001011 ........ . 0100110 ........ ........ ........ @alf21 +orn_shrd 1----- ------- -01 00001011 ........ . 0100111 ........ ........ ........ @alf21 +xor_shrw 1----- ------- -01 00001011 ........ . 0101000 ........ ........ ........ @alf21 +xor_shrd 1----- ------- -01 00001011 ........ . 0101001 ........ ........ ........ @alf21 +xorn_shrw 1----- ------- -01 00001011 ........ . 0101010 ........ ........ ........ @alf21 +xorn_shrd 1----- ------- -01 00001011 ........ . 0101011 ........ ........ ........ @alf21 +merge_shrw 1----- ------- -01 00001011 ........ . 0101110 ........ ........ ........ @alf21 +merge_shrd 1----- ------- -01 00001011 ........ . 0101111 ........ ........ ........ @alf21 +add_shrw 1----- ------- -01 00001011 ........ . 0110000 ........ ........ ........ @alf21 +add_shrd 1----- ------- -01 00001011 ........ . 0110001 ........ ........ ........ @alf21 +sub_shrw 1----- ------- -01 00001011 ........ . 0110010 ........ ........ ........ @alf21 +sub_shrd 1----- ------- -01 00001011 ........ . 0110011 ........ ........ ........ @alf21 +scl_shrw 1----- ------- -01 00001011 ........ . 0110100 ........ ........ ........ @alf21 +scl_shrd 1----- ------- -01 00001011 ........ . 0110101 ........ ........ ........ @alf21 +scr_shrw 1----- ------- -01 00001011 ........ . 0110110 ........ ........ ........ @alf21 +scr_shrd 1----- ------- -01 00001011 ........ . 0110111 ........ ........ ........ @alf21 +shl_shrw 1----- ------- -01 00001011 ........ . 0111000 ........ ........ ........ @alf21 +shl_shrd 1----- ------- -01 00001011 ........ . 0111001 ........ ........ ........ @alf21 +shr_shrw 1----- ------- -01 00001011 ........ . 0111010 ........ ........ ........ @alf21 +shr_shrd 1----- ------- -01 00001011 ........ . 0111011 ........ ........ ........ @alf21 +sar_shrw 1----- ------- -01 00001011 ........ . 0111100 ........ ........ ........ @alf21 +sar_shrd 1----- ------- -01 00001011 ........ . 0111101 ........ ........ ........ @alf21 +getf_shrw 1----- ------- -01 00001011 ........ . 0111110 ........ ........ ........ @alf21 +getf_shrd 1----- ------- -01 00001011 ........ . 0111111 ........ ........ ........ @alf21 +and_sarw 1----- ------- -01 00001011 ........ . 1000000 ........ ........ ........ @alf21 +and_sard 1----- ------- -01 00001011 ........ . 1000001 ........ ........ ........ @alf21 +andn_sarw 1----- ------- -01 00001011 ........ . 1000010 ........ ........ ........ @alf21 +andn_sard 1----- ------- -01 00001011 ........ . 1000011 ........ ........ ........ @alf21 +or_sarw 1----- ------- -01 00001011 ........ . 1000100 ........ ........ ........ @alf21 +or_sard 1----- ------- -01 00001011 ........ . 1000101 ........ ........ ........ @alf21 +orn_sarw 1----- ------- -01 00001011 ........ . 1000110 ........ ........ ........ @alf21 +orn_sard 1----- ------- -01 00001011 ........ . 1000111 ........ ........ ........ @alf21 +xor_sarw 1----- ------- -01 00001011 ........ . 1001000 ........ ........ ........ @alf21 +xor_sard 1----- ------- -01 00001011 ........ . 1001001 ........ ........ ........ @alf21 +xorn_sarw 1----- ------- -01 00001011 ........ . 1001010 ........ ........ ........ @alf21 +xorn_sard 1----- ------- -01 00001011 ........ . 1001011 ........ ........ ........ @alf21 +merge_sarw 1----- ------- -01 00001011 ........ . 1001110 ........ ........ ........ @alf21 +merge_sard 1----- ------- -01 00001011 ........ . 1001111 ........ ........ ........ @alf21 +add_sarw 1----- ------- -01 00001011 ........ . 1010000 ........ ........ ........ @alf21 +add_sard 1----- ------- -01 00001011 ........ . 1010001 ........ ........ ........ @alf21 +sub_sarw 1----- ------- -01 00001011 ........ . 1010010 ........ ........ ........ @alf21 +sub_sard 1----- ------- -01 00001011 ........ . 1010011 ........ ........ ........ @alf21 +scl_sarw 1----- ------- -01 00001011 ........ . 1010100 ........ ........ ........ @alf21 +scl_sard 1----- ------- -01 00001011 ........ . 1010101 ........ ........ ........ @alf21 +scr_sarw 1----- ------- -01 00001011 ........ . 1010110 ........ ........ ........ @alf21 +scr_sard 1----- ------- -01 00001011 ........ . 1010111 ........ ........ ........ @alf21 +shl_sarw 1----- ------- -01 00001011 ........ . 1011000 ........ ........ ........ @alf21 +shl_sard 1----- ------- -01 00001011 ........ . 1011001 ........ ........ ........ @alf21 +shr_sarw 1----- ------- -01 00001011 ........ . 1011010 ........ ........ ........ @alf21 +shr_sard 1----- ------- -01 00001011 ........ . 1011011 ........ ........ ........ @alf21 +sar_sarw 1----- ------- -01 00001011 ........ . 1011100 ........ ........ ........ @alf21 +sar_sard 1----- ------- -01 00001011 ........ . 1011101 ........ ........ ........ @alf21 +getf_sarw 1----- ------- -01 00001011 ........ . 1011110 ........ ........ ........ @alf21 +getf_sard 1----- ------- -01 00001011 ........ . 1011111 ........ ........ ........ @alf21 +and_getfw 1----- ------- -01 00001011 ........ . 1100000 ........ ........ ........ @alf21 +and_getfd 1----- ------- -01 00001011 ........ . 1100001 ........ ........ ........ @alf21 +andn_getfw 1----- ------- -01 00001011 ........ . 1100010 ........ ........ ........ @alf21 +andn_getfd 1----- ------- -01 00001011 ........ . 1100011 ........ ........ ........ @alf21 +or_getfw 1----- ------- -01 00001011 ........ . 1100100 ........ ........ ........ @alf21 +or_getfd 1----- ------- -01 00001011 ........ . 1100101 ........ ........ ........ @alf21 +orn_getfw 1----- ------- -01 00001011 ........ . 1100110 ........ ........ ........ @alf21 +orn_getfd 1----- ------- -01 00001011 ........ . 1100111 ........ ........ ........ @alf21 +xor_getfw 1----- ------- -01 00001011 ........ . 1101000 ........ ........ ........ @alf21 +xor_getfd 1----- ------- -01 00001011 ........ . 1101001 ........ ........ ........ @alf21 +xorn_getfw 1----- ------- -01 00001011 ........ . 1101010 ........ ........ ........ @alf21 +xorn_getfd 1----- ------- -01 00001011 ........ . 1101011 ........ ........ ........ @alf21 +merge_getfw 1----- ------- -01 00001011 ........ . 1101110 ........ ........ ........ @alf21 +merge_getfd 1----- ------- -01 00001011 ........ . 1101111 ........ ........ ........ @alf21 +add_getfw 1----- ------- -01 00001011 ........ . 1110000 ........ ........ ........ @alf21 +add_getfd 1----- ------- -01 00001011 ........ . 1110001 ........ ........ ........ @alf21 +sub_getfw 1----- ------- -01 00001011 ........ . 1110010 ........ ........ ........ @alf21 +sub_getfd 1----- ------- -01 00001011 ........ . 1110011 ........ ........ ........ @alf21 +scl_getfw 1----- ------- -01 00001011 ........ . 1110100 ........ ........ ........ @alf21 +scl_getfd 1----- ------- -01 00001011 ........ . 1110101 ........ ........ ........ @alf21 +scr_getfw 1----- ------- -01 00001011 ........ . 1110110 ........ ........ ........ @alf21 +scr_getfd 1----- ------- -01 00001011 ........ . 1110111 ........ ........ ........ @alf21 +shl_getfw 1----- ------- -01 00001011 ........ . 1111000 ........ ........ ........ @alf21 +shl_getfd 1----- ------- -01 00001011 ........ . 1111001 ........ ........ ........ @alf21 +shr_getfw 1----- ------- -01 00001011 ........ . 1111010 ........ ........ ........ @alf21 +shr_getfd 1----- ------- -01 00001011 ........ . 1111011 ........ ........ ........ @alf21 +sar_getfw 1----- ------- -01 00001011 ........ . 1111100 ........ ........ ........ @alf21 +sar_getfd 1----- ------- -01 00001011 ........ . 1111101 ........ ........ ........ @alf21 +getf_getfw 1----- ------- -01 00001011 ........ . 1111110 ........ ........ ........ @alf21 +getf_getfd 1----- ------- -01 00001011 ........ . 1111111 ........ ........ ........ @alf21 +fmul_adds 1----- ------- --- 00001100 ........ . 0001000 ........ ........ ........ @alf21 +fmul_addd 1----- ------- --- 00001100 ........ . 0001001 ........ ........ ........ @alf21 +fmul_subs 1----- ------- --- 00001100 ........ . 0101000 ........ ........ ........ @alf21 +fmul_subd 1----- ------- --- 00001100 ........ . 0101001 ........ ........ ........ @alf21 +fadd_muls 1----- ------- -0- 00001101 ........ . 0000000 ........ ........ ........ @alf21 +fadd_muld 1----- ------- -0- 00001101 ........ . 0000001 ........ ........ ........ @alf21 +fsub_muls 1----- ------- -0- 00001101 ........ . 0000010 ........ ........ ........ @alf21 +fsub_muld 1----- ------- -0- 00001101 ........ . 0000011 ........ ........ ........ @alf21 +fmul_rsubs 1----- ------- --- 00001101 ........ . 0101000 ........ ........ ........ @alf21 +fmul_rsubd 1----- ------- --- 00001101 ........ . 0101001 ........ ........ ........ @alf21 +pfmul_adds 1----- ------- --- 00001110 ........ . 0001000 ........ ........ ........ @alf21 +pfmul_addd 1----- ------- --- 00001110 ........ . 0001001 ........ ........ ........ @alf21 +pfmul_subs 1----- ------- --- 00001110 ........ . 0101000 ........ ........ ........ @alf21 +pfmul_subd 1----- ------- --- 00001110 ........ . 0101001 ........ ........ ........ @alf21 +pfadd_muls 1----- ------- -0- 00001111 ........ . 0000000 ........ ........ ........ @alf21 +pfadd_muld 1----- ------- -0- 00001111 ........ . 0000001 ........ ........ ........ @alf21 +pfsub_muls 1----- ------- -0- 00001111 ........ . 0000010 ........ ........ ........ @alf21 +pfsub_muld 1----- ------- -0- 00001111 ........ . 0000011 ........ ........ ........ @alf21 +pfmul_rsubs 1----- ------- --- 00001111 ........ . 0101000 ........ ........ ........ @alf21 +pfmul_rsubd 1----- ------- --- 00001111 ........ . 0101001 ........ ........ ........ @alf21 + +# elbrus-v2: +bitrevw 0----- ------- -0- -------- -------- . 0100110 11000000 ........ ........ @alf2 +bitrevd 0----- ------- -0- -------- -------- . 0100111 11000000 ........ ........ @alf2 +lzcnts 0----- ------- -01 -------- -------- . 1100100 11000000 ........ ........ @alf2 +lzcntd 0----- ------- -01 -------- -------- . 1100101 11000000 ........ ........ @alf2 +popcnts 0----- ------- -01 -------- -------- . 1100110 11000000 ........ ........ @alf2 +popcntd 0----- ------- -01 -------- -------- . 1100111 11000000 ........ ........ @alf2 +fdtoidtr 0----- ------- -0- -------- -------- . 0111101 11000010 ........ ........ @alf2 +fxtoidtr 0----- ------- -0- -------- -------- . 0111101 11000011 ........ ........ @alf2 +fstoidtr 0----- ------- -0- -------- -------- . 0111110 11000010 ........ ........ @alf2 +fxtoiwtr 0----- ------- -0- -------- -------- . 0111111 11000011 ........ ........ @alf2 +movx 0----- ------- -0- -------- -------- . 1011111 11000000 ........ ........ @alf2 +movxa 0----- ------- -0- -------- -------- . 1011111 11000001 ........ ........ @alf2 +movxc 0----- ------- -0- -------- -------- . 1011111 11000010 ........ ........ @alf2 +pmulubhh 1----- ------- -01 00000001 11000000 . 0011101 ........ ........ ........ @alf1 +pshufb 1----- ------- -0- 00001111 ........ . 1001101 ........ ........ ........ @alf21 +pmerge 1----- ------- -0- 00001111 ........ . 1101101 ........ ........ ........ @alf21 +fadd_adds 1----- ------- --- 00001100 ........ . 0000000 ........ ........ ........ @alf21 +fadd_addd 1----- ------- --- 00001100 ........ . 0000001 ........ ........ ........ @alf21 +fsub_adds 1----- ------- --- 00001100 ........ . 0000010 ........ ........ ........ @alf21 +fsub_addd 1----- ------- --- 00001100 ........ . 0000011 ........ ........ ........ @alf21 +fadd_subs 1----- ------- --- 00001100 ........ . 0100000 ........ ........ ........ @alf21 +fadd_subd 1----- ------- --- 00001100 ........ . 0100001 ........ ........ ........ @alf21 +fsub_subs 1----- ------- --- 00001100 ........ . 0100010 ........ ........ ........ @alf21 +fsub_subd 1----- ------- --- 00001100 ........ . 0100011 ........ ........ ........ @alf21 +fadd_rsubs 1----- ------- --- 00001101 ........ . 0100000 ........ ........ ........ @alf21 +fadd_rsubd 1----- ------- --- 00001101 ........ . 0100001 ........ ........ ........ @alf21 +fsub_rsubs 1----- ------- --- 00001101 ........ . 0100010 ........ ........ ........ @alf21 +fsub_rsubd 1----- ------- --- 00001101 ........ . 0100011 ........ ........ ........ @alf21 +pfadd_adds 1----- ------- --- 00001110 ........ . 0000000 ........ ........ ........ @alf21 +pfadd_addd 1----- ------- --- 00001110 ........ . 0000001 ........ ........ ........ @alf21 +pfsub_adds 1----- ------- --- 00001110 ........ . 0000010 ........ ........ ........ @alf21 +pfsub_addd 1----- ------- --- 00001110 ........ . 0000011 ........ ........ ........ @alf21 +pfadd_subs 1----- ------- --- 00001110 ........ . 0100000 ........ ........ ........ @alf21 +pfadd_subd 1----- ------- --- 00001110 ........ . 0100001 ........ ........ ........ @alf21 +pfsub_subs 1----- ------- --- 00001110 ........ . 0100010 ........ ........ ........ @alf21 +pfsub_subd 1----- ------- --- 00001110 ........ . 0100011 ........ ........ ........ @alf21 +pfadd_rsubs 1----- ------- --- 00001111 ........ . 0100000 ........ ........ ........ @alf21 +pfadd_rsubd 1----- ------- --- 00001111 ........ . 0100001 ........ ........ ........ @alf21 +pfsub_rsubs 1----- ------- --- 00001111 ........ . 0100010 ........ ........ ........ @alf21 +pfsub_rsubd 1----- ------- --- 00001111 ........ . 0100011 ........ ........ ........ @alf21 + +# elbrus-v3: +umulhd 1----- ------- -0- 00000001 11000000 . 1110000 ........ ........ ........ @alf1 +smulhd 1----- ------- -0- 00000001 11000000 . 1110001 ........ ........ ........ @alf1 +pminsb 1----- ------- -00 00000001 11000000 . 0000100 ........ ........ ........ @alf1 +pminuh 1----- ------- -00 00000001 11000000 . 0000101 ........ ........ ........ @alf1 +pmaxsb 1----- ------- -00 00000001 11000000 . 0000110 ........ ........ ........ @alf1 +pmaxuh 1----- ------- -00 00000001 11000000 . 0000111 ........ ........ ........ @alf1 +pcmpeqd 1----- ------- -00 00000001 11000000 . 1001101 ........ ........ ........ @alf1 +pcmpgtd 1----- ------- -00 00000001 11000000 . 1001111 ........ ........ ........ @alf1 +mpsadbh 1----- ------- -01 00000001 11000000 . 1011000 ........ ........ ........ @alf1 +pmaddubsh 1----- ------- -01 00000001 11000000 . 1101000 ........ ........ ........ @alf1 +pmulhrsh 1----- ------- -01 00000001 11000000 . 1101001 ........ ........ ........ @alf1 +phminposuh 1----- ------- -01 00000001 11000000 . 1101010 ........ ........ ........ @alf1 +packuswh 1----- ------- -01 00000001 11000000 . 1101011 ........ ........ ........ @alf1 +fstoifs 1----- ------- -0- 00000001 11000000 . 1101100 ........ ........ ........ @alf1 +fdtoifd 1----- ------- -0- 00000001 11000000 . 1101101 ........ ........ ........ @alf1 +pfstoifs 1----- ------- -0- 00000001 11000000 . 1101110 ........ ........ ........ @alf1 +pfdtoifd 1----- ------- -0- 00000001 11000000 . 1101111 ........ ........ ........ @alf1 +pfhadds 1----- ------- --- 00000001 11000000 . 1110010 ........ ........ ........ @alf1 +pfhsubs 1----- ------- --- 00000001 11000000 . 1110011 ........ ........ ........ @alf1 +pfaddsubs 1----- ------- --- 00000001 11000000 . 1110111 ........ ........ ........ @alf1 +pminuw 1----- ------- -00 00000010 11000000 . 0100000 ........ ........ ........ @alf1 +pminsw 1----- ------- -00 00000010 11000000 . 0100001 ........ ........ ........ @alf1 +pmaxuw 1----- ------- -00 00000010 11000000 . 0100010 ........ ........ ........ @alf1 +pmaxsw 1----- ------- -00 00000010 11000000 . 0100011 ........ ........ ........ @alf1 +phaddh 1----- ------- -00 00000010 11000000 . 0101001 ........ ........ ........ @alf1 +phaddw 1----- ------- -00 00000010 11000000 . 0101010 ........ ........ ........ @alf1 +phaddsh 1----- ------- -00 00000010 11000000 . 0101011 ........ ........ ........ @alf1 +phsubh 1----- ------- -00 00000010 11000000 . 0101101 ........ ........ ........ @alf1 +phsubw 1----- ------- -00 00000010 11000000 . 0101110 ........ ........ ........ @alf1 +phsubsh 1----- ------- -00 00000010 11000000 . 0101111 ........ ........ ........ @alf1 +psignb 1----- ------- -00 00000010 11000000 . 0110000 ........ ........ ........ @alf1 +psignh 1----- ------- -00 00000010 11000000 . 0110001 ........ ........ ........ @alf1 +psignw 1----- ------- -00 00000010 11000000 . 0110010 ........ ........ ........ @alf1 +#puttst 1----- ------- 100 00000001 11000000 . 0100101 11000000 ........ ........ @alf2 +#andd_fd 1----- ------- -00 00000111 11000000 . 0000001 ........ ........ ........ @alf1 +#andnd_fd 1----- ------- -00 00000111 11000000 . 0000011 ........ ........ ........ @alf1 +#ord_fd 1----- ------- -00 00000111 11000000 . 0000101 ........ ........ ........ @alf1 +#ornd_fd 1----- ------- -00 00000111 11000000 . 0000111 ........ ........ ........ @alf1 +#xord_fd 1----- ------- -00 00000111 11000000 . 0001001 ........ ........ ........ @alf1 +#xornd_fd 1----- ------- -00 00000111 11000000 . 0001011 ........ ........ ........ @alf1 +#addd_fd 1----- ------- -00 00000111 11000000 . 0010001 ........ ........ ........ @alf1 +#subd_fd 1----- ------- -00 00000111 11000000 . 0010011 ........ ........ ........ @alf1 +#scld_fd 1----- ------- -00 00000111 ........ . 0010101 ........ ........ ........ @alf21 +#scrd_fd 1----- ------- -00 00000111 ........ . 0010111 ........ ........ ........ @alf21 +#shld_fd 1----- ------- -00 00000111 ........ . 0011001 ........ ........ ........ @alf21 +#shrd_fd 1----- ------- -00 00000111 ........ . 0011011 ........ ........ ........ @alf21 +#sard_fd 1----- ------- -00 00000111 ........ . 0011101 ........ ........ ........ @alf21 +#incd_fd 1----- ------- -00 00000111 ........ . 0110001 ........ ........ ........ @alf21 +#decd_fd 1----- ------- -00 00000111 ........ . 0110011 ........ ........ ........ @alf21 +pfhadd_adds 1----- ------- --- 00001110 ........ . 0000100 ........ ........ ........ @alf21 +pfhsub_adds 1----- ------- --- 00001110 ........ . 0000110 ........ ........ ........ @alf21 +pfaddsub_adds 1----- ------- --- 00001110 ........ . 0001110 ........ ........ ........ @alf21 +pfhadd_subs 1----- ------- --- 00001110 ........ . 0100100 ........ ........ ........ @alf21 +pfhsub_subs 1----- ------- --- 00001110 ........ . 0100110 ........ ........ ........ @alf21 +pfaddsub_subs 1----- ------- --- 00001110 ........ . 0101110 ........ ........ ........ @alf21 +pfadd_hadds 1----- ------- --- 00001110 ........ . 1000000 ........ ........ ........ @alf21 +pfsub_hadds 1----- ------- --- 00001110 ........ . 1000010 ........ ........ ........ @alf21 +pfhadd_hadds 1----- ------- --- 00001110 ........ . 1000100 ........ ........ ........ @alf21 +pfhsub_hadds 1----- ------- --- 00001110 ........ . 1000110 ........ ........ ........ @alf21 +pfmul_hadds 1----- ------- --- 00001110 ........ . 1001000 ........ ........ ........ @alf21 +pfaddsub_hadds 1----- ------- --- 00001110 ........ . 1001110 ........ ........ ........ @alf21 +pfadd_hsubs 1----- ------- --- 00001110 ........ . 1100000 ........ ........ ........ @alf21 +pfsub_hsubs 1----- ------- --- 00001110 ........ . 1100010 ........ ........ ........ @alf21 +pfhadd_hsubs 1----- ------- --- 00001110 ........ . 1100100 ........ ........ ........ @alf21 +pfhsub_hsubs 1----- ------- --- 00001110 ........ . 1100110 ........ ........ ........ @alf21 +pfmul_hsubs 1----- ------- --- 00001110 ........ . 1101000 ........ ........ ........ @alf21 +pfaddsub_hsubs 1----- ------- --- 00001110 ........ . 1101110 ........ ........ ........ @alf21 +pfhadd_rsubs 1----- ------- --- 00001111 ........ . 0100100 ........ ........ ........ @alf21 +pfhsub_rsubs 1----- ------- --- 00001111 ........ . 0100110 ........ ........ ........ @alf21 +pfaddsub_rsubs 1----- ------- --- 00001111 ........ . 0101110 ........ ........ ........ @alf21 +pfadd_addsubs 1----- ------- --- 00001111 ........ . 1100000 ........ ........ ........ @alf21 +pfsub_addsubs 1----- ------- --- 00001111 ........ . 1100010 ........ ........ ........ @alf21 +pfhadd_addsubs 1----- ------- --- 00001111 ........ . 1100100 ........ ........ ........ @alf21 +pfhsub_addsubs 1----- ------- --- 00001111 ........ . 1100110 ........ ........ ........ @alf21 +pfmul_addsubs 1----- ------- --- 00001111 ........ . 1101000 ........ ........ ........ @alf21 +pfaddsub_addsubs 1----- ------- --- 00001111 ........ . 1101110 ........ ........ ........ @alf21 + +# elbrus-v4: +fscales 1----- ------- -01 00000001 11000000 . 0100100 ........ ........ ........ @alf1 +fscaled 1----- ------- -01 00000001 11000000 . 0100101 ........ ........ ........ @alf1 +fxscalesx 1----- ------- -01 00000001 11000000 . 0100111 ........ ........ ........ @alf1 +fadds 1----- ------- -10 00000010 11000000 . 0110000 ........ ........ ........ @alf1 +faddd 1----- ------- -10 00000010 11000000 . 0110001 ........ ........ ........ @alf1 +fsubs 1----- ------- -10 00000010 11000000 . 0110010 ........ ........ ........ @alf1 +fsubd 1----- ------- -10 00000010 11000000 . 0110011 ........ ........ ........ @alf1 +fmuls 1----- ------- -10 00000010 11000000 . 0111000 ........ ........ ........ @alf1 +fmuld 1----- ------- -10 00000010 11000000 . 0111001 ........ ........ ........ @alf1 + +# elbrus-v5: +#ldq 1----- ....... --0 00000001 11000000 . 1000001 ........ ........ ........ @alf1_mas +ldqp 1----- ....... --0 00000010 11000000 . 1100001 ........ ........ ........ @alf1_mas +ldcsqp 1----- ....... --0 00000010 11000000 . 1100010 ........ ........ ........ @alf1_mas +lddsqp 1----- ....... --0 00000010 11000000 . 1100011 ........ ........ ........ @alf1_mas +ldesqp 1----- ....... --0 00000010 11000000 . 1100100 ........ ........ ........ @alf1_mas +ldfsqp 1----- ....... --0 00000010 11000000 . 1100101 ........ ........ ........ @alf1_mas +ldgsqp 1----- ....... --0 00000010 11000000 . 1100110 ........ ........ ........ @alf1_mas +ldssqp 1----- ....... --0 00000010 11000000 . 1100111 ........ ........ ........ @alf1_mas +ldgdqp 1----- ....... --0 00000010 11000000 . 1101001 ........ ........ ........ @alf1_mas +#ldcudqp 1----- ....... --0 00000010 11000000 . 1101000 ........ ........ ........ @alf1_mas +#ldapqp 1----- ....... --0 00000010 11000000 . 1101010 ........ ........ ........ @alf1_mas +stqp 1----- ....... -10 00000010 11000000 . 0100001 ........ ........ ........ @alf3_mas +staaqp 1----- ....... -10 00000010 11000000 . 0100000 ........ ........ ........ @alf10_mas +stcsqp 1----- ....... -10 00000010 11000000 . 0100010 ........ ........ ........ @alf3_mas +stdsqp 1----- ....... -10 00000010 11000000 . 0100011 ........ ........ ........ @alf3_mas +stesqp 1----- ....... -10 00000010 11000000 . 0100100 ........ ........ ........ @alf3_mas +stfsqp 1----- ....... -10 00000010 11000000 . 0100101 ........ ........ ........ @alf3_mas +stgsqp 1----- ....... -10 00000010 11000000 . 0100110 ........ ........ ........ @alf3_mas +stssqp 1----- ....... -10 00000010 11000000 . 0100111 ........ ........ ........ @alf3_mas +stgdqp 1----- ....... -10 00000010 11000000 . 0101001 ........ ........ ........ @alf3_mas +#stapqp 1----- ....... -10 00000010 11000000 . 0101010 ........ ........ ........ @alf3_mas +stmqp 1----- ....... -10 00000010 11000000 . 0010001 ........ ........ ........ @alf3_mas +stcsmqp 1----- ....... -10 00000010 11000000 . 0010010 ........ ........ ........ @alf3_mas +stdsmqp 1----- ....... -10 00000010 11000000 . 0010011 ........ ........ ........ @alf3_mas +stesmqp 1----- ....... -10 00000010 11000000 . 0010100 ........ ........ ........ @alf3_mas +stfsmqp 1----- ....... -10 00000010 11000000 . 0010101 ........ ........ ........ @alf3_mas +stgsmqp 1----- ....... -10 00000010 11000000 . 0010110 ........ ........ ........ @alf3_mas +stssmqp 1----- ....... -10 00000010 11000000 . 0010111 ........ ........ ........ @alf3_mas +stgdmqp 1----- ....... -10 00000010 11000000 . 0011001 ........ ........ ........ @alf3_mas +#stapmqp 1----- ....... -10 00000010 11000000 . 0011010 ........ ........ ........ @alf3_mas +#ldrqp 1----- ....... --0 00000010 11000000 . 1101011 ........ ........ ........ @alf1_mas +#strqp 1----- ....... -10 00000010 11000000 . 0101011 ........ ........ ........ @alf3_mas +puttagqp 1----- ------- -0- 00000010 11000000 . 1101100 ........ ........ ........ @alf1 +pmullw 1----- ------- -01 00000001 11000000 . 0100110 ........ ........ ........ @alf1 +psrcw 1----- ------- -0- 00000010 11000000 . 0010110 ........ ........ ........ @alf1 +psrcd 1----- ------- -0- 00000010 11000000 . 0010111 ........ ........ ........ @alf1 +addcd 1----- ------- -01 00000001 ........ . 1100000 ........ ........ ........ @alf21 +addcd_c 1----- ------- -01 00000001 ........ . 1100001 ........ ........ ........ @alf21 +subcd 1----- ------- -01 00000001 ........ . 1100010 ........ ........ ........ @alf21 +subcd_c 1----- ------- -01 00000001 ........ . 1100011 ........ ........ ........ @alf21 +getfzs 1----- ------- --- 00000001 11000000 . 1110100 ........ ........ ........ @alf1 +getfzd 1----- ------- --- 00000001 11000000 . 1110101 ........ ........ ........ @alf1 +qpsrlw 1----- ------- -0- 00000010 11000000 . 0000000 ........ ........ ........ @alf1 +qpsrlh 1----- ------- -0- 00000010 11000000 . 0000001 ........ ........ ........ @alf1 +qpsraw 1----- ------- -0- 00000010 11000000 . 0000010 ........ ........ ........ @alf1 +qpsrah 1----- ------- -0- 00000010 11000000 . 0000011 ........ ........ ........ @alf1 +qpsllw 1----- ------- -0- 00000010 11000000 . 0000100 ........ ........ ........ @alf1 +qpsllh 1----- ------- -0- 00000010 11000000 . 0000101 ........ ........ ........ @alf1 +qpsrld 1----- ------- -0- 00000010 11000000 . 0000110 ........ ........ ........ @alf1 +qpslld 1----- ------- -0- 00000010 11000000 . 0000111 ........ ........ ........ @alf1 +qpand 1----- ------- -0- 00000010 11000000 . 0001000 ........ ........ ........ @alf1 +qpandn 1----- ------- -0- 00000010 11000000 . 0001001 ........ ........ ........ @alf1 +qpor 1----- ------- -0- 00000010 11000000 . 0001010 ........ ........ ........ @alf1 +qpxor 1----- ------- -0- 00000010 11000000 . 0001011 ........ ........ ........ @alf1 +qpminuw 1----- ------- -00 00000010 11000000 . 0001100 ........ ........ ........ @alf1 +qpminsw 1----- ------- -00 00000010 11000000 . 0001101 ........ ........ ........ @alf1 +qpmaxuw 1----- ------- -00 00000010 11000000 . 0001110 ........ ........ ........ @alf1 +qpmaxsw 1----- ------- -00 00000010 11000000 . 0001111 ........ ........ ........ @alf1 +qpcmpeqd 1----- ------- -00 00000010 11000000 . 0011000 ........ ........ ........ @alf1 +qphaddh 1----- ------- -00 00000010 11000000 . 0011001 ........ ........ ........ @alf1 +qphaddw 1----- ------- -00 00000010 11000000 . 0011010 ........ ........ ........ @alf1 +qphaddsh 1----- ------- -00 00000010 11000000 . 0011011 ........ ........ ........ @alf1 +qpcmpgtd 1----- ------- -00 00000010 11000000 . 0011100 ........ ........ ........ @alf1 +qphsubh 1----- ------- -00 00000010 11000000 . 0011101 ........ ........ ........ @alf1 +qphsubw 1----- ------- -00 00000010 11000000 . 0011110 ........ ........ ........ @alf1 +qphsubsh 1----- ------- -00 00000010 11000000 . 0011111 ........ ........ ........ @alf1 +qpsrcw 1----- ------- -0- 00000010 11000000 . 0100110 ........ ........ ........ @alf1 +qpsrcd 1----- ------- -0- 00000010 11000000 . 0100111 ........ ........ ........ @alf1 +qpmsk2sgnb 1----- ------- -0- 00000010 11000000 . 0110100 ........ ........ ........ @alf1 +qpsignb 1----- ------- -00 00000010 11000000 . 0111000 ........ ........ ........ @alf1 +qpsignh 1----- ------- -00 00000010 11000000 . 0111001 ........ ........ ........ @alf1 +qpsignw 1----- ------- -00 00000010 11000000 . 0111010 ........ ........ ........ @alf1 +#{ +qpsgn2mskb 1----- ------- -0- 00000010 11000000 . 0111100 11000000 ........ ........ @alf2 +# elbrus1v7: +# qps2mb 1----- ------- -0- 00000010 11000000 . 0111100 ........ ........ ........ @alf1 +#} +qppackdl 1----- ------- -0- 00000010 11000000 . 0111101 ........ ........ ........ @alf1 +qpswitchw 1----- ------- -0- 00000010 11000000 . 0111110 11000000 ........ ........ @alf2 +qpswitchd 1----- ------- -0- 00000010 11000000 . 0111111 11000000 ........ ........ @alf2 +qpminub 1----- ------- -00 00000010 11000000 . 1000000 ........ ........ ........ @alf1 +qpminsh 1----- ------- -00 00000010 11000000 . 1000001 ........ ........ ........ @alf1 +qpmaxub 1----- ------- -00 00000010 11000000 . 1000010 ........ ........ ........ @alf1 +qpmaxsh 1----- ------- -00 00000010 11000000 . 1000011 ........ ........ ........ @alf1 +qpminsb 1----- ------- -00 00000010 11000000 . 1000100 ........ ........ ........ @alf1 +qpminuh 1----- ------- -00 00000010 11000000 . 1000101 ........ ........ ........ @alf1 +qpmaxsb 1----- ------- -00 00000010 11000000 . 1000110 ........ ........ ........ @alf1 +qpmaxuh 1----- ------- -00 00000010 11000000 . 1000111 ........ ........ ........ @alf1 +qpacksshb 1----- ------- -01 00000010 11000000 . 1001000 ........ ........ ........ @alf1 +qpaddb 1----- ------- -00 00000010 11000000 . 1001000 ........ ........ ........ @alf1 +qpackushb 1----- ------- -01 00000010 11000000 . 1001001 ........ ........ ........ @alf1 +qpaddh 1----- ------- -00 00000010 11000000 . 1001001 ........ ........ ........ @alf1 +qpacksswh 1----- ------- -01 00000010 11000000 . 1001010 ........ ........ ........ @alf1 +qpaddsb 1----- ------- -00 00000010 11000000 . 1001010 ........ ........ ........ @alf1 +qpackuswh 1----- ------- -01 00000010 11000000 . 1001011 ........ ........ ........ @alf1 +qpaddsh 1----- ------- -00 00000010 11000000 . 1001011 ........ ........ ........ @alf1 +qpaddusb 1----- ------- -00 00000010 11000000 . 1001100 ........ ........ ........ @alf1 +qpaddush 1----- ------- -00 00000010 11000000 . 1001101 ........ ........ ........ @alf1 +qpaddw 1----- ------- -00 00000010 11000000 . 1001110 ........ ........ ........ @alf1 +qpaddd 1----- ------- -00 00000010 11000000 . 1001111 ........ ........ ........ @alf1 +qpsubb 1----- ------- -00 00000010 11000000 . 1010000 ........ ........ ........ @alf1 +qpsubh 1----- ------- -00 00000010 11000000 . 1010001 ........ ........ ........ @alf1 +qpsubsb 1----- ------- -00 00000010 11000000 . 1010010 ........ ........ ........ @alf1 +qpsubsh 1----- ------- -00 00000010 11000000 . 1010011 ........ ........ ........ @alf1 +qpsubusb 1----- ------- -00 00000010 11000000 . 1010100 ........ ........ ........ @alf1 +qpsubush 1----- ------- -00 00000010 11000000 . 1010101 ........ ........ ........ @alf1 +qpsubw 1----- ------- -00 00000010 11000000 . 1010110 ........ ........ ........ @alf1 +qpsubd 1----- ------- -00 00000010 11000000 . 1010111 ........ ........ ........ @alf1 +qpcmpeqb 1----- ------- -00 00000010 11000000 . 1011000 ........ ........ ........ @alf1 +qpmulhh 1----- ------- -01 00000010 11000000 . 1011000 ........ ........ ........ @alf1 +qpcmpeqh 1----- ------- -00 00000010 11000000 . 1011001 ........ ........ ........ @alf1 +qpmullh 1----- ------- -01 00000010 11000000 . 1011001 ........ ........ ........ @alf1 +qpcmpeqw 1----- ------- -00 00000010 11000000 . 1011010 ........ ........ ........ @alf1 +qpmaddh 1----- ------- -01 00000010 11000000 . 1011010 ........ ........ ........ @alf1 +qpcmpgtb 1----- ------- -00 00000010 11000000 . 1011011 ........ ........ ........ @alf1 +qpmulhuh 1----- ------- -01 00000010 11000000 . 1011011 ........ ........ ........ @alf1 +qpcmpgth 1----- ------- -00 00000010 11000000 . 1011100 ........ ........ ........ @alf1 +qpsadbw 1----- ------- -01 00000010 11000000 . 1011100 ........ ........ ........ @alf1 +qpcmpgtw 1----- ------- -00 00000010 11000000 . 1011101 ........ ........ ........ @alf1 +qpmulubhh 1----- ------- -01 00000010 11000000 . 1011101 ........ ........ ........ @alf1 +qpavgusb 1----- ------- -00 00000010 11000000 . 1011110 ........ ........ ........ @alf1 +qpmullw 1----- ------- -01 00000010 11000000 . 1011110 ........ ........ ........ @alf1 +qpavgush 1----- ------- -00 00000010 11000000 . 1011111 ........ ........ ........ @alf1 +qpmaddubsh 1----- ------- -01 00000010 11000000 . 1101000 ........ ........ ........ @alf1 +qpmulhrsh 1----- ------- -01 00000010 11000000 . 1101001 ........ ........ ........ @alf1 +qphminposuh 1----- ------- -01 00000010 11000000 . 1101010 ........ ........ ........ @alf1 +qpmpsadbh 1----- ------- -01 00000010 11000000 . 1101011 ........ ........ ........ @alf1 +qpfstois 1----- ------- -0- 00000010 11000000 . 1101101 11001000 ........ ........ @alf2 +qpfstoistr 1----- ------- -0- 00000010 11000000 . 1101101 11001010 ........ ........ @alf2 +qpistofs 1----- ------- -0- 00000010 11000000 . 1101101 11001100 ........ ........ @alf2 +qpfstoid 1----- ------- -0- 00000010 11000000 . 1101101 11011000 ........ ........ @alf2 +qpfstoidtr 1----- ------- -0- 00000010 11000000 . 1101101 11011010 ........ ........ @alf2 +qpistofd 1----- ------- -0- 00000010 11000000 . 1101101 11011100 ........ ........ @alf2 +qpfstofd 1----- ------- -0- 00000010 11000000 . 1101101 11011110 ........ ........ @alf2 +qpfdtois 1----- ------- -0- 00000010 11000000 . 1101101 11101000 ........ ........ @alf2 +qpfdtoistr 1----- ------- -0- 00000010 11000000 . 1101101 11101010 ........ ........ @alf2 +qpidtofs 1----- ------- -0- 00000010 11000000 . 1101101 11101100 ........ ........ @alf2 +qpfdtofs 1----- ------- -0- 00000010 11000000 . 1101101 11101110 ........ ........ @alf2 +qpfdtoid 1----- ------- -0- 00000010 11000000 . 1101101 11111000 ........ ........ @alf2 +qpfdtoidtr 1----- ------- -0- 00000010 11000000 . 1101101 11111010 ........ ........ @alf2 +qpidtofd 1----- ------- -0- 00000010 11000000 . 1101101 11111100 ........ ........ @alf2 +qpfstoifs 1----- ------- -0- 00000010 11000000 . 1101110 ........ ........ ........ @alf1 +qpfdtoifd 1----- ------- -0- 00000010 11000000 . 1101111 ........ ........ ........ @alf1 +qpfadds 1----- ------- --- 00000010 11000000 . 1110000 ........ ........ ........ @alf1 +qpfaddd 1----- ------- --- 00000010 11000000 . 1110001 ........ ........ ........ @alf1 +qpfsubs 1----- ------- --- 00000010 11000000 . 1110010 ........ ........ ........ @alf1 +qpfsubd 1----- ------- --- 00000010 11000000 . 1110011 ........ ........ ........ @alf1 +qpfmins 1----- ------- -0- 00000010 11000000 . 1110100 ........ ........ ........ @alf1 +qpfmind 1----- ------- -0- 00000010 11000000 . 1110101 ........ ........ ........ @alf1 +qpfmaxs 1----- ------- -0- 00000010 11000000 . 1110110 ........ ........ ........ @alf1 +qpfmaxd 1----- ------- -0- 00000010 11000000 . 1110111 ........ ........ ........ @alf1 +qpfmuls 1----- ------- --- 00000010 11000000 . 1111000 ........ ........ ........ @alf1 +qpfmuld 1----- ------- --- 00000010 11000000 . 1111001 ........ ........ ........ @alf1 +qpfcmpeqs 1----- ------- -0- 00000010 11000000 . 1111010 ........ ........ ........ @alf1 +qpfcmplts 1----- ------- -0- 00000010 11000001 . 1111010 ........ ........ ........ @alf1 +qpfcmples 1----- ------- -0- 00000010 11000010 . 1111010 ........ ........ ........ @alf1 +qpfcmpuods 1----- ------- -0- 00000010 11000011 . 1111010 ........ ........ ........ @alf1 +qpfcmpneqs 1----- ------- -0- 00000010 11000100 . 1111010 ........ ........ ........ @alf1 +qpfcmpnlts 1----- ------- -0- 00000010 11000101 . 1111010 ........ ........ ........ @alf1 +qpfcmpnles 1----- ------- -0- 00000010 11000110 . 1111010 ........ ........ ........ @alf1 +qpfcmpods 1----- ------- -0- 00000010 11000111 . 1111010 ........ ........ ........ @alf1 +qpfcmpeqd 1----- ------- -0- 00000010 11000000 . 1111011 ........ ........ ........ @alf1 +qpfcmpltd 1----- ------- -0- 00000010 11000001 . 1111011 ........ ........ ........ @alf1 +qpfcmpled 1----- ------- -0- 00000010 11000010 . 1111011 ........ ........ ........ @alf1 +qpfcmpuodd 1----- ------- -0- 00000010 11000011 . 1111011 ........ ........ ........ @alf1 +qpfcmpneqd 1----- ------- -0- 00000010 11000100 . 1111011 ........ ........ ........ @alf1 +qpfcmpnltd 1----- ------- -0- 00000010 11000101 . 1111011 ........ ........ ........ @alf1 +qpfcmpnled 1----- ------- -0- 00000010 11000110 . 1111011 ........ ........ ........ @alf1 +qpfcmpodd 1----- ------- -0- 00000010 11000111 . 1111011 ........ ........ ........ @alf1 +qpfhadds 1----- ------- --- 00000010 11000000 . 1111100 ........ ........ ........ @alf1 +qpfhsubs 1----- ------- --- 00000010 11000000 . 1111101 ........ ........ ........ @alf1 +qpfaddsubs 1----- ------- --- 00000010 11000000 . 1111110 ........ ........ ........ @alf1 +qpfaddsubd 1----- ------- --- 00000010 11000000 . 1111111 ........ ........ ........ @alf1 +#{ +# [ +# plog_and 1----- ------- -0- 00010001 ........ . 0000000 ........ ........ ........ @alf21 +# plog_xor 1----- ------- -0- 00010001 ........ . 0010110 ........ ........ ........ @alf21 +# plog_sel3 1----- ------- -0- 00010001 ........ . 1011000 ........ ........ ........ @alf21 +# plog_mjr 1----- ------- -0- 00010001 ........ . 1101000 ........ ........ ........ @alf21 +# plog_or 1----- ------- -0- 00010001 ........ . 1111110 ........ ........ ........ @alf21 +# ] +plog 1----- ------- -0- 0001000. ........ . ....... ........ ........ ........ @alf21_log +#} +#{ +# [ +# qplog_and 1----- ------- --- 00010011 ........ . 0000000 ........ ........ ........ @alf21 +# qplog_xor 1----- ------- --- 00010011 ........ . 0010110 ........ ........ ........ @alf21 +# qplog_sel3 1----- ------- --- 00010011 ........ . 1011000 ........ ........ ........ @alf21 +# qplog_mjr 1----- ------- --- 00010011 ........ . 1101000 ........ ........ ........ @alf21 +# qplog_or 1----- ------- --- 00010011 ........ . 1111110 ........ ........ ........ @alf21 +# ] +qplog 1----- ------- --- 0001001. ........ . ....... ........ ........ ........ @alf21_log +#} +qppermb 1----- ------- -0- 00010111 ........ . 0001101 ........ ........ ........ @alf21 +qpshufb 1----- ------- -0- 00010111 ........ . 1001101 ........ ........ ........ @alf21 +qpmerge 1----- ------- -0- 00010111 ........ . 1101101 ........ ........ ........ @alf21 +qpfadd_adds 1----- ------- --- 00010110 ........ . 0000000 ........ ........ ........ @alf21 +qpfadd_addd 1----- ------- --- 00010110 ........ . 0000001 ........ ........ ........ @alf21 +qpfsub_adds 1----- ------- --- 00010110 ........ . 0000010 ........ ........ ........ @alf21 +qpfsub_addd 1----- ------- --- 00010110 ........ . 0000011 ........ ........ ........ @alf21 +qpfhadd_adds 1----- ------- --- 00010110 ........ . 0000100 ........ ........ ........ @alf21 +qpfhsub_adds 1----- ------- --- 00010110 ........ . 0000110 ........ ........ ........ @alf21 +qpfmul_adds 1----- ------- --- 00010110 ........ . 0001000 ........ ........ ........ @alf21 +qpfmul_addd 1----- ------- --- 00010110 ........ . 0001001 ........ ........ ........ @alf21 +qpfaddsub_adds 1----- ------- --- 00010110 ........ . 0001110 ........ ........ ........ @alf21 +qpfaddsub_addd 1----- ------- --- 00010110 ........ . 0001111 ........ ........ ........ @alf21 +qpfadd_subs 1----- ------- --- 00010110 ........ . 0100000 ........ ........ ........ @alf21 +qpfadd_subd 1----- ------- --- 00010110 ........ . 0100001 ........ ........ ........ @alf21 +qpfsub_subs 1----- ------- --- 00010110 ........ . 0100010 ........ ........ ........ @alf21 +qpfsub_subd 1----- ------- --- 00010110 ........ . 0100011 ........ ........ ........ @alf21 +qpfhadd_subs 1----- ------- --- 00010110 ........ . 0100100 ........ ........ ........ @alf21 +qpfhsub_subs 1----- ------- --- 00010110 ........ . 0100110 ........ ........ ........ @alf21 +qpfmul_subs 1----- ------- --- 00010110 ........ . 0101000 ........ ........ ........ @alf21 +qpfmul_subd 1----- ------- --- 00010110 ........ . 0101001 ........ ........ ........ @alf21 +qpfaddsub_subs 1----- ------- --- 00010110 ........ . 0101110 ........ ........ ........ @alf21 +qpfaddsub_subd 1----- ------- --- 00010110 ........ . 0101111 ........ ........ ........ @alf21 +qpfadd_hadds 1----- ------- --- 00010110 ........ . 1000000 ........ ........ ........ @alf21 +qpfsub_hadds 1----- ------- --- 00010110 ........ . 1000010 ........ ........ ........ @alf21 +qpfhadd_hadds 1----- ------- --- 00010110 ........ . 1000100 ........ ........ ........ @alf21 +qpfhsub_hadds 1----- ------- --- 00010110 ........ . 1000110 ........ ........ ........ @alf21 +qpfmul_hadds 1----- ------- --- 00010110 ........ . 1001000 ........ ........ ........ @alf21 +qpfaddsub_hadds 1----- ------- --- 00010110 ........ . 1001110 ........ ........ ........ @alf21 +qpfadd_hsubs 1----- ------- --- 00010110 ........ . 1100000 ........ ........ ........ @alf21 +qpfsub_hsubs 1----- ------- --- 00010110 ........ . 1100010 ........ ........ ........ @alf21 +qpfhadd_hsubs 1----- ------- --- 00010110 ........ . 1100100 ........ ........ ........ @alf21 +qpfhsub_hsubs 1----- ------- --- 00010110 ........ . 1100110 ........ ........ ........ @alf21 +qpfmul_hsubs 1----- ------- --- 00010110 ........ . 1101000 ........ ........ ........ @alf21 +qpfaddsub_hsubs 1----- ------- --- 00010110 ........ . 1101110 ........ ........ ........ @alf21 +qpfadd_rsubs 1----- ------- --- 00010111 ........ . 0100000 ........ ........ ........ @alf21 +qpfadd_rsubd 1----- ------- --- 00010111 ........ . 0100001 ........ ........ ........ @alf21 +qpfsub_rsubs 1----- ------- --- 00010111 ........ . 0100010 ........ ........ ........ @alf21 +qpfsub_rsubd 1----- ------- --- 00010111 ........ . 0100011 ........ ........ ........ @alf21 +qpfhadd_rsubs 1----- ------- --- 00010111 ........ . 0100100 ........ ........ ........ @alf21 +qpfhsub_rsubs 1----- ------- --- 00010111 ........ . 0100110 ........ ........ ........ @alf21 +qpfmul_rsubs 1----- ------- --- 00010111 ........ . 0101000 ........ ........ ........ @alf21 +qpfmul_rsubd 1----- ------- --- 00010111 ........ . 0101001 ........ ........ ........ @alf21 +qpfaddsub_rsubs 1----- ------- --- 00010111 ........ . 0101110 ........ ........ ........ @alf21 +qpfaddsub_rsubd 1----- ------- --- 00010111 ........ . 0101111 ........ ........ ........ @alf21 +qpfadd_addsubs 1----- ------- --- 00010111 ........ . 1100000 ........ ........ ........ @alf21 +qpfadd_addsubd 1----- ------- --- 00010111 ........ . 1100001 ........ ........ ........ @alf21 +qpfsub_addsubs 1----- ------- --- 00010111 ........ . 1100010 ........ ........ ........ @alf21 +qpfsub_addsubd 1----- ------- --- 00010111 ........ . 1100011 ........ ........ ........ @alf21 +qpfhadd_addsubs 1----- ------- --- 00010111 ........ . 1100100 ........ ........ ........ @alf21 +qpfhsub_addsubs 1----- ------- --- 00010111 ........ . 1100110 ........ ........ ........ @alf21 +qpfmul_addsubs 1----- ------- --- 00010111 ........ . 1101000 ........ ........ ........ @alf21 +qpfmul_addsubd 1----- ------- --- 00010111 ........ . 1101001 ........ ........ ........ @alf21 +qpfaddsub_addsubs 1----- ------- --- 00010111 ........ . 1101110 ........ ........ ........ @alf21 +qpfaddsub_addsubd 1----- ------- --- 00010111 ........ . 1101111 ........ ........ ........ @alf21 + +# elbrus1v6: +#vfbgv 0----- ------- -01 -------- -------- . 1101000 ........ ........ ........ @alf1 +#modbgv 0----- ------- -01 -------- -------- . 1101001 11000000 ........ ........ @alf2 +#mkfsw 0----- ------- -01 -------- -------- . 1101010 ........ ........ ........ @alf1 +ibranchd 1----- ------- 000 00000001 11000000 . 1010011 11000000 ........ ........ @alf2 +icalld 1----- ------- 000 00000001 11000000 . 1010100 ........ ........ ........ @alf2_icalld +pmrgp 1----- ------- -0- 00000001 11000000 . 1000000 ........ ........ ........ @alf1 +qpmrgp 1----- ------- -0- 00000010 11000000 . 1100000 ........ ........ ........ @alf1 +qpsrad 1----- ------- -0- 00000010 11000000 . 0100101 ........ ........ ........ @alf1 +pcmpeqbop 1----- ------- -00 00000010 11000000 . 0101000 ........ ........ 000..... @alf7 +pcmpeqhop 1----- ------- -00 00000010 11000001 . 0101000 ........ ........ 000..... @alf7 +pcmpeqwop 1----- ------- -00 00000010 11000010 . 0101000 ........ ........ 000..... @alf7 +pcmpeqdop 1----- ------- -00 00000010 11000011 . 0101000 ........ ........ 000..... @alf7 +pcmpgtbop 1----- ------- -00 00000010 11000100 . 0101000 ........ ........ 000..... @alf7 +pcmpgthop 1----- ------- -00 00000010 11000101 . 0101000 ........ ........ 000..... @alf7 +pcmpgtwop 1----- ------- -00 00000010 11000110 . 0101000 ........ ........ 000..... @alf7 +pcmpgtdop 1----- ------- -00 00000010 11000111 . 0101000 ........ ........ 000..... @alf7 +pcmpeqbap 1----- ------- -00 00000010 11001000 . 0101000 ........ ........ 000..... @alf7 +pcmpeqhap 1----- ------- -00 00000010 11001001 . 0101000 ........ ........ 000..... @alf7 +pcmpeqwap 1----- ------- -00 00000010 11001010 . 0101000 ........ ........ 000..... @alf7 +pcmpeqdap 1----- ------- -00 00000010 11001011 . 0101000 ........ ........ 000..... @alf7 +pcmpgtbap 1----- ------- -00 00000010 11001100 . 0101000 ........ ........ 000..... @alf7 +pcmpgthap 1----- ------- -00 00000010 11001101 . 0101000 ........ ........ 000..... @alf7 +pcmpgtwap 1----- ------- -00 00000010 11001110 . 0101000 ........ ........ 000..... @alf7 +pcmpgtdap 1----- ------- -00 00000010 11001111 . 0101000 ........ ........ 000..... @alf7 +qpcmpeqbop 1----- ------- -00 00000010 11000000 . 0101100 ........ ........ 000..... @alf7 +qpcmpeqhop 1----- ------- -00 00000010 11000001 . 0101100 ........ ........ 000..... @alf7 +qpcmpeqwop 1----- ------- -00 00000010 11000010 . 0101100 ........ ........ 000..... @alf7 +qpcmpeqdop 1----- ------- -00 00000010 11000011 . 0101100 ........ ........ 000..... @alf7 +qpcmpgtbop 1----- ------- -00 00000010 11000100 . 0101100 ........ ........ 000..... @alf7 +qpcmpgthop 1----- ------- -00 00000010 11000101 . 0101100 ........ ........ 000..... @alf7 +qpcmpgtwop 1----- ------- -00 00000010 11000110 . 0101100 ........ ........ 000..... @alf7 +qpcmpgtdop 1----- ------- -00 00000010 11000111 . 0101100 ........ ........ 000..... @alf7 +qpcmpeqbap 1----- ------- -00 00000010 11001000 . 0101100 ........ ........ 000..... @alf7 +qpcmpeqhap 1----- ------- -00 00000010 11001001 . 0101100 ........ ........ 000..... @alf7 +qpcmpeqwap 1----- ------- -00 00000010 11001010 . 0101100 ........ ........ 000..... @alf7 +qpcmpeqdap 1----- ------- -00 00000010 11001011 . 0101100 ........ ........ 000..... @alf7 +qpcmpgtbap 1----- ------- -00 00000010 11001100 . 0101100 ........ ........ 000..... @alf7 +qpcmpgthap 1----- ------- -00 00000010 11001101 . 0101100 ........ ........ 000..... @alf7 +qpcmpgtwap 1----- ------- -00 00000010 11001110 . 0101100 ........ ........ 000..... @alf7 +qpcmpgtdap 1----- ------- -00 00000010 11001111 . 0101100 ........ ........ 000..... @alf7 +qpcext_0x00 1----- ------- -0- 00000010 11000000 . 0110101 11000000 ........ ........ @alf2 +qpcext_0x7f 1----- ------- -0- 00000010 11000010 . 0110101 11000000 ........ ........ @alf2 +qpcext_0x80 1----- ------- -0- 00000010 11000100 . 0110101 11000000 ........ ........ @alf2 +qpcext_0xff 1----- ------- -0- 00000010 11000110 . 0110101 11000000 ........ ........ @alf2 +fmas 1----- ------- --- 00000011 ........ . 0000000 ........ ........ ........ @alf21 +fmad 1----- ------- --- 00000011 ........ . 0000001 ........ ........ ........ @alf21 +fmss 1----- ------- --- 00000011 ........ . 0000010 ........ ........ ........ @alf21 +fmsd 1----- ------- --- 00000011 ........ . 0000011 ........ ........ ........ @alf21 +fnmas 1----- ------- --- 00000011 ........ . 0000100 ........ ........ ........ @alf21 +fnmad 1----- ------- --- 00000011 ........ . 0000101 ........ ........ ........ @alf21 +fnmss 1----- ------- --- 00000011 ........ . 0000110 ........ ........ ........ @alf21 +fnmsd 1----- ------- --- 00000011 ........ . 0000111 ........ ........ ........ @alf21 +qpfmas 1----- ------- --- 00000011 ........ . 0001000 ........ ........ ........ @alf21 +qpfmad 1----- ------- --- 00000011 ........ . 0001001 ........ ........ ........ @alf21 +qpfmss 1----- ------- --- 00000011 ........ . 0001010 ........ ........ ........ @alf21 +qpfmsd 1----- ------- --- 00000011 ........ . 0001011 ........ ........ ........ @alf21 +qpfnmas 1----- ------- --- 00000011 ........ . 0001100 ........ ........ ........ @alf21 +qpfnmad 1----- ------- --- 00000011 ........ . 0001101 ........ ........ ........ @alf21 +qpfnmss 1----- ------- --- 00000011 ........ . 0001110 ........ ........ ........ @alf21 +qpfnmsd 1----- ------- --- 00000011 ........ . 0001111 ........ ........ ........ @alf21 +qpfmass 1----- ------- --- 00000011 ........ . 0010000 ........ ........ ........ @alf21 +qpfmasd 1----- ------- --- 00000011 ........ . 0010001 ........ ........ ........ @alf21 +qpfmsas 1----- ------- --- 00000011 ........ . 0010010 ........ ........ ........ @alf21 +qpfmsad 1----- ------- --- 00000011 ........ . 0010011 ........ ........ ........ @alf21 +clmull 1----- ------- -0- 00000011 11000000 . 0010100 ........ ........ ........ @alf1 +clmulh 1----- ------- -0- 00000011 11000000 . 0010101 ........ ........ ........ @alf1 + +# elbrus1v7: +#qpmgme 1----- ------- 000 00000001 ........ . 0100111 ........ ........ ........ @alf21 +#qpaesltr 1----- ------- 001 00000010 ........ . 0110000 ........ ........ ........ @alf21 +#qpaesiltr 1----- ------- 001 00000010 ........ . 0110001 ........ ........ ........ @alf21 +#qpkuzltr 1----- ------- 001 00000010 11000000 . 0110010 11000000 ........ ........ @alf2 +#qpsbgltrlo 1----- ------- 001 00000010 11000000 . 0110011 ........ ........ ........ @alf1 +#qpsbgltrhi 1----- ------- 001 00000010 11000001 . 0110011 ........ ........ ........ @alf1 +#qpaesebgn 1----- ------- 010 00000010 ........ . 0110100 ........ ........ ........ @alf21 +#qpaesdbgn 1----- ------- 010 00000010 ........ . 0110101 ........ ........ ........ @alf21 +#qpcm2b 1----- ------- -0- 00000010 11000000 . 0110110 11000000 ........ ........ @alf2 +#qpcm2h 1----- ------- -0- 00000010 11000001 . 0110110 11000000 ........ ........ @alf2 +#qpcm2w 1----- ------- -0- 00000010 11000010 . 0110110 11000000 ........ ........ @alf2 +#qpcm2d 1----- ------- -0- 00000010 11000011 . 0110110 11000000 ........ ........ @alf2 +#qpkuzebgn 1----- ------- 010 00000010 ........ . 0110110 ........ ........ ........ @alf21 +#qps2cmh 1----- ------- -0- 00000010 11000001 . 0110111 ........ ........ ........ @alf1 +#qps2cmw 1----- ------- -0- 00000010 11000010 . 0110111 ........ ........ ........ @alf1 +#qps2cmd 1----- ------- -0- 00000010 11000011 . 0110111 ........ ........ ........ @alf1 +#qps2mh 1----- ------- -0- 00000010 11000001 . 0111100 ........ ........ ........ @alf1 +#qps2mw 1----- ------- -0- 00000010 11000010 . 0111100 ........ ........ ........ @alf1 +#qps2md 1----- ------- -0- 00000010 11000011 . 0111100 ........ ........ ........ @alf1 +qpackhbss 1----- ------- -0- 00000011 11000000 . 0010110 ........ ........ ........ @alf1 +qpackhbus 1----- ------- -0- 00000011 11000001 . 0010110 ........ ........ ........ @alf1 +qpackwhss 1----- ------- -0- 00000011 11000010 . 0010110 ........ ........ ........ @alf1 +qpackwhus 1----- ------- -0- 00000011 11000011 . 0010110 ........ ........ ........ @alf1 +#qpfstobf 1----- ------- -0- 00000011 11001110 . 0010111 ........ ........ ........ @alf1 +#qpidotsbwss 1----- ------- -0- 00000011 ........ . 0011000 ........ ........ ........ @alf21 +#qpidotsbwus 1----- ------- -0- 00000011 ........ . 0011001 ........ ........ ........ @alf21 +#qpidotsbwuu 1----- ------- -0- 00000011 ........ . 0011010 ........ ........ ........ @alf21 +#qpidotshwss 1----- ------- -0- 00000011 ........ . 0011100 ........ ........ ........ @alf21 +#qpbfdots 1----- ------- -0- 00000011 ........ . 0100000 ........ ........ ........ @alf21 +#qptbl_0 1----- ------- -0- 00000011 ........ . 0101000 ........ ........ ........ @alf21 +#qptbl_1 1----- ------- -0- 00000011 ........ . 0101001 ........ ........ ........ @alf21 +#qptbl_2 1----- ------- -0- 00000011 ........ . 0101010 ........ ........ ........ @alf21 +#qptbl_3 1----- ------- -0- 00000011 ........ . 0101011 ........ ........ ........ @alf21 +#qptbl_4 1----- ------- -0- 00000011 ........ . 0101100 ........ ........ ........ @alf21 +#qptbl_5 1----- ------- -0- 00000011 ........ . 0101101 ........ ........ ........ @alf21 +#qptbl_6 1----- ------- -0- 00000011 ........ . 0101110 ........ ........ ........ @alf21 +#qptbl_7 1----- ------- -0- 00000011 ........ . 0101111 ........ ........ ........ @alf21 +#qpinss 1----- ------- -0- 00010111 ........ . 0101100 ........ ........ ........ @alf21 +#qpinsd 1----- ------- -0- 00010111 ........ . 0101101 ........ ........ ........ @alf21 diff --git a/target/e2k/alops.inc b/target/e2k/alops.inc index 555a8f896f..9076044b85 100644 --- a/target/e2k/alops.inc +++ b/target/e2k/alops.inc @@ -938,6 +938,9 @@ typedef enum { ARGS_DDSD = alopf21_args(ARG_SIZE_D, ARG_SIZE_D, ARG_SIZE_S, ARG_SIZE_D), ARGS_DDDD = alopf21_args(ARG_SIZE_D, ARG_SIZE_D, ARG_SIZE_D, ARG_SIZE_D), ARGS_PPPP = alopf21_args(ARG_SIZE_P, ARG_SIZE_P, ARG_SIZE_P, ARG_SIZE_P), + + // compat + ARGS_XSD = alopf7_args(ARG_SIZE_X, ARG_SIZE_S, ARG_SIZE_D), } AlopArgs; typedef enum { @@ -1239,14 +1242,14 @@ static AlopDesc alops[] = { { X(OP_FXCMPNLTXB), ALOPF7, ARGS_XXB, ALOP_SHORT, 0x2b, 1, -1, CHAN_0134, { -1 }, 5, 4 }, { X(OP_FXCMPNLEXB), ALOPF7, ARGS_XXB, ALOP_SHORT, 0x2b, 1, -1, CHAN_0134, { -1 }, 6, 4 }, { X(OP_FXCMPODXB), ALOPF7, ARGS_XXB, ALOP_SHORT, 0x2b, 1, -1, CHAN_0134, { -1 }, 7, 4 }, - { X(OP_CCTOPO), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 0 }, - { X(OP_CCTOPB), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 1 }, - { X(OP_CCTOPE), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 2 }, - { X(OP_CCTOPBE), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 3 }, - { X(OP_CCTOPS), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 4 }, - { X(OP_CCTOPP), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 5 }, - { X(OP_CCTOPL), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 6 }, - { X(OP_CCTOPLE), ALOPF8, ARGS_S, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 7 }, + { X(OP_CCTOPO), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 0 }, + { X(OP_CCTOPB), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 1 }, + { X(OP_CCTOPE), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 2 }, + { X(OP_CCTOPBE), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 3 }, + { X(OP_CCTOPS), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 4 }, + { X(OP_CCTOPP), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 5 }, + { X(OP_CCTOPL), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 6 }, + { X(OP_CCTOPLE), ALOPF8, ARGS_SB, ALOP_SHORT, 0x24, 1, -1, CHAN_03, { -1 }, 7 }, { X(OP_STAAB), ALOPF10, ARGS_S, ALOP_EXT, 0x1c, 1, -1, CHAN_25, { -1 } }, { X(OP_STAAH), ALOPF10, ARGS_S, ALOP_EXT, 0x1d, 1, -1, CHAN_25, { -1 } }, { X(OP_STAAW), ALOPF10, ARGS_S, ALOP_EXT, 0x1e, 1, -1, CHAN_25, { -1 } }, diff --git a/target/e2k/meson.build b/target/e2k/meson.build index 2a49b03c94..521b1bd0c1 100644 --- a/target/e2k/meson.build +++ b/target/e2k/meson.build @@ -1,4 +1,9 @@ +gen = [ + decodetree.process('alop.decode', extra_args: ['--static-decode=decode_alop', '--insnwidth=64']), +] + e2k_ss = ss.source_set() +e2k_ss.add(gen) e2k_ss.add(files( 'cpu.c', 'cpu-dump.c', diff --git a/target/e2k/trans/alop-v1.c.inc b/target/e2k/trans/alop-v1.c.inc new file mode 100644 index 0000000000..fa6766a8cd --- /dev/null +++ b/target/e2k/trans/alop-v1.c.inc @@ -0,0 +1,758 @@ +#define compat_format_alf1 ALOPF1 +#define compat_format_alf1_mas ALOPF1_MAS +#define compat_format_alf1_lit8 ALOPF11_LIT8 +#define compat_format_alf2 ALOPF2 +#define compat_format_alf2_pshufh ALOPF12_PSHUFH +#define compat_format_alf2_icalld ALOPF12_ICALLD +#define compat_format_alf3_mas ALOPF3 +#define compat_format_alf7 ALOPF7 +#define compat_format_alf8 ALOPF8 +#define compat_format_alf10_mas ALOPF10 +#define compat_format_alf15 ALOPF15 +#define compat_format_alf16 ALOPF16 +#define compat_format_alf21 ALOPF21 +#define compat_format_alf21_log ALOPF21 +#define compat_format(F) glue(compat_format_, F) + +#define compat_args_alf1(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R)) +#define compat_args_alf1_mas(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R)) +#define compat_args_alf1_lit8(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R)) +#define compat_args_alf2(R, S1, S2, S3) glue(ARGS_, glue(S2, R)) +#define compat_args_alf2_pshufh(R, S1, S2, S3) glue(ARGS_, glue(S2, R)) +#define compat_args_alf2_icalld(R, S1, S2, S3) glue(ARGS_, glue(S2, R)) +#define compat_args_alf3_mas(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R)) +#define compat_args_alf7(R, S1, S2, S3) glue(ARGS_, glue3(S1, S2, R)) +#define compat_args_alf8(R, S1, S2, S3) glue(ARGS_, glue(S2, R)) +#define compat_args_alf10_mas(R, S1, S2, S3) glue(ARGS_, R) +#define compat_args_alf15(R_, S1, S2, S3) glue(ARGS_, glue(S2, R)) +#define compat_args_alf16(R, S1, S2, S3) glue(ARGS_, R) +#define compat_args_alf21(R, S1, S2, S3) glue(ARGS_, glue4(S1, S2, S3, R)) +#define compat_args_alf21_log(R, S1, S2, S3) glue(ARGS_, glue4(S1, S2, S3, R)) +#define compat_args(F, R, S1, S2, S3) glue(compat_args_, F)(R, S1, S2, S3) + +#define lower_B b +#define lower_S s +#define lower_D d +#define lower_X x +#define lower_P q +#define lower_Q q +#define lower(S) glue(lower_, S) + +#define compat_args2_alf1(R, S1, S2, S3) glue3(R, S1, S2) +#define compat_args2_alf1_mas(R, S1, S2, S3) +#define compat_args2_alf1_lit8(R, S1, S2, S3) glue3(R, S1, S2) +#define compat_args2_alf2(R, S1, S2, S3) glue(R, S2) +#define compat_args2_alf2_pshufh(R, S1, S2, S3) glue(R, S2) +#define compat_args2_alf3_mas(R, S1, S2, S3) +#define compat_args2_alf7(R, S1, S2, S3) glue3(R, S1, S2) +#define compat_args2_alf8(R, S1, S2, S3) glue(R, S2) +#define compat_args2_alf21(R, S1, S2, S3) glue4(R, S1, S2, S3) +#define compat_args2_alf21_log(R, S1, S2, S3) glue4(R, S1, S2, S3) +#define compat_args2(F, R, S1, S2, S3) glue(compat_args2_, F)(lower(R), lower(S1), lower(S2), lower(S3)) + +#define V_MIN(X) ((X) & 0xff) +#define V_MAX(X) ((X) >> 8) +#define R(MIN, MAX) (((MAX) << 8) | (MIN)) +#define V1_2 R(1, 2) +#define V1_3 R(1, 3) + +static bool check_version(Alop *alop, uint16_t versions[6]) +{ + uint16_t min_ver = V_MIN(versions[alop->chan]); \ + uint16_t max_ver = V_MAX(versions[alop->chan]); \ + return alop->ctx->version >= min_ver && (max_ver == 0 || alop->ctx->version <= max_ver); +} + +#define TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, CODE) \ + static bool glue(trans_, NAME)(DisasContext *ctx, glue(arg_, F) *a) \ + { \ + uint16_t versions[6] = { C0, C1, C2, C3, C4, C5 }; \ + Alop *alop = &ctx->alops[ctx->cur_alop]; \ + if (!check_version(alop, versions)) { \ + return false; \ + } else if (ctx->only_check) { \ + alop->format = compat_format(F); \ + alop->args = compat_args(F, R, S1, S2, S3); \ + } else { \ + CODE; \ + } \ + return true; \ + } + +#define TRANSW(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, E, GEN) \ + TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, \ + { glue4(gen_, F, E, compat_args2(F, R, S1, S2, S3))(alop, GEN); }) + +#define TRANSC(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, WRAP, OP1, OP2) \ + TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, \ + { WRAP(alop, OP1, OP2); }) + +#define TRANSM(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, ADDR, GEN, MEMOP, BASE) \ + TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, \ + { glue(gen_, F)(alop, ADDR, GEN, MEMOP, BASE); }) + +#define TRANS_(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, WRAP, GEN) \ + TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, { WRAP(alop, GEN); }) + +#define TRANSD(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, GEN) \ + TRANS_BASE(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, { GEN(alop); }) + +// special version: +// * set old opcode (to reuse old code) +// * direct call +#define TRANSA(NAME, C0, C1, C2, C3, C4, C5, R, S1, S2, S3, F, OP, GEN) \ + static bool glue(trans_, NAME)(DisasContext *ctx, glue(arg_, F) *a) \ + { \ + uint16_t versions[6] = { C0, C1, C2, C3, C4, C5 }; \ + Alop *alop = &ctx->alops[ctx->cur_alop]; \ + if (!check_version(alop, versions)) { \ + return false; \ + } else if (ctx->only_check) { \ + alop->op = OP; \ + alop->format = compat_format(F); \ + alop->args = compat_args(F, R, S1, S2, S3); \ + } else { \ + GEN(alop); \ + } \ + return true; \ + } + +TRANSW(andw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_and_i32); +TRANSW(andd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_and_i64); +TRANSW(andnw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, gen_andn_i32); +TRANSW(andnd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, gen_andn_i64); +TRANSW(orw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_or_i32); +TRANSW(ord, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_or_i64); +TRANSW(ornw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, gen_orn_i32); +TRANSW(ornd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, gen_orn_i64); +TRANSW(xorw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_xor_i32); +TRANSW(xord, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_xor_i64); +TRANSW(xornw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, gen_xorn_i32); +TRANSW(xornd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, gen_xorn_i64); +TRANSW(sxtb, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_sxtb); +TRANSW(sxth, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_sxth); +TRANSW(sxtw, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_sxtw); +TRANSW(zxtb, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_zxtb); +TRANSW(zxth, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_zxth); +TRANSW(zxtw, 1, 1, 1, 1, 1, 1, D,0,S,0, alf2, _, gen_zxtw); +TRANSD(sxt, 1, 1, 1, 1, 1, 1, D,S,S,0, alf1, gen_sxt); +TRANSD(mergew, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, gen_merges); +TRANSD(merged, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, gen_merged); +TRANSW(addw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_add_i32); +TRANSW(addd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_add_i64); +TRANSW(negw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf2, _, tcg_gen_neg_i32); +TRANSW(subw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_sub_i32); +TRANSW(negd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf2, _, tcg_gen_neg_i64); +TRANSW(subd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_sub_i64); +TRANSW(sclw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_rotl_i32); +TRANSW(scld, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_rotl_i64); +TRANSW(scrw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_rotr_i32); +TRANSW(scrd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_rotr_i64); +TRANSW(shlw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_shl_i32); +TRANSW(shld, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_shl_i64); +TRANSW(shrw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_shr_i32); +TRANSW(shrd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_shr_i64); +TRANSW(sarw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, _, tcg_gen_sar_i32); +TRANSW(sard, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, _, tcg_gen_sar_i64); +TRANSD(getfw, 1, 1, 1, 1, 1, 1, S,S,S,0, alf1, gen_getfs); +TRANSD(getfd, 1, 1, 1, 1, 1, 1, D,D,D,0, alf1, gen_getfd); +TRANSW(cmpowb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmposb); +TRANSW(cmpbwb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpbsb); +TRANSW(cmpewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpesb); +TRANSW(cmpbewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpbesb); +TRANSW(cmpswb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpssb); +TRANSW(cmppwb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmppsb); +TRANSW(cmplwb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmplsb); +TRANSW(cmplewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmplesb); +TRANSW(cmpodb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpodb); +TRANSW(cmpbdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpbdb); +TRANSW(cmpedb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpedb); +TRANSW(cmpbedb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpbedb); +TRANSW(cmpsdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpsdb); +TRANSW(cmppdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmppdb); +TRANSW(cmpldb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpldb); +TRANSW(cmpledb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpledb); +TRANSW(cmpandewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpandesb); +TRANSW(cmpandswb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpandssb); +TRANSW(cmpandpwb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpandpsb); +TRANSW(cmpandlewb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _, gen_cmpandlesb); +TRANSW(cmpandedb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpandedb); +TRANSW(cmpandsdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpandsdb); +TRANSW(cmpandpdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpandpdb); +TRANSW(cmpandledb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _, gen_cmpandledb); +TRANSD(cctopo, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopo); +TRANSD(cctopb, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopb); +TRANSD(cctope, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctope); +TRANSD(cctopbe, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopbe); +TRANSD(cctops, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctops); +TRANSD(cctopp, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopp); +TRANSD(cctopl, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctopl); +TRANSD(cctople, 1, 0, 0, 1, 0, 0, B,0,S,0, alf8, gen_cctople); +TRANSM(ldb, 1, 0, 1, 1, 0, 1, D,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i64, MO_UB, ADDR_FLAT); +TRANSM(ldh, 1, 0, 1, 1, 0, 1, D,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i64, MO_UW, ADDR_FLAT); +TRANSM(ldw, 1, 0, 1, 1, 0, 1, D,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i64, MO_UL, ADDR_FLAT); +TRANSM(ldd, 1, 0, 1, 1, 0, 1, D,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i64, MO_UQ, ADDR_FLAT); +// should be illop if not e2k32 +#if 1 || defined(TARGET_E2K32) +TRANSM(ldcsb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_CS); +TRANSM(ldcsh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_CS); +TRANSM(ldcsw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_CS); +TRANSM(ldcsd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_CS); +TRANSM(lddsb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_DS); +TRANSM(lddsh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_DS); +TRANSM(lddsw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_DS); +TRANSM(lddsd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_DS); +TRANSM(ldesb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_ES); +TRANSM(ldesh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_ES); +TRANSM(ldesw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_ES); +TRANSM(ldesd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_ES); +TRANSM(ldfsb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_FS); +TRANSM(ldfsh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_FS); +TRANSM(ldfsw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_FS); +TRANSM(ldfsd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_FS); +//ldfsq, 1, 0, 1, 1, 0, 1, Q,D,D,0, alf11_mas, AF_PAIR +TRANSM(ldgsb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_GS); +TRANSM(ldgsh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_GS); +TRANSM(ldgsw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_GS); +TRANSM(ldgsd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_GS); +//ldgsq, 1, 0, 1, 1, 0, 1, Q,D,D,0, alf11_mas, AF_PAIR +TRANSM(ldssb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_SS); +TRANSM(ldssh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_SS); +TRANSM(ldssw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_SS); +TRANSM(ldssd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_SS); +//ldssq, 1, 0, 1, 1, 0, 1, Q,D,D,0, alf11_mas, AF_PAIR +TRANSM(ldgdb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UB, ADDR_GD); +TRANSM(ldgdh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UW, ADDR_GD); +TRANSM(ldgdw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UL, ADDR_GD); +TRANSM(ldgdd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf1_mas, gen_addr_i32, gen_ld_raw_i64, MO_UQ, ADDR_GD); +//ldgdq, 1, 0, 1, 1, 0, 1, Q,S,S,0, alf11_mas, AF_PAIR +#endif +//ldcudb, 1, 0, 1, 1, 0, 1, D,S,S,0, alf11_mas +//ldcudh, 1, 0, 1, 1, 0, 1, D,S,S,0, alf11_mas +//ldcudw, 1, 0, 1, 1, 0, 1, D,S,S,0, alf11_mas +//ldcudd, 1, 0, 1, 1, 0, 1, D,S,S,0, alf11_mas +//ldcudq, 1, 0, 1, 1, 0, 1, Q,S,S,0, alf11_mas, AF_PAIR +//ldapb, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas +//ldaph, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas +//ldapw, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas +//ldapq, 1, 0, 1, 1, 0, 1, Q,Q,S,0, alf11_mas, AF_PAIR +//ldodrb, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodrh, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodrw, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodrd, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodrq, 1, 0, 1, 1, 0, 1, Q,Q,S,0, alf11_mas, AF_PAIR | AF_REMOVED_IN_V3 +//ldodwb, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodwh, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodww, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodwd, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodwq, 1, 0, 1, 1, 0, 1, Q,Q,S,0, alf11_mas, AF_PAIR | AF_REMOVED_IN_V3 +//ldodpb, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodph, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodpw, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodpd, 1, 0, 1, 1, 0, 1, D,Q,S,0, alf11_mas, AF_REMOVED_IN_V3 +//ldodpq, 1, 0, 1, 1, 0, 1, Q,Q,S,0, alf11_mas, AF_PAIR | AF_REMOVED_IN_V3 +TRANSM(stb, 0, 0, 1, 0, 0, 1, S,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i32, MO_UB, ADDR_FLAT); +TRANSM(sth, 0, 0, 1, 0, 0, 1, S,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i32, MO_UW, ADDR_FLAT); +TRANSM(stw, 0, 0, 1, 0, 0, 1, S,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i32, MO_UL, ADDR_FLAT); +TRANSM(std, 0, 0, 1, 0, 0, 1, D,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i64, MO_UQ, ADDR_FLAT); +//stq, 0, 0, 5, 0, 0, 5, Q,D,D,0, alf13_mas, AF_PAIR +// should be illop if not e2k32 +#if 1 || defined(TARGET_E2K32) +TRANSM(stcsb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_CS); +TRANSM(stcsh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_CS); +TRANSM(stcsw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_CS); +TRANSM(stcsd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_CS); +//stcsq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR +TRANSM(stdsb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_DS); +TRANSM(stdsh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_DS); +TRANSM(stdsw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_DS); +TRANSM(stdsd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_DS); +//stdsq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR +TRANSM(stesb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_ES); +TRANSM(stesh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_ES); +TRANSM(stesw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_ES); +TRANSM(stesd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_ES); +//stesq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR +TRANSM(stfsb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_FS); +TRANSM(stfsh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_FS); +TRANSM(stfsw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_FS); +TRANSM(stfsd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_FS); +//stfsq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR +TRANSM(stgsb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_GS); +TRANSM(stgsh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_GS); +TRANSM(stgsw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_GS); +TRANSM(stgsd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_GS); +//stgsq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR +TRANSM(stssb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_SS); +TRANSM(stssh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_SS); +TRANSM(stssw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_SS); +TRANSM(stssd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_SS); +//stssq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR +TRANSM(stgdb, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UB, ADDR_GD); +TRANSM(stgdh, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UW, ADDR_GD); +TRANSM(stgdw, 0, 0, 1, 0, 0, 1, S,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i32, MO_UL, ADDR_GD); +TRANSM(stgdd, 0, 0, 1, 0, 0, 1, D,S,S,0, alf3_mas, gen_addr_i32, gen_st_raw_i64, MO_UQ, ADDR_GD); +//stgdq, 0, 0, 1, 0, 0, 1, Q,S,S,0, alf13_mas, AF_PAIR +#endif +//stodrb, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodrh, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodrw, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodrd, 0, 0, 1, 0, 0, 1, D,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodrq, 0, 0, 1, 0, 0, 1, Q,Q,S,0, alf13_mas, AF_PAIR | AF_REMOVED_IN_V3 +//stodwb, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodwh, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodww, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodwd, 0, 0, 1, 0, 0, 1, D,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodwq, 0, 0, 1, 0, 0, 1, Q,Q,S,0, alf13_mas, AF_PAIR | AF_REMOVED_IN_V3 +//stodpb, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodph, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodpw, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodpd, 0, 0, 1, 0, 0, 1, D,Q,S,0, alf13_mas, AF_REMOVED_IN_V3 +//stodpq, 0, 0, 1, 0, 0, 1, Q,Q,S,0, alf13_mas, AF_PAIR | AF_REMOVED_IN_V3 + +TRANSA(staab, 0, 0, 1, 0, 0, 1, S,0,0,0, alf10_mas, OP_STAAB, gen_staab); +TRANSA(staah, 0, 0, 1, 0, 0, 1, S,0,0,0, alf10_mas, OP_STAAH, gen_staah); +TRANSA(staaw, 0, 0, 1, 0, 0, 1, S,0,0,0, alf10_mas, OP_STAAW, gen_staaw); +TRANSA(staad, 0, 0, 1, 0, 0, 1, D,0,0,0, alf10_mas, OP_STAAD, gen_staad); +TRANSA(staaq, 0, 0, 1, 0, 0, 1, Q,0,0,0, alf10_mas, OP_STAAQ, gen_staaq); +//stapb, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas +//staph, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas +//stapw, 0, 0, 1, 0, 0, 1, S,Q,S,0, alf13_mas +//stapd, 0, 0, 1, 0, 0, 1, D,Q,S,0, alf13_mas +//stapq, 0, 0, 1, 0, 0, 1, Q,Q,S,0, alf13_mas, AF_PAIR +//ldrd, 1, 0, 1, 1, 0, 1, D,D,D,0, alf11 +//strd, 0, 0, 1, 0, 0, 1, D,D,D,0, alf13_mas +//aaurrw, 0, 0, 1, 0, 0, 1, S,0,0,0, aaurr +//aaurrd, 0, 0, 1, 0, 0, 1, D,0,0,0, aaurr +//aaurrq, 0, 0, 1, 0, 0, 1, Q,0,0,0, aaurr, AF_PAIR +//aaurww, 0, 0, 1, 0, 0, 1, S,0,0,0, aaurw +//aaurwd, 0, 0, 1, 0, 0, 1, D,0,0,0, aaurw +//aaurwq, 0, 0, 1, 0, 0, 1, Q,0,0,0, aaurw, AF_PAIR +TRANSA(gettags, 0, 0, 1, 0, 0, 1, S,0,S,0, alf2, OP_GETTAGS, gen_gettags); +TRANSA(gettagd, 0, 0, 1, 0, 0, 1, S,0,D,0, alf2, OP_GETTAGD, gen_gettagd); +TRANSA(puttags, 0, 0, 1, 0, 0, 1, S,S,S,0, alf1_mas, OP_PUTTAGS, gen_puttags); +TRANSA(puttagd, 0, 0, 1, 0, 0, 1, D,D,S,0, alf1_mas, OP_PUTTAGD, gen_puttagd); +//gettc, 1, 0, 0, 0, 0, 0, D,0,S,0, alf12 +//puttc, 1, 0, 0, 0, 0, 0, D,D,D,0, alf11 +//invtc, 1, 0, 0, 0, 0, 0, D,0,S,0, alf12 +TRANSA(movts, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, OP_MOVTS, gen_movts); +TRANSA(movtcs, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, OP_MOVTCS, gen_movtcs); +//TRANSA(movtrs, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, OP_MOVTRS, gen_movtrs); +//TRANSA(movtrcs, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, OP_MOVTRCS, gen_movtrcs); +TRANSA(movtd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, OP_MOVTD, gen_movtd); +TRANSA(movtcd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, OP_MOVTCD, gen_movtcd); +//TRANSA(movtrd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, OP_MOVTRD, gen_movtrd); +//TRANSA(movtrcd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, OP_MOVTRCD, gen_movtrcd); +TRANSA(movtq, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf2, OP_MOVTQ, gen_movtq); +TRANSA(movtcq, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf2, OP_MOVTCQ, gen_movtcq); +//movtrq, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf22, AF_PAIR +//movtrcq, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf22, AF_PAIR +//getsap, 1, 1, 0, 0, 0, 0, Q,0,S,0, alf2, AF_PAIR +//cudtoap, 1, 1, 0, 1, 1, 0, Q,0,S,0, alf2, AF_PAIR +//gdtoap, 1, 1, 0, 1, 1, 0, Q,0,S,0, alf2, AF_PAIR +//vfsi, 0, 1, 0, 0, 1, 0, D,S,D,0, alf1 +TRANSA(getpl, 1, 0, 0, 1, 0, 0, D,0,S,0, alf2, OP_GETPL, gen_getpl); +TRANSW(fxcmpeqsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpeqs); +TRANSW(fxcmpltsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmplts); +TRANSW(fxcmplesb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmples); +TRANSW(fxcmpuodsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpuods); +TRANSW(fxcmpneqsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpneqs); +TRANSW(fxcmpnltsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpnlts); +TRANSW(fxcmpnlesb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpnles); +TRANSW(fxcmpodsb, 1, 1, 0, 1, 1, 0, D,X,S,0, alf7, _env_, gen_helper_fxcmpods); +TRANSW(fxcmpeqdb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpeqd); +TRANSW(fxcmpltdb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpltd); +TRANSW(fxcmpledb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpled); +TRANSW(fxcmpuoddb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpuodd); +TRANSW(fxcmpneqdb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpneqd); +TRANSW(fxcmpnltdb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpnltd); +TRANSW(fxcmpnledb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpnled); +TRANSW(fxcmpoddb, 1, 1, 0, 1, 1, 0, D,X,D,0, alf7, _env_, gen_helper_fxcmpodd); +TRANSW(fxcmpeqxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpeqx); +TRANSW(fxcmpltxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpltx); +TRANSW(fxcmplexb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmplex); +TRANSW(fxcmpuodxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpuodx); +TRANSW(fxcmpneqxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpneqx); +TRANSW(fxcmpnltxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpnltx); +TRANSW(fxcmpnlexb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpnlex); +TRANSW(fxcmpodxb, 1, 1, 0, 1, 1, 0, D,X,X,0, alf7, _env_, gen_helper_fxcmpodx); +TRANSW(fcmpeqsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpeqs); +TRANSW(fcmpltsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmplts); +TRANSW(fcmplesb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmples); +TRANSW(fcmpuodsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpuods); +TRANSW(fcmpneqsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpneqs); +TRANSW(fcmpnltsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpnlts); +TRANSW(fcmpnlesb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpnles); +TRANSW(fcmpodsb, 1, 1, 0, 1, 1, 0, S,S,S,0, alf7, _env_, gen_helper_fcmpods); +TRANSW(fcmpeqdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpeqd); +TRANSW(fcmpltdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpltd); +TRANSW(fcmpledb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpled); +TRANSW(fcmpuoddb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpuodd); +TRANSW(fcmpneqdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpneqd); +TRANSW(fcmpnltdb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpnltd); +TRANSW(fcmpnledb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpnled); +TRANSW(fcmpoddb, 1, 1, 0, 1, 1, 0, D,D,D,0, alf7, _env_, gen_helper_fcmpodd); +TRANSW(fadds, 1, 1, 4, 1, 1, 4, S,S,S,0, alf1, _env_, gen_helper_fadds); +TRANSW(faddd, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_faddd); +TRANSW(fsubs, 1, 1, 4, 1, 1, 4, S,S,S,0, alf1, _env_, gen_helper_fsubs); +TRANSW(fsubd, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_fsubd); +TRANSW(fmins, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fmins); +TRANSW(fmind, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmind); +TRANSW(fmaxs, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fmaxs); +TRANSW(fmaxd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmaxd); +TRANSW(fmuls, 1, 1, 4, 1, 1, 4, S,S,S,0, alf1, _env_, gen_helper_fmuls); +TRANSW(fmuld, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_fmuld); +TRANSW(fstoiw, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, _env_, gen_helper_fstois); +TRANSW(fstoiwtr, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, _env_, gen_helper_fstoistr); +TRANSW(iwtofs, 1, 1, 0, 1, 1, 0, S,0,S,0, alf2, _env_, gen_helper_istofs); +TRANSW(fdtoid, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_fdtoid); +TRANSW(fxtoid, 1, 1, 0, 1, 1, 0, D,0,X,0, alf2, _env_, gen_helper_fxtoid); +TRANSW(idtofd, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_idtofd); +TRANSW(idtofx, 1, 1, 0, 1, 1, 0, X,0,D,0, alf2, _env_, gen_helper_idtofx); +TRANSW(fxtofd, 1, 1, 0, 1, 1, 0, D,0,X,0, alf2, _env_, gen_helper_fxtofd); +TRANSW(fdtofx, 1, 1, 0, 1, 1, 0, X,0,D,0, alf2, _env_, gen_helper_fdtofx); +TRANSW(pfstoiw, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_pfstois); +TRANSW(pfstoiwtr, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_pfstoistr); +TRANSW(piwtofs, 1, 1, 0, 1, 1, 0, D,0,D,0, alf2, _env_, gen_helper_pistofs); +TRANSW(fstoid, 1, 1, 0, 1, 1, 0, D,0,S,0, alf2, _env_, gen_helper_fstoid); +TRANSW(iwtofd, 1, 1, 0, 1, 1, 0, D,0,S,0, alf2, _env_, gen_helper_istofd); +TRANSW(iwtofx, 1, 1, 0, 1, 1, 0, X,0,S,0, alf2, _env_, gen_helper_istofx); +TRANSW(fstofd, 1, 1, 0, 1, 1, 0, D,0,S,0, alf2, _env_, gen_helper_fstofd); +TRANSW(fstofx, 1, 1, 0, 1, 1, 0, X,0,S,0, alf2, _env_, gen_helper_fstofx); +TRANSW(pfstofd, 1, 1, 0, 1, 1, 0, D,0,S,0, alf2, _env_, gen_helper_fstofd); +TRANSW(fdtoiw, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtois); +TRANSW(fxtoiw, 1, 1, 0, 1, 1, 0, S,0,X,0, alf2, _env_, gen_helper_fxtois); +TRANSW(fdtoiwtr, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtoistr); +TRANSW(idtofs, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_idtofs); +TRANSW(fdtofs, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtofs); +TRANSW(fxtofs, 1, 1, 0, 1, 1, 0, S,0,X,0, alf2, _env_, gen_helper_fxtofs); +TRANSW(pfdtoiw, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtois); +TRANSW(pfdtoiwtr, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtoistr); +TRANSW(pfdtofs, 1, 1, 0, 1, 1, 0, S,0,D,0, alf2, _env_, gen_helper_fdtofs); +TRANSW(udivw, 0, 0, 0, 0, 0, 1, S,S,S,0, alf1, _tag_, gen_udivs); +TRANSW(udivd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _tag_, gen_udivd); +TRANSW(sdivw, 0, 0, 0, 0, 0, 1, S,S,S,0, alf1, _tag_, gen_sdivs); +TRANSW(sdivd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _tag_, gen_sdivd); +TRANSW(udivx, 0, 0, 0, 0, 0, 1, S,D,S,0, alf1, _tag_, gen_udivx); +TRANSW(umodx, 0, 0, 0, 0, 0, 1, S,D,S,0, alf1, _tag_, gen_umodx); +TRANSW(sdivx, 0, 0, 0, 0, 0, 1, S,D,S,0, alf1, _tag_, gen_sdivx); +TRANSW(smodx, 0, 0, 0, 0, 0, 1, S,D,S,0, alf1, _tag_, gen_smodx); +TRANSW(fxaddss, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxaddss); +TRANSW(fxadddd, 1, 1, 0, 1, 1, 0, D,X,D,0, alf1, _env_, gen_helper_fxadddd); +TRANSW(fxaddsx, 1, 1, 0, 1, 1, 0, X,X,S,0, alf1, _env_, gen_helper_fxaddsx); +TRANSW(fxadddx, 1, 1, 0, 1, 1, 0, X,X,D,0, alf1, _env_, gen_helper_fxadddx); +TRANSW(fxaddxs, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxaddxs); +TRANSW(fxaddxd, 1, 1, 0, 1, 1, 0, D,X,X,0, alf1, _env_, gen_helper_fxaddxd); +TRANSW(fxaddxx, 1, 1, 0, 1, 1, 0, X,X,X,0, alf1, _env_, gen_helper_fxaddxx); +TRANSW(fxdivss, 0, 0, 0, 0, 0, 1, S,X,S,0, alf1, _env_, gen_helper_fxdivss); +TRANSW(fxsubss, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxsubss); +TRANSW(fxdivdd, 0, 0, 0, 0, 0, 1, D,X,D,0, alf1, _env_, gen_helper_fxdivdd); +TRANSW(fxsubdd, 1, 1, 0, 1, 1, 0, D,X,D,0, alf1, _env_, gen_helper_fxsubdd); +TRANSW(fxdivsx, 0, 0, 0, 0, 0, 1, X,X,S,0, alf1, _env_, gen_helper_fxdivsx); +TRANSW(fxsubsx, 1, 1, 0, 1, 1, 0, X,X,S,0, alf1, _env_, gen_helper_fxsubsx); +TRANSW(fxdivdx, 0, 0, 0, 0, 0, 1, X,X,D,0, alf1, _env_, gen_helper_fxdivdx); +TRANSW(fxsubdx, 1, 1, 0, 1, 1, 0, X,X,D,0, alf1, _env_, gen_helper_fxsubdx); +TRANSW(fxdivxs, 0, 0, 0, 0, 0, 1, S,X,X,0, alf1, _env_, gen_helper_fxdivxs); +TRANSW(fxsubxs, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxsubxs); +TRANSW(fxdivxd, 0, 0, 0, 0, 0, 1, D,X,X,0, alf1, _env_, gen_helper_fxdivxd); +TRANSW(fxsubxd, 1, 1, 0, 1, 1, 0, D,X,X,0, alf1, _env_, gen_helper_fxsubxd); +TRANSW(fxdivxx, 0, 0, 0, 0, 0, 1, X,X,X,0, alf1, _env_, gen_helper_fxdivxx); +TRANSW(fxsubxx, 1, 1, 0, 1, 1, 0, X,X,X,0, alf1, _env_, gen_helper_fxsubxx); +TRANSW(fxmulss, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxmulss); +TRANSW(fxmuldd, 1, 1, 0, 1, 1, 0, D,X,D,0, alf1, _env_, gen_helper_fxmuldd); +TRANSW(fxmulsx, 1, 1, 0, 1, 1, 0, X,X,S,0, alf1, _env_, gen_helper_fxmulsx); +TRANSW(fxmuldx, 1, 1, 0, 1, 1, 0, X,X,D,0, alf1, _env_, gen_helper_fxmuldx); +TRANSW(fxmulxs, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxmulxs); +TRANSW(fxmulxd, 1, 1, 0, 1, 1, 0, D,X,X,0, alf1, _env_, gen_helper_fxmulxd); +TRANSW(fxmulxx, 1, 1, 0, 1, 1, 0, X,X,X,0, alf1, _env_, gen_helper_fxmulxx); +TRANSW(fxrsubss, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxrsubss); +TRANSW(fxrsubdd, 1, 1, 0, 1, 1, 0, D,X,D,0, alf1, _env_, gen_helper_fxrsubdd); +TRANSW(fxrsubsx, 1, 1, 0, 1, 1, 0, X,X,S,0, alf1, _env_, gen_helper_fxrsubsx); +TRANSW(fxrsubdx, 1, 1, 0, 1, 1, 0, X,X,D,0, alf1, _env_, gen_helper_fxrsubdx); +TRANSW(fxsqrtisx, 0, 0, 0, 0, 0, 1, X,0,S,0, alf2, _env_, gen_helper_fstofx); +TRANSW(fxsqrtidx, 0, 0, 0, 0, 0, 1, X,0,D,0, alf2, _env_, gen_helper_fdtofx); +TRANSW(fxsqrtixx, 0, 0, 0, 0, 0, 1, X,0,X,0, alf2, _, gen_movx); +TRANSW(fxsqrtuxx, 0, 0, 0, 0, 0, 1, X,X,X,0, alf1, _, gen_fxsqrtuxx); +TRANSW(fxsqrtusx, 0, 0, 0, 0, 0, 1, X,S,X,0, alf1, _, gen_fxsqrtusx); +TRANSW(fxsqrtudx, 0, 0, 0, 0, 0, 1, X,D,X,0, alf1, _, gen_fxsqrtudx); +TRANSW(fxsqrttxx, 0, 0, 0, 0, 0, 1, X,X,X,0, alf1, _env_, gen_helper_fxsqrttxx); +TRANSW(fxsqrttsx, 0, 0, 0, 0, 0, 1, X,S,X,0, alf1, _env_, gen_helper_fxsqrttsx); +TRANSW(fxsqrttdx, 0, 0, 0, 0, 0, 1, X,D,X,0, alf1, _env_, gen_helper_fxsqrttdx); +TRANSW(fxdivtss, 0, 0, 0, 0, 0, 1, S,S,X,0, alf1, _env_, gen_helper_fxdivtss); +TRANSW(fxdivtdd, 0, 0, 0, 0, 0, 1, D,D,X,0, alf1, _env_, gen_helper_fxdivtdd); +TRANSW(fxdivtsx, 0, 0, 0, 0, 0, 1, X,S,X,0, alf1, _env_, gen_helper_fxdivtsx); +TRANSW(fxdivtdx, 0, 0, 0, 0, 0, 1, X,D,X,0, alf1, _env_, gen_helper_fxdivtdx); +TRANSW(movfi, 2, 1, 0, 2, 1, 0, S,0,X,0, alf2, _, gen_movfi); +TRANSW(movif, 2, 1, 0, 2, 1, 0, X,D,S,0, alf1, _, gen_movif); +TRANSW(pminub, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pminub); +TRANSW(pminsh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pminsh); +TRANSW(pmaxub, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxub); +TRANSW(pmaxsh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxsh); +TRANSW(punpckhbh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpckhbh); +TRANSW(punpcklbh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpcklbh); +TRANSW(punpckhhw, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpckhhw); +TRANSW(punpcklhw, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpcklhw); +TRANSW(punpckhwd, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpckhwd); +TRANSW(punpcklwd, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_punpcklwd); +TRANSW(pmovmskps, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmovmskps); +TRANSW(pmovmskpd, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmovmskpd); +TRANSW(packsshb, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_packsshb); +TRANSW(packushb, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_packushb); +TRANSW(packsswh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_packsswh); +TRANSW(paddb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_add8_i64); +TRANSW(paddh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_add16_i64); +TRANSW(paddw, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_add32_i64); +TRANSW(paddd, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_add_i64); +TRANSW(paddsb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_paddsb); +TRANSW(paddsh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_paddsh); +TRANSW(pmovmskb, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmovmskb); +TRANSW(paddusb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_paddusb); +TRANSW(paddush, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_paddush); +TRANSW(psubb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_sub8_i64); +TRANSW(psubh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_sub16_i64); +TRANSW(psubw, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_vec_sub32_i64); +TRANSW(psubd, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, tcg_gen_sub_i64); +TRANSW(psubsb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_psubsb); +TRANSW(psubsh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_psubsh); +TRANSW(psubusb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_psubusb); +TRANSW(psubush, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_psubush); +TRANSW(psrlqh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_psrlqh); +TRANSW(psrlql, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_psrlql); +TRANSW(psllqh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_psllqh); +TRANSW(psllql, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_psllql); +TRANSW(psrlw, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psrlw); +TRANSW(psrlh, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psrlh); +TRANSW(psraw, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psraw); +TRANSW(psrah, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psrah); +TRANSW(psllw, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psllw); +TRANSW(psllh, 3, 1, 0, 3, 1, 0, D,D,D,0, alf1, _, gen_helper_psllh); +TRANSW(pshufw, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_pshufw); +TRANSW(pshufh, 0, 1, 0, 0, 1, 0, D,0,D,0, alf2_pshufh, _, gen_helper_pshufh); +TRANSW(pcmpeqb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpeqb); +TRANSW(pcmpeqh, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpeqh); +TRANSW(pcmpeqw, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpeqw); +TRANSW(pcmpgtb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpgtb); +TRANSW(pcmpgth, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpgth); +TRANSW(pcmpgtw, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpgtw); +TRANSW(pmulhh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmulhh); +TRANSW(pmullh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmullh); +TRANSW(pmaddh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmaddh); +TRANSW(pmulhuh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_pmulhuh); +TRANSW(psadbw, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_helper_psadbw); +TRANSW(pextrh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_pextrh); +TRANSW(pinsh, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1_lit8, _, gen_pinsh); +TRANSW(pavgusb, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pavgusb); +TRANSW(pavgush, 1, 0, 0, 1, 0, 0, D,D,D,0, alf1, _, gen_helper_pavgush); +TRANSW(mulw, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _, tcg_gen_mul_i32); +TRANSW(muld, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, tcg_gen_mul_i64); +TRANSW(umulx, 1, 1, 0, 1, 1, 0, D,S,S,0, alf1, _, gen_umulx); +TRANSW(smulx, 1, 1, 0, 1, 1, 0, D,S,S,0, alf1, _, gen_smulx); +TRANSW(insfw, 1, 1, 0, 1, 1, 0, S,S,S,S, alf21, _, gen_insfs); +TRANSD(insfd, 1, 1, 0, 1, 1, 0, D,D,D,D, alf21, gen_insfd); +TRANSW(fxcmpudsf, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxcmpudsf); +TRANSW(fxcmpodsf, 1, 1, 0, 1, 1, 0, S,X,S,0, alf1, _env_, gen_helper_fxcmpodsf); +TRANSW(fxcmpuddf, 1, 1, 0, 1, 1, 0, S,X,D,0, alf1, _env_, gen_helper_fxcmpuddf); +TRANSW(fxcmpoddf, 1, 1, 0, 1, 1, 0, S,X,D,0, alf1, _env_, gen_helper_fxcmpoddf); +TRANSW(fxcmpudxf, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxcmpudxf); +TRANSW(fxcmpodxf, 1, 1, 0, 1, 1, 0, S,X,X,0, alf1, _env_, gen_helper_fxcmpodxf); +TRANSW(fcmpeqs, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpeqs); +TRANSW(fcmplts, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmplts); +TRANSW(fcmples, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmples); +TRANSW(fcmpuods, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpuods); +TRANSW(fcmpneqs, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpneqs); +TRANSW(fcmpnlts, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpnlts); +TRANSW(fcmpnles, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpnles); +TRANSW(fcmpods, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpods); +TRANSW(fcmpeqd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpeqd); +TRANSW(fcmpltd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpltd); +TRANSW(fcmpled, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpled); +TRANSW(fcmpuodd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpuodd); +TRANSW(fcmpneqd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpneqd); +TRANSW(fcmpnltd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpnltd); +TRANSW(fcmpnled, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpnled); +TRANSW(fcmpodd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpodd); +TRANSW(fcmpudsf, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpudsf); +TRANSW(fcmpodsf, 1, 1, 0, 1, 1, 0, S,S,S,0, alf1, _env_, gen_helper_fcmpodsf); +TRANSW(fcmpuddf, 1, 1, 0, 1, 1, 0, S,D,D,0, alf1, _env_, gen_helper_fcmpuddf); +TRANSW(fcmpoddf, 1, 1, 0, 1, 1, 0, S,D,D,0, alf1, _env_, gen_helper_fcmpoddf); +TRANSW(pfadds, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_pfadds); +TRANSW(pfaddd, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_faddd); +TRANSW(pfsubs, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_pfsubs); +TRANSW(pfsubd, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_fsubd); +TRANSW(pfmins, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfmins); +TRANSW(pfmind, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmind); +TRANSW(pfmaxs, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfmaxs); +TRANSW(pfmaxd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmaxd); +TRANSW(pfmuls, 1, 1, 4, 1, 1, 4, D,D,D,0, alf1, _env_, gen_helper_pfmuls); +TRANSW(pfmuld, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fmuld); +TRANSW(pfcmpeqs, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpeqs); +TRANSW(pfcmplts, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmplts); +TRANSW(pfcmples, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmples); +TRANSW(pfcmpuods, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpuods); +TRANSW(pfcmpneqs, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpneqs); +TRANSW(pfcmpnlts, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpnlts); +TRANSW(pfcmpnles, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpnles); +TRANSW(pfcmpods, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_pfcmpods); +TRANSW(pfcmpeqd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpeqd); +TRANSW(pfcmpltd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpltd); +TRANSW(pfcmpled, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpled); +TRANSW(pfcmpuodd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpuodd); +TRANSW(pfcmpneqd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpneqd); +TRANSW(pfcmpnltd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpnltd); +TRANSW(pfcmpnled, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpnled); +TRANSW(pfcmpodd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _env_, gen_helper_fcmpodd); +TRANSW(pandd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, tcg_gen_and_i64); +TRANSW(pandnd, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, gen_andn_i64); +TRANSW(pord, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, tcg_gen_or_i64); +TRANSW(pxord, 1, 1, 0, 1, 1, 0, D,D,D,0, alf1, _, tcg_gen_xor_i64); +TRANSW(psrld, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_psrld); +TRANSW(pslld, 0, 1, 0, 0, 1, 0, D,D,D,0, alf1, _, gen_pslld); +TRANSW(fdivs, 0, 0, 0, 0, 0, 1, S,S,S,0, alf1, _env_, gen_helper_fdivs); +TRANSW(fdivd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _env_, gen_helper_fdivd); +TRANSW(pfdivs, 0, 0, 0, 0, 0, 1, S,S,S,0, alf1, _env_, gen_helper_fdivs); +TRANSW(pfdivd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _env_, gen_helper_fdivd); +TRANSW(fsqrts, 0, 0, 0, 0, 0, 1, S,0,S,0, alf2, _env_, gen_helper_fsqrts); +TRANSW(fsqrtid, 0, 0, 0, 0, 0, 1, D,0,D,0, alf2, _, tcg_gen_mov_i64); +TRANSW(pfsqrts, 0, 0, 0, 0, 0, 1, S,0,S,0, alf2, _env_, gen_helper_fsqrts); +TRANSW(frcps, 0, 0, 0, 0, 0, 1, S,0,S,0, alf2, _env_, gen_helper_frcps); +TRANSW(fsqrttd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _env_, gen_helper_fsqrttd); +TRANSW(pfsqrttd, 0, 0, 0, 0, 0, 1, D,D,D,0, alf1, _env_, gen_helper_fsqrttd); +TRANSW(frsqrts, 0, 0, 0, 0, 0, 1, S,0,S,0, alf2, _env_, gen_helper_frsqrts); +TRANSD(rww, 1, 0, 0, 0, 0, 0, 0,0,S,0, alf15, gen_rws); +TRANSD(rwd, 1, 0, 0, 0, 0, 0, 0,0,D,0, alf15, gen_rwd); +TRANSD(rrw, 1, 0, 0, 0, 0, 0, S,0,0,0, alf16, gen_rrs); +TRANSD(rrd, 1, 0, 0, 0, 0, 0, D,0,0,0, alf16, gen_rrd); +TRANSW(getsp, 1, 0, 0, 0, 0, 0, D,0,S,0, alf2, _env_, gen_helper_getsp); +//aptoap, 1, 1, 0, 1, 1, 0, Q,Q,S,0, alf11, AF_PAIR +//getva, 1, 0, 0, 1, 0, 0, D,Q,S,0, alf11 +//tdtomp, 1, 1, 0, 1, 1, 0, D,D,D,0, alf11, AF_REMOVED_IN_V3 +//odtoap, 1, 1, 0, 1, 1, 0, Q,Q,D,0, alf11, AF_REMOVED_IN_V3 +//cast, 1, 1, 0, 1, 1, 0, Q,Q,Q,0, alf11, AF_REMOVED_IN_V3 +//gettd, 1, 0, 0, 1, 0, 0, D,0,D,0, alf12, AF_REMOVED_IN_V3 +//getsod, 1, 1, 0, 1, 1, 0, Q,0,Q,0, alf12, AF_REMOVED_IN_V3 + +//andw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//andnw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//orw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//ornw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//xorw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//xornw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//addw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//subw_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//sclw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//scrw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//shlw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//shrw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//sarw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//umulx_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//smulx_fb, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//incw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//decw_fb, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//andw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//andnw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//orw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//ornw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//xorw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//xornw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//addw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//subw_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//sclw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//scrw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//shlw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//shrw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//sarw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//umulx_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//smulx_fh, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//incw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//decw_fh, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//andw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//andnw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//orw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//ornw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//xorw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//xornw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//addw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//subw_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//sclw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//scrw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//shlw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//shrw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//sarw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//umulx_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//smulx_fw, 1, 0, 0, 1, 0, 0, S,S,S,0, alf11 +//incw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 +//decw_fw, 1, 0, 0, 1, 0, 0, S,S,S,S, alf21 + +#define TRANS_ICOMB(NAME, C0, C1, C2, C3, C4, C5, OP2) \ + TRANSC(glue3(and_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_AND, OP2); \ + TRANSC(glue3(and_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_AND, OP2); \ + TRANSC(glue3(andn_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_ANDN, OP2); \ + TRANSC(glue3(andn_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_ANDN, OP2); \ + TRANSC(glue3(or_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_OR, OP2); \ + TRANSC(glue3(or_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_OR, OP2); \ + TRANSC(glue3(orn_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_ORN, OP2); \ + TRANSC(glue3(orn_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_ORN, OP2); \ + TRANSC(glue3(xor_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_XOR, OP2); \ + TRANSC(glue3(xor_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_XOR, OP2); \ + TRANSC(glue3(xorn_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_XORN, OP2); \ + TRANSC(glue3(xorn_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_XORN, OP2); \ + TRANSC(glue3(merge_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_MERGE, OP2); \ + TRANSC(glue3(merge_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_MERGE, OP2); \ + TRANSC(glue3(add_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_ADD, OP2); \ + TRANSC(glue3(add_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_ADD, OP2); \ + TRANSC(glue3(sub_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SUB, OP2); \ + TRANSC(glue3(sub_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SUB, OP2); \ + TRANSC(glue3(scl_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SCL, OP2); \ + TRANSC(glue3(scl_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SCL, OP2); \ + TRANSC(glue3(scr_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SCR, OP2); \ + TRANSC(glue3(scr_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SCR, OP2); \ + TRANSC(glue3(shl_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SHL, OP2); \ + TRANSC(glue3(shl_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SHL, OP2); \ + TRANSC(glue3(shr_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SHR, OP2); \ + TRANSC(glue3(shr_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SHR, OP2); \ + TRANSC(glue3(sar_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_SAR, OP2); \ + TRANSC(glue3(sar_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_SAR, OP2); \ + TRANSC(glue3(getf_, NAME, w), C0, C1, C2, C3, C4, C5, S,S,S,S, alf21, gen_icomb_i32, ICOMB_GETF, OP2); \ + TRANSC(glue3(getf_, NAME, d), C0, C1, C2, C3, C4, C5, D,D,D,D, alf21, gen_icomb_i64, ICOMB_GETF, OP2) + +TRANS_ICOMB(and, 0, 1, 0, 0, 1, 0, ICOMB_AND); +TRANS_ICOMB(andn, 0, 1, 0, 0, 1, 0, ICOMB_ANDN); +TRANS_ICOMB(or, 0, 1, 0, 0, 1, 0, ICOMB_OR); +TRANS_ICOMB(orn, 0, 1, 0, 0, 1, 0, ICOMB_ORN); +TRANS_ICOMB(xor, 0, 1, 0, 0, 1, 0, ICOMB_XOR); +TRANS_ICOMB(xorn, 0, 1, 0, 0, 1, 0, ICOMB_XORN); +TRANS_ICOMB(rsub, 0, 1, 0, 0, 1, 0, ICOMB_RSUB); +TRANS_ICOMB(add, 0, 1, 0, 0, 1, 0, ICOMB_ADD); +TRANS_ICOMB(sub, 0, 1, 0, 0, 1, 0, ICOMB_SUB); + +TRANS_ICOMB(merge, 0, V1_2, 0, 0, V1_2, 0, ICOMB_MERGE); +TRANS_ICOMB(scl, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SCL); +TRANS_ICOMB(scr, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SCR); +TRANS_ICOMB(shl, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SHL); +TRANS_ICOMB(shr, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SHR); +TRANS_ICOMB(sar, 0, V1_2, 0, 0, V1_2, 0, ICOMB_SAR); +TRANS_ICOMB(getf, 0, V1_2, 0, 0, V1_2, 0, ICOMB_GETF); + +TRANSC(fmul_adds, 1, 1, 4, 1, 1, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_MUL, FCOMB_ADD); +TRANSC(fmul_addd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_MUL, FCOMB_ADD); +TRANSC(fmul_subs, 1, 1, 4, 1, 1, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_MUL, FCOMB_SUB); +TRANSC(fmul_subd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_MUL, FCOMB_SUB); +TRANSC(fmul_rsubs, 1, 1, 4, 1, 1, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_MUL, FCOMB_RSUB); +TRANSC(fmul_rsubd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_MUL, FCOMB_RSUB); + +TRANSC(pfmul_adds, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_ADD); +TRANSC(pfmul_addd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_MUL, FCOMB_ADD); +TRANSC(pfmul_subs, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_SUB); +TRANSC(pfmul_subd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_MUL, FCOMB_SUB); +TRANSC(pfmul_rsubs, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_RSUB); +TRANSC(pfmul_rsubd, 1, 1, 4, 1, 1, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_MUL, FCOMB_RSUB); + +TRANSC(fadd_muls, V1_2, V1_2, 0, V1_2, V1_2, 0, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_ADD, FCOMB_MUL); +TRANSC(fadd_muld, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_ADD, FCOMB_MUL); +TRANSC(fsub_muls, V1_2, V1_2, 0, V1_2, V1_2, 0, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_SUB, FCOMB_MUL); +TRANSC(fsub_muld, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_SUB, FCOMB_MUL); + +TRANSC(pfadd_muls, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_MUL); +TRANSC(pfadd_muld, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_ADD, FCOMB_MUL); +TRANSC(pfsub_muls, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_MUL); +TRANSC(pfsub_muld, V1_2, V1_2, 0, V1_2, V1_2, 0, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_SUB, FCOMB_MUL); diff --git a/target/e2k/trans/alop-v2.c.inc b/target/e2k/trans/alop-v2.c.inc new file mode 100644 index 0000000000..a1574b9631 --- /dev/null +++ b/target/e2k/trans/alop-v2.c.inc @@ -0,0 +1,42 @@ +TRANSW(bitrevw, 2, 2, 0, 2, 2, 0, S,0,S,0, alf2, _, gen_bitrevs); +TRANSW(bitrevd, 2, 2, 0, 2, 2, 0, D,0,D,0, alf2, _, gen_bitrevd); +TRANSW(lzcnts, 0, 2, 0, 0, 2, 0, S,0,S,0, alf2, _, gen_lzcnts); +TRANSW(lzcntd, 0, 2, 0, 0, 2, 0, D,0,D,0, alf2, _, gen_lzcntd); +TRANSW(popcnts, 0, 2, 0, 0, 2, 0, S,0,S,0, alf2, _, tcg_gen_ctpop_i32); +TRANSW(popcntd, 0, 2, 0, 0, 2, 0, D,0,D,0, alf2, _, tcg_gen_ctpop_i64); +TRANSW(fdtoidtr, 2, 2, 0, 2, 2, 0, D,0,D,0, alf2, _env_, gen_helper_fdtoidtr); +TRANSW(fxtoidtr, 2, 2, 0, 2, 2, 0, D,0,X,0, alf2, _env_, gen_helper_fxtoidtr); +TRANSW(fstoidtr, 2, 2, 0, 2, 2, 0, D,0,S,0, alf2, _env_, gen_helper_fstoidtr); +TRANSW(fxtoiwtr, 2, 2, 0, 2, 2, 0, S,0,X,0, alf2, _env_, gen_helper_fxtoistr); +TRANSW(movx, 2, 2, 0, 2, 2, 0, X,0,X,0, alf2, _, gen_movx); +TRANSW(movxa, 2, 2, 0, 2, 2, 0, X,0,X,0, alf2, _, gen_movxa); +TRANSW(movxc, 2, 2, 0, 2, 2, 0, X,0,X,0, alf2, _, gen_movxc); +TRANSW(pmulubhh, 0, 2, 0, 0, 2, 0, D,D,D,0, alf1, _, gen_helper_pmulubhh); +TRANSW(pshufb, 2, 2, 0, 2, 2, 0, D,D,D,D, alf21, _, gen_helper_pshufb); +TRANSW(pmerge, 2, 2, 0, 2, 2, 0, D,D,D,D, alf21, _, gen_helper_pmerge); + +TRANSC(fadd_adds, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_ADD, FCOMB_ADD); +TRANSC(fadd_addd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_ADD, FCOMB_ADD); +TRANSC(fsub_adds, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_SUB, FCOMB_ADD); +TRANSC(fsub_addd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_SUB, FCOMB_ADD); +TRANSC(fadd_subs, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_ADD, FCOMB_SUB); +TRANSC(fadd_subd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_ADD, FCOMB_SUB); +TRANSC(fsub_subs, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_SUB, FCOMB_SUB); +TRANSC(fsub_subd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_SUB, FCOMB_SUB); +TRANSC(fadd_rsubs, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_ADD, FCOMB_RSUB); +TRANSC(fadd_rsubd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_ADD, FCOMB_RSUB); +TRANSC(fsub_rsubs, 2, 2, 4, 2, 2, 4, S,S,S,S, alf21, gen_fcomb_i32, FCOMB_SUB, FCOMB_RSUB); +TRANSC(fsub_rsubd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_fcomb_i64, FCOMB_SUB, FCOMB_RSUB); + +TRANSC(pfadd_adds, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_ADD); +TRANSC(pfadd_addd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_ADD, FCOMB_ADD); +TRANSC(pfsub_adds, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_ADD); +TRANSC(pfsub_addd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_SUB, FCOMB_ADD); +TRANSC(pfadd_subs, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_SUB); +TRANSC(pfadd_subd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_ADD, FCOMB_SUB); +TRANSC(pfsub_subs, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_SUB); +TRANSC(pfsub_subd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_SUB, FCOMB_SUB); +TRANSC(pfadd_rsubs, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_RSUB); +TRANSC(pfadd_rsubd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_ADD, FCOMB_RSUB); +TRANSC(pfsub_rsubs, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_RSUB); +TRANSC(pfsub_rsubd, 2, 2, 4, 2, 2, 4, D,D,D,D, alf21, gen_pfcomb_i64, FCOMB_SUB, FCOMB_RSUB); diff --git a/target/e2k/trans/alop-v3.c.inc b/target/e2k/trans/alop-v3.c.inc new file mode 100644 index 0000000000..ddeb8094a5 --- /dev/null +++ b/target/e2k/trans/alop-v3.c.inc @@ -0,0 +1,79 @@ +TRANSW(umulhd, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _, gen_umulhd); +TRANSW(smulhd, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _, gen_smulhd); +TRANSW(pminsb, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pminsb); +TRANSW(pminuh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pminuh); +TRANSW(pmaxsb, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxsb); +TRANSW(pmaxuh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxuh); +TRANSW(pcmpeqd, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpeqd); +TRANSW(pcmpgtd, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pcmpgtd); +TRANSW(mpsadbh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_mpsadbh); +TRANSW(pmaddubsh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_pmaddubsh); +TRANSW(pmulhrsh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_pmulhrsh); +TRANSW(phminposuh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_phminposuh); +TRANSW(packuswh, 0, 3, 0, 0, 3, 0, D,D,D,0, alf1, _, gen_helper_packuswh); +TRANSW(fstoifs, 3, 3, 0, 3, 3, 0, S,S,S,0, alf1, _env_, gen_helper_fstoifs); +TRANSW(fdtoifd, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _env_, gen_helper_fdtoifd); +TRANSW(pfstoifs, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _env_, gen_helper_pfstoifs); +TRANSW(pfdtoifd, 3, 3, 0, 3, 3, 0, D,D,D,0, alf1, _env_, gen_helper_fdtoifd); +TRANSW(pfhadds, 3, 3, 4, 3, 3, 4, D,D,D,0, alf1, _env_, gen_helper_pfhadds); +TRANSW(pfhsubs, 3, 3, 4, 3, 3, 4, D,D,D,0, alf1, _env_, gen_helper_pfhsubs); +TRANSW(pfaddsubs, 3, 3, 4, 3, 3, 4, D,D,D,0, alf1, _env_, gen_helper_pfaddsubs); +TRANSW(pminuw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pminuw); +TRANSW(pminsw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pminsw); +TRANSW(pmaxuw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxuw); +TRANSW(pmaxsw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_pmaxsw); +TRANSW(phaddh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phaddh); +TRANSW(phaddw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phaddw); +TRANSW(phaddsh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phaddsh); +TRANSW(phsubh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phsubh); +TRANSW(phsubw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phsubw); +TRANSW(phsubsh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_phsubsh); +TRANSW(psignb, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_psignb); +TRANSW(psignh, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_psignh); +TRANSW(psignw, 3, 0, 0, 3, 0, 0, D,D,D,0, alf1, _, gen_helper_psignw); + +//puttst, 0, 0, 0, 3, 0, 0, D,0,D,0, alf12 + +//andd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11 +//andnd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11 +//ord_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11 +//ornd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11 +//xord_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11 +//xornd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11 +//addd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11 +//subd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf11 +//scld_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21 +//scrd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21 +//shld_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21 +//shrd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21 +//sard_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21 +//incd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21 +//decd_fd, 3, 0, 0, 3, 0, 0, S,D,D,0, alf21 + +TRANSC(pfhadd_adds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_ADD); +TRANSC(pfhsub_adds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_ADD); +TRANSC(pfaddsub_adds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_ADD); +TRANSC(pfhadd_subs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_SUB); +TRANSC(pfhsub_subs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_SUB); +TRANSC(pfaddsub_subs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_SUB); +TRANSC(pfadd_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_HADD); +TRANSC(pfsub_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_HADD); +TRANSC(pfhadd_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_HADD); +TRANSC(pfhsub_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_HADD); +TRANSC(pfmul_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_HADD); +TRANSC(pfaddsub_hadds, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_HADD); +TRANSC(pfadd_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_HSUB); +TRANSC(pfsub_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_HSUB); +TRANSC(pfhadd_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_HSUB); +TRANSC(pfhsub_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_HSUB); +TRANSC(pfmul_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_HSUB); +TRANSC(pfaddsub_hsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_HSUB); +TRANSC(pfhadd_rsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_RSUB); +TRANSC(pfhsub_rsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_RSUB); +TRANSC(pfaddsub_rsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_RSUB); +TRANSC(pfadd_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADD, FCOMB_ADDSUB); +TRANSC(pfsub_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_SUB, FCOMB_ADDSUB); +TRANSC(pfhadd_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HADD, FCOMB_ADDSUB); +TRANSC(pfhsub_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_HSUB, FCOMB_ADDSUB); +TRANSC(pfmul_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_MUL, FCOMB_ADDSUB); +TRANSC(pfaddsub_addsubs, 3, 3, 4, 3, 3, 4, D,D,D,D, alf21, gen_pfcomb_i32, FCOMB_ADDSUB, FCOMB_ADDSUB); diff --git a/target/e2k/trans/alop-v4.c.inc b/target/e2k/trans/alop-v4.c.inc new file mode 100644 index 0000000000..4ef323cd51 --- /dev/null +++ b/target/e2k/trans/alop-v4.c.inc @@ -0,0 +1,3 @@ +TRANSW(fscales, 0, 4, 0, 0, 4, 0, S,S,S,0, alf1, _env_, gen_helper_fscales); +TRANSW(fscaled, 0, 4, 0, 0, 4, 0, D,D,S,0, alf1, _env_, gen_helper_fscaled); +TRANSW(fxscalesx, 0, 4, 0, 0, 4, 0, X,X,S,0, alf1, _env_, gen_helper_fxscalesx); diff --git a/target/e2k/trans/alop-v5.c.inc b/target/e2k/trans/alop-v5.c.inc new file mode 100644 index 0000000000..563ec5957e --- /dev/null +++ b/target/e2k/trans/alop-v5.c.inc @@ -0,0 +1,239 @@ +//ldq, 5, 0, 5, 5, 0, 5, Q,D,D,0, alf1_mas, AF_PAIR +TRANSM(ldqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_FLAT); +TRANSM(ldcsqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_CS); +TRANSM(lddsqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_DS); +TRANSM(ldesqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_ES); +TRANSM(ldfsqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_FS); +TRANSM(ldgsqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_GS); +TRANSM(ldssqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_SS); +TRANSM(ldgdqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas, gen_addr_i64, gen_ld_raw_i128, MO_UO, ADDR_GD); +//ldcudqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas +//ldapqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas +TRANSM(stqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_FLAT); +TRANSA(staaqp, 0, 0, 5, 0, 0, 5, P,0,0,0, alf10_mas, OP_STAAQP, gen_staaqp); +TRANSM(stcsqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_CS); +TRANSM(stdsqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_DS); +TRANSM(stesqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_ES); +TRANSM(stfsqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_FS); +TRANSM(stgsqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_GS); +TRANSM(stssqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_SS); +TRANSM(stgdqp, 0, 0, 5, 0, 0, 5, P,S,S,0, alf3_mas, gen_addr_i64, gen_st_raw_i128, MO_UO, ADDR_GD); +//stapqp, 0, 0, 5, 0, 0, 5, P,Q,S,0, alf3_mas +TRANSM(stmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_FLAT); +TRANSM(stcsmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_CS); +TRANSM(stdsmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_DS); +TRANSM(stesmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_ES); +TRANSM(stfsmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_FS); +TRANSM(stgsmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_GS); +TRANSM(stssmqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_SS); +TRANSM(stgdmqp, 0, 0, 5, 0, 0, 5, P,S,S,0, alf3_mas, gen_addr_src1_i64, gen_stm_raw_i128, MO_UO, ADDR_GD); +//stapmqp, 0, 0, 5, 0, 0, 5, P,Q,S,0, alf13_mas +//ldrqp, 5, 0, 5, 5, 0, 5, P,D,D,0, alf1_mas +//strqp, 0, 0, 5, 0, 0, 5, P,D,D,0, alf3_mas +TRANSA(puttagqp, 5, 5, 0, 5, 5, 0, P,P,S,0, alf1, OP_PUTTAGQP, gen_puttagqp); + +TRANSW(pmullw, 0, 5, 0, 0, 5, 0, D,D,D,0, alf1, _, gen_pmullw); +TRANSW(psrcw, 5, 5, 0, 5, 5, 0, D,D,D,0, alf1, _, gen_psrcd); +TRANSW(psrcd, 5, 5, 0, 5, 5, 0, D,D,D,0, alf1, _, gen_psrcw); + +TRANSW(addcd, 0, 5, 0, 0, 5, 0, D,D,D,S, alf21, _, gen_addcd); +TRANSW(addcd_c, 0, 5, 0, 0, 5, 0, D,D,D,S, alf21, _, gen_addcd_c); +TRANSW(subcd, 0, 5, 0, 0, 5, 0, D,D,D,S, alf21, _, gen_subcd); +TRANSW(subcd_c, 0, 5, 0, 0, 5, 0, D,D,D,S, alf21, _, gen_subcd_c); +TRANSW(getfzs, 5, 5, 5, 5, 5, 5, S,S,S,0, alf1, _, gen_getfzs); +TRANSW(getfzd, 5, 5, 5, 5, 5, 5, D,D,D,0, alf1, _, gen_getfzd); +TRANSW(qpsrlw, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrlw); +TRANSW(qpsrlh, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrlh); +TRANSW(qpsraw, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsraw); +TRANSW(qpsrah, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrah); +TRANSW(qpsllw, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsllw); +TRANSW(qpsllh, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsllh); +TRANSW(qpsrld, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrld); +TRANSW(qpslld, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpslld); +TRANSW(qpand, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _, gen_qpand); +TRANSW(qpandn, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _, gen_qpandn); +TRANSW(qpor, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _, gen_qpor); +TRANSW(qpxor, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _, gen_qpxor); +TRANSW(qpminuw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminuw); +TRANSW(qpminsw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminsw); +TRANSW(qpmaxuw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxuw); +TRANSW(qpmaxsw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxsw); +TRANSW(qpcmpeqd, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpeqd); +TRANSW(qphaddh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphaddh); +TRANSW(qphaddw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphaddw); +TRANSW(qphaddsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphaddsh); +TRANSW(qpcmpgtd, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpgtd); +TRANSW(qphsubh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphsubh); +TRANSW(qphsubw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphsubw); +TRANSW(qphsubsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_helper_qphsubsh); +TRANSW(qpsrcw, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrcw); +TRANSW(qpsrcd, 5, 5, 0, 5, 5, 0, P,P,D,0, alf1, _, gen_qpsrcd); +TRANSW(qpmsk2sgnb, 5, 5, 0, 5, 5, 0, P,P,S,0, alf1, _, gen_helper_qpmsk2sgnb); +TRANSW(qpsignb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsignb); +TRANSW(qpsignh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsignh); +TRANSW(qpsignw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsignw); +TRANSW(qpsgn2mskb, 5, 5, 0, 5, 5, 0, S,0,P,0, alf2, _, gen_helper_qpsgn2mskb); +TRANSW(qppackdl, 5, 5, 0, 5, 5, 0, P,D,D,0, alf1, _, gen_qppackdl); +TRANSW(qpswitchw, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _, gen_qpswitchw); +TRANSW(qpswitchd, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _, gen_qpswitchd); +TRANSW(qpminub, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminub); +TRANSW(qpminsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminsh); +TRANSW(qpmaxub, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxub); +TRANSW(qpmaxsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxsh); +TRANSW(qpminsb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminsb); +TRANSW(qpminuh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpminuh); +TRANSW(qpmaxsb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxsb); +TRANSW(qpmaxuh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpmaxuh); +TRANSW(qpacksshb, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpacksshb); +TRANSW(qpaddb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddb); +TRANSW(qpackushb, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpackushb); +TRANSW(qpaddh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddh); +TRANSW(qpacksswh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpacksswh); +TRANSW(qpaddsb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddsb); +TRANSW(qpackuswh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpackuswh); +TRANSW(qpaddsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddsh); +TRANSW(qpaddusb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddusb); +TRANSW(qpaddush, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddush); +TRANSW(qpaddw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddw); +TRANSW(qpaddd, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpaddd); +TRANSW(qpsubb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubb); +TRANSW(qpsubh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubh); +TRANSW(qpsubsb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubsb); +TRANSW(qpsubsh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubsh); +TRANSW(qpsubusb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubusb); +TRANSW(qpsubush, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubush); +TRANSW(qpsubw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubw); +TRANSW(qpsubd, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpsubd); +TRANSW(qpcmpeqb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpeqb); +TRANSW(qpmulhh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmulhh); +TRANSW(qpcmpeqh, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpeqh); +TRANSW(qpmullh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmullh); +TRANSW(qpcmpeqw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpeqw); +TRANSW(qpmaddh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmaddh); +TRANSW(qpcmpgtb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpgtb); +TRANSW(qpmulhuh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmulhuh); +TRANSW(qpcmpgth, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpgth); +TRANSW(qpsadbw, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpsadbw); +TRANSW(qpcmpgtw, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpcmpgtw); +TRANSW(qpmulubhh, 0, 5, 0, 0, 5, 0, P,D,P,0, alf1, _, gen_helper_qpmulubhh); +TRANSW(qpavgusb, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpavgusb); +TRANSW(qpmullw, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmullw); +TRANSW(qpavgush, 5, 0, 0, 5, 0, 0, P,P,P,0, alf1, _, gen_qpavgush); +TRANSW(qpmaddubsh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmaddubsh); +TRANSW(qpmulhrsh, 0, 5, 0, 0, 5, 0, P,P,P,0, alf1, _, gen_qpmulhrsh); +TRANSW(qphminposuh, 0, 5, 0, 0, 5, 0, D,P,P,0, alf1, _, gen_helper_qphminposuh); +TRANSW(qpmpsadbh, 0, 5, 0, 0, 5, 0, P,P,S,0, alf1, _, gen_helper_qpmpsadbh); +TRANSW(qpfstois, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpfstois); +TRANSW(qpfstoistr, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpfstoistr); +TRANSW(qpistofs, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpistofs); +TRANSW(qpfstoid, 5, 5, 0, 5, 5, 0, P,0,D,0, alf2, _env_, gen_helper_qpfstoid); +TRANSW(qpfstoidtr, 5, 5, 0, 5, 5, 0, P,0,D,0, alf2, _env_, gen_helper_qpfstoidtr); +TRANSW(qpistofd, 5, 5, 0, 5, 5, 0, P,0,D,0, alf2, _env_, gen_helper_qpistofd); +TRANSW(qpfstofd, 5, 5, 0, 5, 5, 0, P,0,D,0, alf2, _env_, gen_helper_qpfstofd); +TRANSW(qpfdtois, 5, 5, 0, 5, 5, 0, D,0,P,0, alf2, _env_, gen_helper_qpfdtois); +TRANSW(qpfdtoistr, 5, 5, 0, 5, 5, 0, D,0,P,0, alf2, _env_, gen_helper_qpfdtoistr); +TRANSW(qpidtofs, 5, 5, 0, 5, 5, 0, D,0,P,0, alf2, _env_, gen_helper_qpidtofs); +TRANSW(qpfdtofs, 5, 5, 0, 5, 5, 0, D,0,P,0, alf2, _env_, gen_helper_qpfdtofs); +TRANSW(qpfdtoid, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpfdtoid); +TRANSW(qpfdtoidtr, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpfdtoidtr); +TRANSW(qpidtofd, 5, 5, 0, 5, 5, 0, P,0,P,0, alf2, _env_, gen_qpidtofd); +TRANSW(qpfstoifs, 5, 5, 0, 5, 5, 0, P,D,P,0, alf1, _env_, gen_qpfstoifs); +TRANSW(qpfdtoifd, 5, 5, 0, 5, 5, 0, P,D,P,0, alf1, _env_, gen_qpfdtoifd); +TRANSW(qpfadds, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfadds); +TRANSW(qpfaddd, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfaddd); +TRANSW(qpfsubs, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfsubs); +TRANSW(qpfsubd, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfsubd); +TRANSW(qpfmins, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfmins); +TRANSW(qpfmind, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfmind); +TRANSW(qpfmaxs, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfmaxs); +TRANSW(qpfmaxd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfmaxd); +TRANSW(qpfmuls, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfmuls); +TRANSW(qpfmuld, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfmuld); +TRANSW(qpfcmpeqs, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpeqs); +TRANSW(qpfcmplts, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmplts); +TRANSW(qpfcmples, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmples); +TRANSW(qpfcmpuods, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpuods); +TRANSW(qpfcmpneqs, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpneqs); +TRANSW(qpfcmpnlts, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpnlts); +TRANSW(qpfcmpnles, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpnles); +TRANSW(qpfcmpods, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpods); +TRANSW(qpfcmpeqd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpeqd); +TRANSW(qpfcmpltd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpltd); +TRANSW(qpfcmpled, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpled); +TRANSW(qpfcmpuodd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpuodd); +TRANSW(qpfcmpneqd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpneqd); +TRANSW(qpfcmpnltd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpnltd); +TRANSW(qpfcmpnled, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpnled); +TRANSW(qpfcmpodd, 5, 5, 0, 5, 5, 0, P,P,P,0, alf1, _env_, gen_qpfcmpodd); +TRANSW(qpfhadds, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_helper_qpfhadds); +TRANSW(qpfhsubs, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_helper_qpfhsubs); +TRANSW(qpfaddsubs, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfaddsubs); +TRANSW(qpfaddsubd, 5, 5, 5, 5, 5, 5, P,P,P,0, alf1, _env_, gen_qpfaddsubd); +//plog_and, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS +//plog_xor, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS +//plog_sel3, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS +//plog_mjr, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS +//plog_or, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21, AF_ALIAS +TRANSW(plog, 5, 5, 0, 5, 5, 0, D,D,D,D, alf21_log, _, gen_plog); +//qplog_and, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS +//qplog_xor, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS +//qplog_sel3, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS +//qplog_mjr, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS +//qplog_or, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_lt3, AF_ALIAS +TRANSW(qplog, 5, 5, 7, 5, 5, 7, P,P,P,P, alf21_log, _, gen_qplog); +TRANSW(qppermb, 5, 5, 0, 5, 5, 0, P,P,P,P, alf21, _, gen_helper_qppermb); +TRANSW(qpshufb, 5, 5, 0, 5, 5, 0, P,P,P,P, alf21, _, gen_helper_qpshufb); +TRANSW(qpmerge, 5, 5, 0, 5, 5, 0, P,P,P,P, alf21, _, gen_qpmerge); + +TRANSC(qpfadd_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_ADD); +TRANSC(qpfadd_addd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADD, FCOMB_ADD); +TRANSC(qpfsub_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_ADD); +TRANSC(qpfsub_addd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_SUB, FCOMB_ADD); +TRANSC(qpfhadd_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_ADD); +TRANSC(qpfhsub_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_ADD); +TRANSC(qpfmul_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_ADD); +TRANSC(qpfmul_addd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_MUL, FCOMB_ADD); +TRANSC(qpfaddsub_adds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_ADD); +TRANSC(qpfaddsub_addd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADDSUB, FCOMB_ADD); +TRANSC(qpfadd_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_SUB); +TRANSC(qpfadd_subd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADD, FCOMB_SUB); +TRANSC(qpfsub_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_SUB); +TRANSC(qpfsub_subd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_SUB, FCOMB_SUB); +TRANSC(qpfhadd_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_SUB); +TRANSC(qpfhsub_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_SUB); +TRANSC(qpfmul_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_SUB); +TRANSC(qpfmul_subd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_MUL, FCOMB_SUB); +TRANSC(qpfaddsub_subs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_SUB); +TRANSC(qpfaddsub_subd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADDSUB, FCOMB_SUB); +TRANSC(qpfadd_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_HADD); +TRANSC(qpfsub_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_HADD); +TRANSC(qpfhadd_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_HADD); +TRANSC(qpfhsub_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_HADD); +TRANSC(qpfmul_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_HADD); +TRANSC(qpfaddsub_hadds, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_HADD); +TRANSC(qpfadd_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_HSUB); +TRANSC(qpfsub_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_HSUB); +TRANSC(qpfhadd_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_HSUB); +TRANSC(qpfhsub_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_HSUB); +TRANSC(qpfmul_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_HSUB); +TRANSC(qpfaddsub_hsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_HSUB); +TRANSC(qpfadd_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_RSUB); +TRANSC(qpfadd_rsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADD, FCOMB_RSUB); +TRANSC(qpfsub_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_RSUB); +TRANSC(qpfsub_rsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_SUB, FCOMB_RSUB); +TRANSC(qpfhadd_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_RSUB); +TRANSC(qpfhsub_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_RSUB); +TRANSC(qpfmul_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_RSUB); +TRANSC(qpfmul_rsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_MUL, FCOMB_RSUB); +TRANSC(qpfaddsub_rsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_RSUB); +TRANSC(qpfaddsub_rsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADDSUB, FCOMB_RSUB); +TRANSC(qpfadd_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADD, FCOMB_ADDSUB); +TRANSC(qpfadd_addsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADD, FCOMB_ADDSUB); +TRANSC(qpfsub_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_SUB, FCOMB_ADDSUB); +TRANSC(qpfsub_addsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_SUB, FCOMB_ADDSUB); +TRANSC(qpfhadd_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HADD, FCOMB_ADDSUB); +TRANSC(qpfhsub_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_HSUB, FCOMB_ADDSUB); +TRANSC(qpfmul_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_MUL, FCOMB_ADDSUB); +TRANSC(qpfmul_addsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_MUL, FCOMB_ADDSUB); +TRANSC(qpfaddsub_addsubs, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i32, FCOMB_ADDSUB, FCOMB_ADDSUB); +TRANSC(qpfaddsub_addsubd, 5, 5, 5, 5, 5, 5, P,P,P,P, alf21, gen_qpfcomb_i64, FCOMB_ADDSUB, FCOMB_ADDSUB); diff --git a/target/e2k/trans/alop-v6.c.inc b/target/e2k/trans/alop-v6.c.inc new file mode 100644 index 0000000000..f34bb22aa3 --- /dev/null +++ b/target/e2k/trans/alop-v6.c.inc @@ -0,0 +1,66 @@ +//vfbgv, 0, 6, 0, 0, 6, 0, S,S,S,0, alf1 +//modbgv, 0, 6, 0, 0, 6, 0, S,0,S,0, alf2 +//mkfsw, 0, 6, 0, 0, 6, 0, D,S,S,0, alf1 +TRANSD(ibranchd, 6, 0, 0, 0, 0, 0, D,0,D,0, alf2, gen_ibranchd); +TRANSD(icalld, 6, 0, 0, 0, 0, 0, D,0,D,0, alf2_icalld, gen_icalld); +TRANSD(pmrgp, 6, 6, 0, 6, 6, 0, D,D,D,0, alf1, gen_merged); +TRANSD(qpmrgp, 6, 6, 0, 6, 6, 0, P,P,P,0, alf1, gen_qpmrgp); +TRANSW(qpsrad, 6, 6, 0, 6, 6, 0, P,P,D,0, alf1, _, gen_qpsrad); +TRANSW(pcmpeqbop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqbop); +TRANSW(pcmpeqhop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqhop); +TRANSW(pcmpeqwop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqwop); +TRANSW(pcmpeqdop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqdop); +TRANSW(pcmpgtbop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtbop); +TRANSW(pcmpgthop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgthop); +TRANSW(pcmpgtwop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtwop); +TRANSW(pcmpgtdop, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtdop); +TRANSW(pcmpeqbap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqbap); +TRANSW(pcmpeqhap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqhap); +TRANSW(pcmpeqwap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqwap); +TRANSW(pcmpeqdap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpeqdap); +TRANSW(pcmpgtbap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtbap); +TRANSW(pcmpgthap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgthap); +TRANSW(pcmpgtwap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtwap); +TRANSW(pcmpgtdap, 6, 0, 0, 6, 0, 0, D,D,D,0, alf7, _, gen_pcmpgtdap); +TRANSW(qpcmpeqbop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqbop); +TRANSW(qpcmpeqhop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqhop); +TRANSW(qpcmpeqwop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqwop); +TRANSW(qpcmpeqdop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqdop); +TRANSW(qpcmpgtbop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtbop); +TRANSW(qpcmpgthop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgthop); +TRANSW(qpcmpgtwop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtwop); +TRANSW(qpcmpgtdop, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtdop); +TRANSW(qpcmpeqbap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqbap); +TRANSW(qpcmpeqhap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqhap); +TRANSW(qpcmpeqwap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqwap); +TRANSW(qpcmpeqdap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpeqdap); +TRANSW(qpcmpgtbap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtbap); +TRANSW(qpcmpgthap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgthap); +TRANSW(qpcmpgtwap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtwap); +TRANSW(qpcmpgtdap, 6, 0, 0, 6, 0, 0, D,P,P,0, alf7, _, gen_qpcmpgtdap); +TRANSW(qpcext_0x00, 6, 6, 0, 6, 6, 0, P,0,D,0, alf2, _, gen_qpcext_0x00); +TRANSW(qpcext_0x7f, 6, 6, 0, 6, 6, 0, P,0,D,0, alf2, _, gen_qpcext_0x7f); +TRANSW(qpcext_0x80, 6, 6, 0, 6, 6, 0, P,0,D,0, alf2, _, gen_qpcext_0x80); +TRANSW(qpcext_0xff, 6, 6, 0, 6, 6, 0, P,0,D,0, alf2, _, gen_qpcext_0xff); +TRANSW(fmas, 6, 6, 6, 6, 6, 6, S,S,S,S, alf21, _env_, gen_helper_fmas); +TRANSW(fmad, 6, 6, 6, 6, 6, 6, D,D,D,D, alf21, _env_, gen_helper_fmad); +TRANSW(fmss, 6, 6, 6, 6, 6, 6, S,S,S,S, alf21, _env_, gen_helper_fmss); +TRANSW(fmsd, 6, 6, 6, 6, 6, 6, D,D,D,D, alf21, _env_, gen_helper_fmsd); +TRANSW(fnmas, 6, 6, 6, 6, 6, 6, S,S,S,S, alf21, _env_, gen_helper_fnmas); +TRANSW(fnmad, 6, 6, 6, 6, 6, 6, D,D,D,D, alf21, _env_, gen_helper_fnmad); +TRANSW(fnmss, 6, 6, 6, 6, 6, 6, S,S,S,S, alf21, _env_, gen_helper_fnmss); +TRANSW(fnmsd, 6, 6, 6, 6, 6, 6, D,D,D,D, alf21, _env_, gen_helper_fnmsd); +TRANSW(qpfmas, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmas); +TRANSW(qpfmad, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmad); +TRANSW(qpfmss, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmss); +TRANSW(qpfmsd, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmsd); +TRANSW(qpfnmas, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfnmas); +TRANSW(qpfnmad, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfnmad); +TRANSW(qpfnmss, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfnmss); +TRANSW(qpfnmsd, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfnmsd); +TRANSW(qpfmass, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmass); +TRANSW(qpfmasd, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmasd); +TRANSW(qpfmsas, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmsas); +TRANSW(qpfmsad, 6, 6, 6, 6, 6, 6, P,P,P,P, alf21, _env_, gen_helper_qpfmsad); +TRANSW(clmull, 6, 6, 0, 6, 6, 0, D,D,D,0, alf1, _, gen_helper_clmull); +TRANSW(clmulh, 6, 6, 0, 6, 6, 0, D,D,D,0, alf1, _, gen_helper_clmulh); diff --git a/target/e2k/trans/alop-v7.c.inc b/target/e2k/trans/alop-v7.c.inc new file mode 100644 index 0000000000..0edc8b5ded --- /dev/null +++ b/target/e2k/trans/alop-v7.c.inc @@ -0,0 +1,40 @@ +//qpmgme, 7, 0, 0, 0, 0, 0, P,P,P,P, alf21 +//qpaesltr, 0, 7, 0, 0, 0, 0, P,P,P,P, alf21 +//qpaesiltr, 0, 7, 0, 0, 0, 0, P,P,P,P, alf21 +//qpkuzltr, 0, 7, 0, 0, 0, 0, P,0,P,0, alf12 +//qpsbgltrlo, 0, 7, 0, 0, 0, 0, P,P,P,0, alf11 +//qpsbgltrhi, 0, 7, 0, 0, 0, 0, P,P,P,0, alf11 +//qpaesebgn, 0, 0, 7, 0, 0, 0, P,P,P,P, alf21 +//qpaesdbgn, 0, 0, 7, 0, 0, 0, P,P,P,P, alf21 +//qpcm2b, 7, 7, 0, 7, 7, 0, P,0,S,0, alf12 +//qpcm2h, 7, 7, 0, 7, 7, 0, P,0,S,0, alf12 +//qpcm2w, 7, 7, 0, 7, 7, 0, P,0,S,0, alf12 +//qpcm2d, 7, 7, 0, 7, 7, 0, P,0,S,0, alf12 +//qpkuzebgn, 0, 0, 7, 0, 0, 0, P,P,P,P, alf21 +//qps2cmh, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11 +//qps2cmw, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11 +//qps2cmd, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11 +//qps2mb, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11 +//qps2mh, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11 +//qps2mw, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11 +//qps2md, 7, 7, 0, 7, 7, 0, S,P,P,0, alf11 +TRANSW(qpackhbss, 7, 7, 0, 7, 7, 0, P,P,P,0, alf1, _, gen_qpackhbss); +TRANSW(qpackhbus, 7, 7, 0, 7, 7, 0, P,P,P,0, alf1, _, gen_qpackhbus); +TRANSW(qpackwhss, 7, 7, 0, 7, 7, 0, P,P,P,0, alf1, _, gen_qpackwhss); +TRANSW(qpackwhus, 7, 7, 0, 7, 7, 0, P,P,P,0, alf1, _, gen_qpackwhus); +//qpfstobf, 7, 7, 0, 7, 7, 0, P,P,P,0, alf11 +//qpidotsbwss, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qpidotsbwus, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qpidotsbwuu, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qpidotshwss, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qpbfdots, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qptbl_0, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qptbl_1, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qptbl_2, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qptbl_3, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qptbl_4, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qptbl_5, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qptbl_6, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qptbl_7, 7, 7, 0, 7, 7, 0, P,P,P,P, alf21 +//qpinss, 7, 7, 0, 7, 7, 0, P,P,S,P, alf21_lt3 +//qpinsd, 7, 7, 0, 7, 7, 0, P,P,D,P, alf21_lt3 diff --git a/target/e2k/translate.c b/target/e2k/translate.c index 369a4694f1..9d11ff2401 100644 --- a/target/e2k/translate.c +++ b/target/e2k/translate.c @@ -513,10 +513,12 @@ typedef struct DisasContext { UnpackedBundle bundle; Cs0 cs0; Cs1 cs1; + int cur_alop; Alop alops[6]; target_ulong pc; int mmuidx; bool loop_mode; + bool only_check; TCGv_i32 lp[7]; @@ -3760,38 +3762,30 @@ IMPL_GEN_ALOPF2_ENV_QQ(gen_qpfdtoid, gen_helper_fdtoid) IMPL_GEN_ALOPF2_ENV_QQ(gen_qpfdtoidtr, gen_helper_fdtoidtr) IMPL_GEN_ALOPF2_ENV_QQ(gen_qpidtofd, gen_helper_idtofd) -#define IMPL_GEN_PLOG(name, base) \ - static void name(TCGv_i64 ret, uint32_t table, TCGv_i64 s1, \ - TCGv_i64 s2, TCGv_i64 s3) \ - { \ - TCGv_i32 t0 = tcg_constant_i32(base + table); \ - gen_helper_plog(ret, t0, s1, s2, s3); \ - } +static void gen_plog(TCGv_i64 ret, uint32_t table, TCGv_i64 s1, + TCGv_i64 s2, TCGv_i64 s3) +{ + TCGv_i32 t0 = tcg_constant_i32(table); + gen_helper_plog(ret, t0, s1, s2, s3); +} -IMPL_GEN_PLOG(gen_plog_0x00, 0x00) -IMPL_GEN_PLOG(gen_plog_0x80, 0x80) +static void gen_qplog(TCGv_i128 ret, uint32_t opc, TCGv_i128 s1, + TCGv_i128 s2, TCGv_i128 s3) +{ + TCGv_i64 t0 = tcg_temp_new_i64(); + TCGv_i64 t1 = tcg_temp_new_i64(); + TCGv_i64 t2 = tcg_temp_new_i64(); + TCGv_i64 t3 = tcg_temp_new_i64(); + TCGv_i64 t4 = tcg_temp_new_i64(); + TCGv_i64 t5 = tcg_temp_new_i64(); -#define IMPL_GEN_ALOPF21_LOG_QQQQ(name, op) \ - static void name(TCGv_i128 ret, uint32_t opc, TCGv_i128 s1, \ - TCGv_i128 s2, TCGv_i128 s3) \ - { \ - TCGv_i64 t0 = tcg_temp_new_i64(); \ - TCGv_i64 t1 = tcg_temp_new_i64(); \ - TCGv_i64 t2 = tcg_temp_new_i64(); \ - TCGv_i64 t3 = tcg_temp_new_i64(); \ - TCGv_i64 t4 = tcg_temp_new_i64(); \ - TCGv_i64 t5 = tcg_temp_new_i64(); \ - \ - gen_qpunpackdl(t0, t1, s1); \ - gen_qpunpackdl(t2, t3, s2); \ - gen_qpunpackdl(t4, t5, s3); \ - op(t0, opc, t0, t2, t4); \ - op(t1, opc, t1, t3, t5); \ - gen_qppackdl(ret, t0, t1); \ - } - -IMPL_GEN_ALOPF21_LOG_QQQQ(gen_qplog_0x00, gen_plog_0x00) -IMPL_GEN_ALOPF21_LOG_QQQQ(gen_qplog_0x80, gen_plog_0x80) + gen_qpunpackdl(t0, t1, s1); + gen_qpunpackdl(t2, t3, s2); + gen_qpunpackdl(t4, t5, s3); + gen_plog(t0, opc, t0, t2, t4); + gen_plog(t1, opc, t1, t3, t5); + gen_qppackdl(ret, t0, t1); +} #define IMPL_GEN_ALOPF7_QQB(name, op1, op2) \ static void name(TCGv_i64 ret, TCGv_i128 s1, TCGv_i128 s2) \ @@ -4583,7 +4577,7 @@ static void gen_staad(Alop *alop) } } -static void gen_staaw(Alop *alop, MemOp memop) +static void gen_staaw_(Alop *alop, MemOp memop) { DisasContext *ctx = alop->ctx; uint8_t mas = alop->mas; @@ -4635,6 +4629,21 @@ static void gen_staaw(Alop *alop, MemOp memop) } } +static void gen_staab(Alop *alop) +{ + gen_staaw_(alop, MO_8); +} + +static void gen_staah(Alop *alop) +{ + gen_staaw_(alop, MO_16); +} + +static void gen_staaw(Alop *alop) +{ + gen_staaw_(alop, MO_32); +} + #define IMPL_ALOPF1_BASIC(name, R, S1, S2, T, code) \ static void glue3(name, _, glue3(R, S1, S2))(Alop *alop, T) \ { \ @@ -4750,7 +4759,7 @@ static void gen_staaw(Alop *alop, MemOp memop) #define IMPL_ALOPF21_LOG(name, R, S1, S2, S3) \ IMPL_ALOPF21_BASIC(name, R, S1, S2, S3, \ void (*op)(temp(R), uint32_t, temp(S1), temp(S2), temp(S3)), \ - { (*op)(r.val, alop->als.opc1, s1.val, s2.val, s3.val); }) + { (*op)(r.val, ((alop->ales.opc2 & 1) << 7) | alop->als.opc1, s1.val, s2.val, s3.val); }) IMPL_ALOPF1(gen_alf1, s, s, s) IMPL_ALOPF1(gen_alf1, d, s, s) @@ -4792,6 +4801,7 @@ IMPL_ALOPF1_ENV(gen_alf1_env, q, q, q) IMPL_ALOPF1_LIT8(gen_alf1_lit8, d, d, d) IMPL_ALOPF2(gen_alf2, s, s) +IMPL_ALOPF2(gen_alf2, d, s) IMPL_ALOPF2(gen_alf2, d, d) IMPL_ALOPF2(gen_alf2, s, x) IMPL_ALOPF2(gen_alf2, x, x) @@ -5594,9 +5604,9 @@ static void gen_alop_simple(Alop *alop) case OP_PUTTAGS: gen_puttags(alop); break; case OP_PUTTAGD: gen_puttagd(alop); break; case OP_PUTTAGQP: gen_puttagqp(alop); break; - case OP_STAAB: gen_staaw(alop, MO_8); break; - case OP_STAAH: gen_staaw(alop, MO_16); break; - case OP_STAAW: gen_staaw(alop, MO_32); break; + case OP_STAAB: gen_staab(alop); break; + case OP_STAAH: gen_staah(alop); break; + case OP_STAAW: gen_staaw(alop); break; case OP_STAAD: gen_staad(alop); break; case OP_STAAQ: gen_staaq(alop); break; case OP_STAAQP: gen_staaqp(alop); break; @@ -5835,10 +5845,10 @@ static void gen_alop_simple(Alop *alop) case OP_QPMERGE: gen_alf21_qqqq(alop, gen_qpmerge); break; case OP_QPSHUFB: gen_alf21_qqqq(alop, gen_helper_qpshufb); break; case OP_QPPERMB: gen_alf21_qqqq(alop, gen_helper_qppermb); break; - case OP_PLOG_0x00: gen_alf21_log_dddd(alop, gen_plog_0x00); break; - case OP_PLOG_0x80: gen_alf21_log_dddd(alop, gen_plog_0x80); break; - case OP_QPLOG_0x00: gen_alf21_log_qqqq(alop, gen_qplog_0x00); break; - case OP_QPLOG_0x80: gen_alf21_log_qqqq(alop, gen_qplog_0x80); break; + case OP_PLOG_0x00: + case OP_PLOG_0x80: gen_alf21_log_dddd(alop, gen_plog); break; + case OP_QPLOG_0x00: + case OP_QPLOG_0x80: gen_alf21_log_qqqq(alop, gen_qplog); break; case OP_FMAS: gen_alf21_env_ssss(alop, gen_helper_fmas); break; case OP_FMSS: gen_alf21_env_ssss(alop, gen_helper_fmss); break; case OP_FNMAS: gen_alf21_env_ssss(alop, gen_helper_fnmas); break; @@ -6333,7 +6343,18 @@ static inline bool rlp_is_chan_pred(uint16_t rlp, int chan) return !extract16(rlp, 15, 1) && rlp_check_chan(rlp, chan); } -static void decode_alop(Alop *alop, AlesFlag ales_present) +/* Include the auto-generated decoder for alops */ +#include "decode-alop.c.inc" + +#include "trans/alop-v1.c.inc" +#include "trans/alop-v2.c.inc" +#include "trans/alop-v3.c.inc" +#include "trans/alop-v4.c.inc" +#include "trans/alop-v5.c.inc" +#include "trans/alop-v6.c.inc" +#include "trans/alop-v7.c.inc" + +static void decode_alop_old(Alop *alop, AlesFlag ales_present) { DisasContext *ctx = alop->ctx; @@ -6552,6 +6573,23 @@ static void alop_find_max_reg_indices(Alop *alop, int *max_r_src, } } +static uint64_t alop_insn(Alop *alop) +{ + uint64_t insn = 0; + + /* ALES2/5 may be allocated but must not be used */ + bool ales_present = (alop->ctx->bundle.ales_present[alop->chan] & ALES_PRESENT) != 0; + uint16_t ales = ales_present ? alop->ales.raw : 0; + + insn = deposit64(insn, 0, 32, alop->als.raw); + insn = deposit64(insn, 32, 16, ales); + insn = deposit64(insn, 48, 3, alop->chan + (alop->chan >= 3)); + alop->mas = alop->ctx->cs1.type == CS1_MAS ? alop->ctx->cs1.mas[alop->chan] : 0; + insn = deposit64(insn, 51, 7, alop->mas); + insn = deposit64(insn, 63, 1, ales_present); + return insn; +} + static void decode_alops(DisasContext *ctx) { int i; @@ -6568,11 +6606,16 @@ static void decode_alops(DisasContext *ctx) alop->result.kind = ALOP_RESULT_NONE; if (ctx->bundle.als_present[i]) { + ctx->cur_alop = i; + alop->mas = ctx->cs1.type == CS1_MAS ? ctx->cs1.mas[i] : 0; alop->als.raw = ctx->bundle.als[i]; alop->ales.raw = ctx->bundle.ales[i]; - decode_alop(alop, ctx->bundle.ales_present[i]); + if (!decode_alop(ctx, alop_insn(alop))) { + // fallback + decode_alop_old(alop, ctx->bundle.ales_present[i]); + } } } } @@ -6677,22 +6720,31 @@ static void gen_alop(Alop *alop) tcg_gen_brcondi_i32(TCG_COND_EQ, cond, 0, skip_op); } - switch (alop->format) { - case ALOPF21_ICOMB: - gen_icomb(alop); - break; - case ALOPF21_FCOMB: - gen_fcomb(alop); - break; - case ALOPF21_PFCOMB: - gen_pfcomb(alop); - break; - case ALOPF21_QPFCOMB: - gen_qpfcomb(alop); - break; - default: - gen_alop_simple(alop); - break; + ctx->cur_alop = alop->chan; + if (!decode_alop(ctx, alop_insn(alop))) { + // fallback + switch (alop->format) { + case ALOPF21_ICOMB: + e2k_todo(ctx, "fallback icomb"); + gen_icomb(alop); + break; + case ALOPF21_FCOMB: + e2k_todo(ctx, "fallback fcomb"); + gen_fcomb(alop); + break; + case ALOPF21_PFCOMB: + e2k_todo(ctx, "fallback pfcomb"); + gen_pfcomb(alop); + break; + case ALOPF21_QPFCOMB: + e2k_todo(ctx, "fallback qpfcomb"); + gen_qpfcomb(alop); + break; + default: + e2k_todo(ctx, "fallback simple %s.%d", alop->name, alop->chan); + gen_alop_simple(alop); + break; + } } switch (alop->result.kind) { @@ -7412,10 +7464,12 @@ static target_ulong do_decode(DisasContext *ctx, CPUState *cs) return ctx->pc + 8; } + ctx->only_check = true; decode_ct_cond(ctx, &ctx->bundle); decode_cs1(ctx, &ctx->bundle); decode_cs0(ctx, &ctx->bundle); decode_alops(ctx); + ctx->only_check = false; return ctx->pc + len; }