Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Unified Diff: src/s390/simulator-s390.cc

Issue 2005493002: S390: Added remaining generated instructions to S390 simulator EVALUATE code. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Removed DecodeInstructionOriginal from unimplemented instructions; they will now return 0. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/s390/simulator-s390.cc
diff --git a/src/s390/simulator-s390.cc b/src/s390/simulator-s390.cc
index 7503b477116920d6a1c7fcc51f08dc5bdcb381bb..c57ee3269cc659bd380eae242aaedb45af831edd 100644
--- a/src/s390/simulator-s390.cc
+++ b/src/s390/simulator-s390.cc
@@ -5965,6 +5965,12 @@ uintptr_t Simulator::PopAddress() {
int r2 = AS(RREInstruction)->R2Value(); \
int length = 4;
+#define DECODE_RRE_INSTRUCTION_M3(r1, r2, m3) \
+ int r1 = AS(RREInstruction)->R1Value(); \
+ int r2 = AS(RREInstruction)->R2Value(); \
+ int m3 = AS(RREInstruction)->M3Value(); \
+ int length = 4;
+
#define DECODE_RRE_INSTRUCTION_NO_R2(r1) \
int r1 = AS(RREInstruction)->R1Value(); \
int length = 4;
@@ -6376,11 +6382,23 @@ EVALUATE(BKPT) {
return length;
}
-EVALUATE(SPM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SPM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BALR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BALR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BCTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BCTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(BCR) {
DCHECK_OPCODE(BCR);
@@ -6399,11 +6417,23 @@ EVALUATE(BCR) {
return length;
}
-EVALUATE(SVC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SVC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BSM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BSM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BASSM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BASSM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(BASR) {
DCHECK_OPCODE(BASR);
@@ -6424,11 +6454,23 @@ EVALUATE(BASR) {
return length;
}
-EVALUATE(MVCL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVCL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLCL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLCL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LPR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LPR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LNR) {
DCHECK_OPCODE(LNR);
@@ -6602,9 +6644,17 @@ EVALUATE(LDR) {
return length;
}
-EVALUATE(CDR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LER) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LER) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(STH) {
DCHECK_OPCODE(STH);
@@ -6640,7 +6690,11 @@ EVALUATE(STC) {
return length;
}
-EVALUATE(IC_z) { return DecodeInstructionOriginal(instr); }
+EVALUATE(IC_z) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(EX) {
DCHECK_OPCODE(EX);
@@ -6664,11 +6718,23 @@ EVALUATE(EX) {
return length;
}
-EVALUATE(BAL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BAL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BCT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BCT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LH) {
DCHECK_OPCODE(LH);
@@ -6684,7 +6750,11 @@ EVALUATE(LH) {
return length;
}
-EVALUATE(CH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(AH) {
DCHECK_OPCODE(AH);
@@ -6737,13 +6807,29 @@ EVALUATE(MH) {
return length;
}
-EVALUATE(BAS) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BAS) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CVD) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CVD) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CVB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CVB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(N) {
DCHECK_OPCODE(N);
@@ -6850,13 +6936,29 @@ EVALUATE(S) {
return length;
}
-EVALUATE(M) { return DecodeInstructionOriginal(instr); }
+EVALUATE(M) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(D) { return DecodeInstructionOriginal(instr); }
+EVALUATE(D) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(AL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(AL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(STD) {
DCHECK_OPCODE(STD);
@@ -6880,7 +6982,11 @@ EVALUATE(LD) {
return length;
}
-EVALUATE(CD) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CD) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(STE) {
DCHECK_OPCODE(STE);
@@ -6915,9 +7021,17 @@ EVALUATE(LE) {
return length;
}
-EVALUATE(BRXH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BRXH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BRXLE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BRXLE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(BXH) {
DCHECK_OPCODE(BXH);
@@ -6947,7 +7061,11 @@ EVALUATE(BXH) {
return length;
}
-EVALUATE(BXLE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BXLE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(SRL) {
DCHECK_OPCODE(SRL);
@@ -7060,7 +7178,11 @@ EVALUATE(SRDA) {
return length;
}
-EVALUATE(SLDA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLDA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(STM) {
DCHECK_OPCODE(STM);
@@ -7103,11 +7225,23 @@ EVALUATE(TM) {
return length;
}
-EVALUATE(MVI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TS) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TS) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(NI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(NI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CLI) {
DCHECK_OPCODE(CLI);
@@ -7120,9 +7254,17 @@ EVALUATE(CLI) {
return length;
}
-EVALUATE(OI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(OI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(XI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(XI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LM) {
DCHECK_OPCODE(LM);
@@ -7144,25 +7286,65 @@ EVALUATE(LM) {
return length;
}
-EVALUATE(MVCLE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVCLE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLCLE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLCLE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDS) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDS) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STCM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STCM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ICM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ICM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BPRP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BPRP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BPP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BPP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TRTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TRTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MVN) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVN) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(MVC) {
DCHECK_OPCODE(MVC);
@@ -7185,73 +7367,209 @@ EVALUATE(MVC) {
return length;
}
-EVALUATE(MVZ) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVZ) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(NC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(NC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(OC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(OC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(XC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(XC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MVCP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVCP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TRT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TRT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ED) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ED) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(EDMK) { return DecodeInstructionOriginal(instr); }
+EVALUATE(EDMK) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(PKU) { return DecodeInstructionOriginal(instr); }
+EVALUATE(PKU) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(UNPKU) { return DecodeInstructionOriginal(instr); }
+EVALUATE(UNPKU) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MVCIN) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVCIN) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(PKA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(PKA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(UNPKA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(UNPKA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(PLO) { return DecodeInstructionOriginal(instr); }
+EVALUATE(PLO) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LMD) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LMD) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SRP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SRP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MVO) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVO) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(PACK) { return DecodeInstructionOriginal(instr); }
+EVALUATE(PACK) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(UNPK) { return DecodeInstructionOriginal(instr); }
+EVALUATE(UNPK) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ZAP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ZAP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(AP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(AP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(UPT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(UPT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(PFPO) { return DecodeInstructionOriginal(instr); }
+EVALUATE(PFPO) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(IIHH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(IIHH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(IIHL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(IIHL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(IILH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(IILH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(IILL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(IILL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(NIHH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(NIHH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(NIHL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(NIHL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(NILH) {
DCHECK_OPCODE(NILH);
@@ -7275,9 +7593,17 @@ EVALUATE(NILL) {
return length;
}
-EVALUATE(OIHH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(OIHH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(OIHL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(OIHL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(OILH) {
DCHECK_OPCODE(OILH);
@@ -7300,17 +7626,37 @@ EVALUATE(OILL) {
return length;
}
-EVALUATE(LLIHH) { return DecodeInstructionOriginal(instr); }
-
-EVALUATE(LLIHL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLIHH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLILH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLIHL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLILL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLILH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TMLH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLILL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TMLL) {
+EVALUATE(TMLH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
+
+EVALUATE(TMLL) {
DCHECK_OPCODE(TMLL);
DECODE_RI_A_INSTRUCTION(instr, r1, i2);
int mask = i2 & 0x0000FFFF;
@@ -7368,9 +7714,17 @@ EVALUATE(TMLL) {
return length;
}
-EVALUATE(TMHH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TMHH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TMHL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TMHL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(BRAS) {
DCHECK_OPCODE(BRAS);
@@ -7479,7 +7833,11 @@ EVALUATE(LARL) {
return length;
}
-EVALUATE(LGFI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LGFI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(BRASL) {
DCHECK_OPCODE(BRASL);
@@ -7710,93 +8068,269 @@ EVALUATE(CLFI) {
return length;
}
-EVALUATE(LLHRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLHRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LGHRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LGHRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LHRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LHRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLGHRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLGHRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STHRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STHRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LGRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LGRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STGRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STGRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LGFRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LGFRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLGFRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLGFRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(EXRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(EXRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(PFDRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(PFDRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGHRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGHRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CHRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CHRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGFRL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGFRL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ECTG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ECTG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CSST) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CSST) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LPD) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LPD) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LPDG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LPDG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BRCTH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BRCTH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(AIH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(AIH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ALSIH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALSIH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ALSIHN) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALSIHN) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CIH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CIH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STCK) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STCK) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CFC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CFC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(IPM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(IPM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(HSCH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(HSCH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MSCH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MSCH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SSCH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SSCH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STSCH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STSCH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TSCH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TSCH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TPI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TPI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SAL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SAL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(RSCH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(RSCH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STCRW) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STCRW) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STCPS) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STCPS) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(RCHP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(RCHP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SCHM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SCHM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CKSM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CKSM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SAR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SAR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(EAR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(EAR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(MSR) {
DCHECK_OPCODE(MSR);
@@ -7807,49 +8341,144 @@ EVALUATE(MSR) {
return length;
}
-EVALUATE(MVST) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVST) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CUSE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CUSE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SRST) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SRST) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(XSCH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(XSCH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STCKE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STCKE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STCKF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STCKF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SRNM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SRNM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STFPC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STFPC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LFPC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LFPC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TRE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TRE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CUUTF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CUUTF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CUTFU) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CUTFU) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STFLE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STFLE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SRNMB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SRNMB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SRNMT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SRNMT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LFAS) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LFAS) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(PPA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(PPA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ETND) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ETND) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TEND) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TEND) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(NIAI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(NIAI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TABORT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TABORT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TRAP4) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TRAP4) {
+ DCHECK_OPCODE(TRAP4);
+ int length = 4;
+ // whack the space of the caller allocated stack
+ int64_t sp_addr = get_register(sp);
+ for (int i = 0; i < kCalleeRegisterSaveAreaSize / kPointerSize; ++i) {
+ // we dont want to whack the RA (r14)
+ if (i != 14) (reinterpret_cast<intptr_t*>(sp_addr))[i] = 0xdeadbabe;
+ }
+ SoftwareInterrupt(instr);
+ return length;
+}
EVALUATE(LPEBR) {
DCHECK_OPCODE(LPEBR);
@@ -7869,7 +8498,11 @@ EVALUATE(LPEBR) {
return length;
}
-EVALUATE(LNEBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LNEBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LTEBR) {
DCHECK_OPCODE(LTEBR);
@@ -7881,7 +8514,11 @@ EVALUATE(LTEBR) {
return length;
}
-EVALUATE(LCEBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LCEBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LDEBR) {
DCHECK_OPCODE(LDEBR);
@@ -7892,13 +8529,29 @@ EVALUATE(LDEBR) {
return length;
}
-EVALUATE(LXDBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LXDBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LXEBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LXEBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MXDBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MXDBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KEBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KEBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CEBR) {
DCHECK_OPCODE(CEBR);
@@ -7938,7 +8591,11 @@ EVALUATE(SEBR) {
return length;
}
-EVALUATE(MDEBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MDEBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(DEBR) {
DCHECK_OPCODE(DEBR);
@@ -7952,9 +8609,17 @@ EVALUATE(DEBR) {
return length;
}
-EVALUATE(MAEBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MAEBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MSEBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MSEBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LPDBR) {
DCHECK_OPCODE(LPDBR);
@@ -7973,7 +8638,11 @@ EVALUATE(LPDBR) {
return length;
}
-EVALUATE(LNDBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LNDBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LTDBR) {
DCHECK_OPCODE(LTDBR);
@@ -8023,7 +8692,11 @@ EVALUATE(SQDBR) {
return length;
}
-EVALUATE(SQXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SQXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(MEEBR) {
DCHECK_OPCODE(MEEBR);
@@ -8036,7 +8709,11 @@ EVALUATE(MEEBR) {
return length;
}
-EVALUATE(KDBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KDBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CDBR) {
DCHECK_OPCODE(CDBR);
@@ -8107,41 +8784,115 @@ EVALUATE(MADBR) {
return length;
}
-EVALUATE(MSDBR) { return DecodeInstructionOriginal(instr); }
-
-EVALUATE(LPXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MSDBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LNXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LPXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LTXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LNXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LCXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LTXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LEDBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LCXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LDXBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LEDBRA) {
+ DCHECK_OPCODE(LEDBRA);
+ DECODE_RRE_INSTRUCTION(r1, r2);
+ double r2_val = get_double_from_d_register(r2);
+ set_d_register_from_float32(r1, static_cast<float>(r2_val));
+ return length;
+}
-EVALUATE(LEXBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LDXBRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(FIXBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LEXBRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(FIXBRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(AXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
+
+EVALUATE(AXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TBEDR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TBEDR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TBDR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TBDR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DIEBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DIEBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(FIEBRA) {
DCHECK_OPCODE(FIEBRA);
@@ -8168,11 +8919,23 @@ EVALUATE(FIEBRA) {
return length;
}
-EVALUATE(THDER) { return DecodeInstructionOriginal(instr); }
+EVALUATE(THDER) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(THDR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(THDR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DIDBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DIDBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(FIDBRA) {
DCHECK_OPCODE(FIDBRA);
@@ -8199,15 +8962,35 @@ EVALUATE(FIDBRA) {
return length;
}
-EVALUATE(LXR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LXR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LPDFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LPDFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LNDFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LNDFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LCDFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LCDFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LZER) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LZER) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LZDR) {
DCHECK_OPCODE(LZDR);
@@ -8216,13 +8999,29 @@ EVALUATE(LZDR) {
return length;
}
-EVALUATE(LZXR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LZXR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SFPC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SFPC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SFASR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SFASR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(EFPC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(EFPC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CELFBR) {
DCHECK_OPCODE(CELFBR);
@@ -8242,19 +9041,209 @@ EVALUATE(CDLFBR) {
return length;
}
-EVALUATE(CXLFBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXLFBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CEFBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CEFBRA) {
+ DCHECK_OPCODE(CEFBRA);
+ DECODE_RRE_INSTRUCTION(r1, r2);
+ int32_t fr2_val = get_low_register<int32_t>(r2);
+ float fr1_val = static_cast<float>(fr2_val);
+ set_d_register_from_float32(r1, fr1_val);
+ return length;
+}
-EVALUATE(CDFBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDFBRA) {
+ DCHECK_OPCODE(CDFBRA);
+ DECODE_RRE_INSTRUCTION(r1, r2);
+ int32_t r2_val = get_low_register<int32_t>(r2);
+ double r1_val = static_cast<double>(r2_val);
+ set_d_register_from_double(r1, r1_val);
+ return length;
+}
-EVALUATE(CXFBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXFBRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CFEBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CFEBRA) {
+ DCHECK_OPCODE(CFEBRA);
+ DECODE_RRE_INSTRUCTION_M3(r1, r2, mask_val);
+ float r2_fval = get_float32_from_d_register(r2);
+ int32_t r1_val = 0;
+
+ SetS390RoundConditionCode(r2_fval, INT32_MAX, INT32_MIN);
+
+ switch (mask_val) {
+ case CURRENT_ROUNDING_MODE:
+ case ROUND_TO_PREPARE_FOR_SHORTER_PRECISION: {
+ r1_val = static_cast<int32_t>(r2_fval);
+ break;
+ }
+ case ROUND_TO_NEAREST_WITH_TIES_AWAY_FROM_0: {
+ float ceil_val = std::ceil(r2_fval);
+ float floor_val = std::floor(r2_fval);
+ float sub_val1 = std::fabs(r2_fval - floor_val);
+ float sub_val2 = std::fabs(r2_fval - ceil_val);
+ if (sub_val1 > sub_val2) {
+ r1_val = static_cast<int32_t>(ceil_val);
+ } else if (sub_val1 < sub_val2) {
+ r1_val = static_cast<int32_t>(floor_val);
+ } else { // round away from zero:
+ if (r2_fval > 0.0) {
+ r1_val = static_cast<int32_t>(ceil_val);
+ } else {
+ r1_val = static_cast<int32_t>(floor_val);
+ }
+ }
+ break;
+ }
+ case ROUND_TO_NEAREST_WITH_TIES_TO_EVEN: {
+ float ceil_val = std::ceil(r2_fval);
+ float floor_val = std::floor(r2_fval);
+ float sub_val1 = std::fabs(r2_fval - floor_val);
+ float sub_val2 = std::fabs(r2_fval - ceil_val);
+ if (sub_val1 > sub_val2) {
+ r1_val = static_cast<int32_t>(ceil_val);
+ } else if (sub_val1 < sub_val2) {
+ r1_val = static_cast<int32_t>(floor_val);
+ } else { // check which one is even:
+ int32_t c_v = static_cast<int32_t>(ceil_val);
+ int32_t f_v = static_cast<int32_t>(floor_val);
+ if (f_v % 2 == 0)
+ r1_val = f_v;
+ else
+ r1_val = c_v;
+ }
+ break;
+ }
+ case ROUND_TOWARD_0: {
+ // check for overflow, cast r2_fval to 64bit integer
+ // then check value within the range of INT_MIN and INT_MAX
+ // and set condition code accordingly
+ int64_t temp = static_cast<int64_t>(r2_fval);
+ if (temp < INT_MIN || temp > INT_MAX) {
+ condition_reg_ = CC_OF;
+ }
+ r1_val = static_cast<int32_t>(r2_fval);
+ break;
+ }
+ case ROUND_TOWARD_PLUS_INFINITE: {
+ r1_val = static_cast<int32_t>(std::ceil(r2_fval));
+ break;
+ }
+ case ROUND_TOWARD_MINUS_INFINITE: {
+ // check for overflow, cast r2_fval to 64bit integer
+ // then check value within the range of INT_MIN and INT_MAX
+ // and set condition code accordingly
+ int64_t temp = static_cast<int64_t>(std::floor(r2_fval));
+ if (temp < INT_MIN || temp > INT_MAX) {
+ condition_reg_ = CC_OF;
+ }
+ r1_val = static_cast<int32_t>(std::floor(r2_fval));
+ break;
+ }
+ default:
+ UNREACHABLE();
+ }
+ set_low_register(r1, r1_val);
+ return length;
+}
-EVALUATE(CFDBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CFDBRA) {
+ DCHECK_OPCODE(CFDBRA);
+ DECODE_RRE_INSTRUCTION_M3(r1, r2, mask_val);
+ double r2_val = get_double_from_d_register(r2);
+ int32_t r1_val = 0;
+
+ SetS390RoundConditionCode(r2_val, INT32_MAX, INT32_MIN);
+
+ switch (mask_val) {
+ case CURRENT_ROUNDING_MODE:
+ case ROUND_TO_PREPARE_FOR_SHORTER_PRECISION: {
+ r1_val = static_cast<int32_t>(r2_val);
+ break;
+ }
+ case ROUND_TO_NEAREST_WITH_TIES_AWAY_FROM_0: {
+ double ceil_val = std::ceil(r2_val);
+ double floor_val = std::floor(r2_val);
+ double sub_val1 = std::fabs(r2_val - floor_val);
+ double sub_val2 = std::fabs(r2_val - ceil_val);
+ if (sub_val1 > sub_val2) {
+ r1_val = static_cast<int32_t>(ceil_val);
+ } else if (sub_val1 < sub_val2) {
+ r1_val = static_cast<int32_t>(floor_val);
+ } else { // round away from zero:
+ if (r2_val > 0.0) {
+ r1_val = static_cast<int32_t>(ceil_val);
+ } else {
+ r1_val = static_cast<int32_t>(floor_val);
+ }
+ }
+ break;
+ }
+ case ROUND_TO_NEAREST_WITH_TIES_TO_EVEN: {
+ double ceil_val = std::ceil(r2_val);
+ double floor_val = std::floor(r2_val);
+ double sub_val1 = std::fabs(r2_val - floor_val);
+ double sub_val2 = std::fabs(r2_val - ceil_val);
+ if (sub_val1 > sub_val2) {
+ r1_val = static_cast<int32_t>(ceil_val);
+ } else if (sub_val1 < sub_val2) {
+ r1_val = static_cast<int32_t>(floor_val);
+ } else { // check which one is even:
+ int32_t c_v = static_cast<int32_t>(ceil_val);
+ int32_t f_v = static_cast<int32_t>(floor_val);
+ if (f_v % 2 == 0)
+ r1_val = f_v;
+ else
+ r1_val = c_v;
+ }
+ break;
+ }
+ case ROUND_TOWARD_0: {
+ // check for overflow, cast r2_val to 64bit integer
+ // then check value within the range of INT_MIN and INT_MAX
+ // and set condition code accordingly
+ int64_t temp = static_cast<int64_t>(r2_val);
+ if (temp < INT_MIN || temp > INT_MAX) {
+ condition_reg_ = CC_OF;
+ }
+ r1_val = static_cast<int32_t>(r2_val);
+ break;
+ }
+ case ROUND_TOWARD_PLUS_INFINITE: {
+ r1_val = static_cast<int32_t>(std::ceil(r2_val));
+ break;
+ }
+ case ROUND_TOWARD_MINUS_INFINITE: {
+ // check for overflow, cast r2_val to 64bit integer
+ // then check value within the range of INT_MIN and INT_MAX
+ // and set condition code accordingly
+ int64_t temp = static_cast<int64_t>(std::floor(r2_val));
+ if (temp < INT_MIN || temp > INT_MAX) {
+ condition_reg_ = CC_OF;
+ }
+ r1_val = static_cast<int32_t>(std::floor(r2_val));
+ break;
+ }
+ default:
+ UNREACHABLE();
+ }
+ set_low_register(r1, r1_val);
+ return length;
+}
-EVALUATE(CFXBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CFXBRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CLFEBR) {
DCHECK_OPCODE(CLFEBR);
@@ -8276,7 +9265,11 @@ EVALUATE(CLFDBR) {
return length;
}
-EVALUATE(CLFXBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLFXBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CELGBR) {
DCHECK_OPCODE(CELGBR);
@@ -8296,19 +9289,143 @@ EVALUATE(CDLGBR) {
return length;
}
-EVALUATE(CXLGBR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXLGBR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
+
+EVALUATE(CEGBRA) {
+ DCHECK_OPCODE(CEGBRA);
+ DECODE_RRE_INSTRUCTION(r1, r2);
+ int64_t fr2_val = get_register(r2);
+ float fr1_val = static_cast<float>(fr2_val);
+ set_d_register_from_float32(r1, fr1_val);
+ return length;
+}
+
+EVALUATE(CDGBRA) {
+ DCHECK_OPCODE(CDGBRA);
+ DECODE_RRE_INSTRUCTION(r1, r2);
+ int64_t r2_val = get_register(r2);
+ double r1_val = static_cast<double>(r2_val);
+ set_d_register_from_double(r1, r1_val);
+ return length;
+}
+
+EVALUATE(CXGBRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
+
+EVALUATE(CGEBRA) {
+ DCHECK_OPCODE(CGEBRA);
+ DECODE_RRE_INSTRUCTION_M3(r1, r2, mask_val);
+ float r2_fval = get_float32_from_d_register(r2);
+ int64_t r1_val = 0;
-EVALUATE(CEGBRA) { return DecodeInstructionOriginal(instr); }
+ SetS390RoundConditionCode(r2_fval, INT64_MAX, INT64_MIN);
-EVALUATE(CDGBRA) { return DecodeInstructionOriginal(instr); }
+ switch (mask_val) {
+ case CURRENT_ROUNDING_MODE:
+ case ROUND_TO_NEAREST_WITH_TIES_AWAY_FROM_0:
+ case ROUND_TO_PREPARE_FOR_SHORTER_PRECISION: {
+ UNIMPLEMENTED();
+ break;
+ }
+ case ROUND_TO_NEAREST_WITH_TIES_TO_EVEN: {
+ float ceil_val = std::ceil(r2_fval);
+ float floor_val = std::floor(r2_fval);
+ if (std::abs(r2_fval - floor_val) > std::abs(r2_fval - ceil_val)) {
+ r1_val = static_cast<int64_t>(ceil_val);
+ } else if (std::abs(r2_fval - floor_val) < std::abs(r2_fval - ceil_val)) {
+ r1_val = static_cast<int64_t>(floor_val);
+ } else { // check which one is even:
+ int64_t c_v = static_cast<int64_t>(ceil_val);
+ int64_t f_v = static_cast<int64_t>(floor_val);
+ if (f_v % 2 == 0)
+ r1_val = f_v;
+ else
+ r1_val = c_v;
+ }
+ break;
+ }
+ case ROUND_TOWARD_0: {
+ r1_val = static_cast<int64_t>(r2_fval);
+ break;
+ }
+ case ROUND_TOWARD_PLUS_INFINITE: {
+ r1_val = static_cast<int64_t>(std::ceil(r2_fval));
+ break;
+ }
+ case ROUND_TOWARD_MINUS_INFINITE: {
+ r1_val = static_cast<int64_t>(std::floor(r2_fval));
+ break;
+ }
+ default:
+ UNREACHABLE();
+ }
+ set_register(r1, r1_val);
+ return length;
+}
-EVALUATE(CXGBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGDBRA) {
+ DCHECK_OPCODE(CGDBRA);
+ DECODE_RRE_INSTRUCTION_M3(r1, r2, mask_val);
+ double r2_val = get_double_from_d_register(r2);
+ int64_t r1_val = 0;
-EVALUATE(CGEBRA) { return DecodeInstructionOriginal(instr); }
+ SetS390RoundConditionCode(r2_val, INT64_MAX, INT64_MIN);
-EVALUATE(CGDBRA) { return DecodeInstructionOriginal(instr); }
+ switch (mask_val) {
+ case CURRENT_ROUNDING_MODE:
+ case ROUND_TO_NEAREST_WITH_TIES_AWAY_FROM_0:
+ case ROUND_TO_PREPARE_FOR_SHORTER_PRECISION: {
+ UNIMPLEMENTED();
+ break;
+ }
+ case ROUND_TO_NEAREST_WITH_TIES_TO_EVEN: {
+ double ceil_val = std::ceil(r2_val);
+ double floor_val = std::floor(r2_val);
+ if (std::abs(r2_val - floor_val) > std::abs(r2_val - ceil_val)) {
+ r1_val = static_cast<int64_t>(ceil_val);
+ } else if (std::abs(r2_val - floor_val) < std::abs(r2_val - ceil_val)) {
+ r1_val = static_cast<int64_t>(floor_val);
+ } else { // check which one is even:
+ int64_t c_v = static_cast<int64_t>(ceil_val);
+ int64_t f_v = static_cast<int64_t>(floor_val);
+ if (f_v % 2 == 0)
+ r1_val = f_v;
+ else
+ r1_val = c_v;
+ }
+ break;
+ }
+ case ROUND_TOWARD_0: {
+ r1_val = static_cast<int64_t>(r2_val);
+ break;
+ }
+ case ROUND_TOWARD_PLUS_INFINITE: {
+ r1_val = static_cast<int64_t>(std::ceil(r2_val));
+ break;
+ }
+ case ROUND_TOWARD_MINUS_INFINITE: {
+ r1_val = static_cast<int64_t>(std::floor(r2_val));
+ break;
+ }
+ default:
+ UNREACHABLE();
+ }
+ set_register(r1, r1_val);
+ return length;
+}
-EVALUATE(CGXBRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGXBRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CLGEBR) {
DCHECK_OPCODE(CLGEBR);
@@ -8330,11 +9447,23 @@ EVALUATE(CLGDBR) {
return length;
}
-EVALUATE(CFER) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CFER) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CFDR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CFDR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CFXR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CFXR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LDGR) {
DCHECK_OPCODE(LDGR);
@@ -8347,11 +9476,23 @@ EVALUATE(LDGR) {
return length;
}
-EVALUATE(CGER) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGER) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGDR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGDR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGXR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGXR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LGDR) {
DCHECK_OPCODE(LGDR);
@@ -8362,95 +9503,275 @@ EVALUATE(LGDR) {
return length;
}
-EVALUATE(MDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MDTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MDTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DDTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DDTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ADTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ADTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SDTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SDTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LDETR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LDETR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LEDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LEDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LTDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LTDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(FIDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(FIDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MXTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MXTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DXTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DXTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(AXTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(AXTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SXTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SXTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LXDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LXDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LDXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LDXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LTXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LTXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(FIXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(FIXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGDTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGDTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CUDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CUDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(EEDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(EEDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ESDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ESDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGXTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGXTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CUXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CUXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CSXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CSXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(EEXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(EEXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ESXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ESXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDGTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDGTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDUTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDUTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDSTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDSTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CEDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CEDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(QADTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(QADTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(IEDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(IEDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(RRDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(RRDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CXGTRA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXGTRA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CXUTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXUTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CXSTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXSTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CEXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CEXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(QAXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(QAXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(IEXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(IEXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(RRXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(RRXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LPGR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LPGR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LNGR) {
DCHECK_OPCODE(LNGR);
@@ -8503,9 +9824,17 @@ EVALUATE(SGR) {
return length;
}
-EVALUATE(ALGR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALGR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLGR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLGR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(MSGR) {
DCHECK_OPCODE(MSGR);
@@ -8529,11 +9858,23 @@ EVALUATE(DSGR) {
return length;
}
-EVALUATE(LRVGR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LRVGR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LPGFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LPGFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LNGFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LNGFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LTGFR) {
DCHECK_OPCODE(LTGFR);
@@ -8558,9 +9899,20 @@ EVALUATE(LCGFR) {
return length;
}
-EVALUATE(LLGFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLGFR) {
+ DCHECK_OPCODE(LLGFR);
+ DECODE_RRE_INSTRUCTION(r1, r2);
+ int32_t r2_val = get_low_register<int32_t>(r2);
+ uint64_t r2_finalval = (static_cast<uint64_t>(r2_val) & 0x00000000ffffffff);
+ set_register(r1, r2_finalval);
+ return length;
+}
-EVALUATE(LLGTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLGTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(AGFR) {
DCHECK_OPCODE(AGFR);
@@ -8591,17 +9943,41 @@ EVALUATE(SGFR) {
return length;
}
-EVALUATE(ALGFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALGFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLGFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLGFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MSGFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MSGFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DSGFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DSGFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KMAC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KMAC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LRVR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LRVR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CGR) {
DCHECK_OPCODE(CGR);
@@ -8623,49 +9999,137 @@ EVALUATE(CLGR) {
return length;
}
-EVALUATE(KMF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KMF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KMO) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KMO) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(PCC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(PCC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KMCTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KMCTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KM) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KM) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KMC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KMC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGFR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGFR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KIMD) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KIMD) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KLMD) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KLMD) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CFDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CFDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLGDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLGDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLFDTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLFDTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BCTGR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BCTGR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CFXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CFXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLFXTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLFXTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDFTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDFTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDLGTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDLGTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDLFTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDLFTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CXFTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXFTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CXLGTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXLGTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CXLFTR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXLFTR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGRT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGRT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(NGR) {
DCHECK_OPCODE(NGR);
@@ -8722,11 +10186,23 @@ EVALUATE(FLOGR) {
return length;
}
-EVALUATE(LLGCR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLGCR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLGHR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLGHR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MLGR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MLGR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(DLGR) {
DCHECK_OPCODE(DLGR);
@@ -8748,23 +10224,59 @@ EVALUATE(DLGR) {
#endif
}
-EVALUATE(ALCGR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALCGR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLBGR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLBGR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(EPSW) { return DecodeInstructionOriginal(instr); }
+EVALUATE(EPSW) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TRTT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TRTT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TRTO) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TRTO) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TROT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TROT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TROO) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TROO) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLCR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLCR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLHR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLHR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(MLR) {
DCHECK_OPCODE(MLR);
@@ -8840,43 +10352,133 @@ EVALUATE(SLBR) {
return length;
}
-EVALUATE(CU14) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CU14) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
+
+EVALUATE(CU24) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CU24) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CU41) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CU41) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CU42) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CU42) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TRTRE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TRTRE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SRSTU) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SRSTU) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TRTE) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TRTE) { return DecodeInstructionOriginal(instr); }
+EVALUATE(AHHHR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(AHHHR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SHHHR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SHHHR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALHHHR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ALHHHR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLHHHR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLHHHR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CHHR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CHHR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(AHHLR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(AHHLR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SHHLR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SHHLR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALHHLR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ALHHLR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLHHLR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLHHLR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CHLR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CHLR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(POPCNT_Z) {
+ DCHECK_OPCODE(POPCNT_Z);
+ DECODE_RRE_INSTRUCTION(r1, r2);
+ int64_t r2_val = get_register(r2);
+ int64_t r1_val = 0;
-EVALUATE(POPCNT_Z) { return DecodeInstructionOriginal(instr); }
+ uint8_t* r2_val_ptr = reinterpret_cast<uint8_t*>(&r2_val);
+ uint8_t* r1_val_ptr = reinterpret_cast<uint8_t*>(&r1_val);
+ for (int i = 0; i < 8; i++) {
+ uint32_t x = static_cast<uint32_t>(r2_val_ptr[i]);
+#if defined(__GNUC__)
+ r1_val_ptr[i] = __builtin_popcount(x);
+#else
+#error unsupport __builtin_popcount
+#endif
+ }
+ set_register(r1, static_cast<uint64_t>(r1_val));
+ return length;
+}
-EVALUATE(LOCGR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LOCGR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(NGRK) {
DCHECK_OPCODE(NGRK);
@@ -8969,7 +10571,11 @@ EVALUATE(SLGRK) {
return length;
}
-EVALUATE(LOCR) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LOCR) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(NRK) {
DCHECK_OPCODE(NRK);
@@ -9077,7 +10683,11 @@ EVALUATE(LTG) {
return length;
}
-EVALUATE(CVBY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CVBY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(AG) {
DCHECK_OPCODE(AG);
@@ -9153,11 +10763,23 @@ EVALUATE(MSG) {
return length;
}
-EVALUATE(DSG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DSG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CVBG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CVBG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LRVG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LRVG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LT) {
DCHECK_OPCODE(LT);
@@ -9195,7 +10817,11 @@ EVALUATE(LLGF) {
return length;
}
-EVALUATE(LLGT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLGT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(AGF) {
DCHECK_OPCODE(AGF);
@@ -9227,13 +10853,29 @@ EVALUATE(SGF) {
return length;
}
-EVALUATE(ALGF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALGF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLGF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLGF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MSGF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MSGF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DSGF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DSGF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LRV) {
DCHECK_OPCODE(LRV);
@@ -9284,23 +10926,59 @@ EVALUATE(CLG) {
return length;
}
-EVALUATE(NTSTG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(NTSTG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CVDY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CVDY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CVDG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CVDG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STRVG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STRVG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLGF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLGF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LTGF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LTGF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(PFD) { return DecodeInstructionOriginal(instr); }
+EVALUATE(PFD) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(STRV) {
DCHECK_OPCODE(STRV);
@@ -9325,7 +11003,11 @@ EVALUATE(STRVH) {
return length;
}
-EVALUATE(BCTG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BCTG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(MSY) {
DCHECK_OPCODE(MSY);
@@ -9432,7 +11114,11 @@ EVALUATE(SY) {
return length;
}
-EVALUATE(MFY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MFY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(ALY) {
DCHECK_OPCODE(ALY);
@@ -9497,9 +11183,17 @@ EVALUATE(STCY) {
return length;
}
-EVALUATE(ICY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ICY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAEY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAEY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LB) {
DCHECK_OPCODE(LB);
@@ -9537,7 +11231,11 @@ EVALUATE(LHY) {
return length;
}
-EVALUATE(CHY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CHY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(AHY) {
DCHECK_OPCODE(AHY);
@@ -9577,7 +11275,11 @@ EVALUATE(SHY) {
return length;
}
-EVALUATE(MHY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MHY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(NG) {
DCHECK_OPCODE(NG);
@@ -9618,19 +11320,47 @@ EVALUATE(XG) {
return length;
}
-EVALUATE(LGAT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LGAT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MLG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MLG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DLG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DLG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ALCG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALCG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLBG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLBG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STPQ) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STPQ) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LPQ) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LPQ) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LLGH) {
DCHECK_OPCODE(LLGH);
@@ -9656,43 +11386,119 @@ EVALUATE(LLH) {
return length;
}
-EVALUATE(ML) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ML) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ALC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLGTAT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLGTAT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLGFAT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLGFAT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LBH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LBH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLCH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLCH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STCH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STCH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LHH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LHH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LLHH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LLHH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STHH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STHH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LFHAT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LFHAT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LFH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LFH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STFH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STFH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CHF) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CHF) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MVCDK) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVCDK) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MVHHI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVHHI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(MVGHI) {
DCHECK_OPCODE(MVGHI);
@@ -9714,17 +11520,41 @@ EVALUATE(MVHI) {
return length;
}
-EVALUATE(CHHSI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CHHSI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGHSI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGHSI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CHSI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CHSI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLFHSI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLFHSI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TBEGIN) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TBEGIN) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TBEGINC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TBEGINC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LMG) {
DCHECK_OPCODE(LMG);
@@ -9821,7 +11651,11 @@ EVALUATE(SLLG) {
return length;
}
-EVALUATE(CSY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CSY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(RLLG) {
DCHECK_OPCODE(RLLG);
@@ -9864,21 +11698,53 @@ EVALUATE(STMG) {
return length;
}
-EVALUATE(STMH) { return DecodeInstructionOriginal(instr); }
-
-EVALUATE(STCMH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STMH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
+
+EVALUATE(STCMH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STCMY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STCMY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDSY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDSY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDSG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDSG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BXHG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BXHG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BXLEG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BXLEG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ECAG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ECAG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(TMY) {
DCHECK_OPCODE(TMY);
@@ -9903,9 +11769,17 @@ EVALUATE(TMY) {
return length;
}
-EVALUATE(MVIY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVIY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(NIY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(NIY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CLIY) {
DCHECK_OPCODE(CLIY);
@@ -9920,9 +11794,17 @@ EVALUATE(CLIY) {
return length;
}
-EVALUATE(OIY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(OIY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(XIY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(XIY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(ASI) {
DCHECK_OPCODE(ASI);
@@ -9947,7 +11829,11 @@ EVALUATE(ASI) {
return length;
}
-EVALUATE(ALSI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALSI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(AGSI) {
DCHECK_OPCODE(AGSI);
@@ -9972,15 +11858,35 @@ EVALUATE(AGSI) {
return length;
}
-EVALUATE(ALGSI) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALGSI) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ICMH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ICMH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ICMY) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ICMY) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MVCLU) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MVCLU) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLCLU) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLCLU) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(STMY) {
DCHECK_OPCODE(STMY);
@@ -10003,7 +11909,11 @@ EVALUATE(STMY) {
return length;
}
-EVALUATE(LMH) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LMH) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LMY) {
DCHECK_OPCODE(LMY);
@@ -10026,7 +11936,11 @@ EVALUATE(LMY) {
return length;
}
-EVALUATE(TP) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TP) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(SRAK) {
DCHECK_OPCODE(SRAK);
@@ -10101,71 +12015,203 @@ EVALUATE(SLLK) {
return length;
}
-EVALUATE(LOCG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LOCG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STOCG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STOCG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LANG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LANG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAOG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAOG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAXG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAXG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAAG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAAG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAALG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAALG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LOC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LOC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(STOC) { return DecodeInstructionOriginal(instr); }
+EVALUATE(STOC) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAN) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAN) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAO) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAO) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAX) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAX) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAA) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAA) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LAAL) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LAAL) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BRXHG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BRXHG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(BRXLG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(BRXLG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(RISBLG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(RISBLG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(RNSBG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(RNSBG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ROSBG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ROSBG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(RXSBG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(RXSBG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(RISBGN) { return DecodeInstructionOriginal(instr); }
+EVALUATE(RISBGN) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(RISBHG) { return DecodeInstructionOriginal(instr); }
+EVALUATE(RISBHG) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGRJ) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGRJ) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGIT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGIT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CIT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CIT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CLFIT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CLFIT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGIJ) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGIJ) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CIJ) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CIJ) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ALHSIK) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALHSIK) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(ALGHSIK) { return DecodeInstructionOriginal(instr); }
+EVALUATE(ALGHSIK) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGRB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGRB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CGIB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CGIB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CIB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CIB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LDEB) {
DCHECK_OPCODE(LDEB);
@@ -10182,35 +12228,95 @@ EVALUATE(LDEB) {
return length;
}
-EVALUATE(LXDB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LXDB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(LXEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(LXEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MXDB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MXDB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(AEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(AEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MDEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MDEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(DEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(DEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MAEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MAEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MSEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MSEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TCEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TCEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TCDB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TCDB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TCXB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TCXB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SQEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SQEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(SQDB) {
DCHECK_OPCODE(SQDB);
@@ -10225,9 +12331,17 @@ EVALUATE(SQDB) {
return length;
}
-EVALUATE(MEEB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MEEB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(KDB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(KDB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(CDB) {
DCHECK_OPCODE(CDB);
@@ -10299,29 +12413,77 @@ EVALUATE(DDB) {
return length;
}
-EVALUATE(MADB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MADB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(MSDB) { return DecodeInstructionOriginal(instr); }
+EVALUATE(MSDB) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLDT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLDT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SRDT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SRDT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SLXT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SLXT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(SRXT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(SRXT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TDCET) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TDCET) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TDGET) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TDGET) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TDCDT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TDCDT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TDGDT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TDGDT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TDCXT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TDCXT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(TDGXT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(TDGXT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
EVALUATE(LEY) {
DCHECK_OPCODE(LEY);
@@ -10371,13 +12533,29 @@ EVALUATE(STDY) {
return length;
}
-EVALUATE(CZDT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CZDT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CZXT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CZXT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CDZT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CDZT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
-EVALUATE(CXZT) { return DecodeInstructionOriginal(instr); }
+EVALUATE(CXZT) {
+ UNIMPLEMENTED();
+ USE(instr);
+ return 0;
+}
#undef EVALUATE
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698