V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
simulator-s390.h
1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Declares a Simulator for S390 instructions if we are not generating a native
6 // S390 binary. This Simulator allows us to run and debug S390 code generation
7 // on regular desktop machines.
8 // V8 calls into generated code via the GeneratedCode wrapper,
9 // which will start execution in the Simulator or forwards to the real entry
10 // on a S390 hardware platform.
11 
12 #ifndef V8_S390_SIMULATOR_S390_H_
13 #define V8_S390_SIMULATOR_S390_H_
14 
15 #include "src/allocation.h"
16 
17 #if defined(USE_SIMULATOR)
18 // Running with a simulator.
19 
20 #include "src/assembler.h"
21 #include "src/base/hashmap.h"
22 #include "src/s390/constants-s390.h"
23 #include "src/simulator-base.h"
24 
25 namespace v8 {
26 namespace internal {
27 
28 class CachePage {
29  public:
30  static const int LINE_VALID = 0;
31  static const int LINE_INVALID = 1;
32 
33  static const int kPageShift = 12;
34  static const int kPageSize = 1 << kPageShift;
35  static const int kPageMask = kPageSize - 1;
36  static const int kLineShift = 2; // The cache line is only 4 bytes right now.
37  static const int kLineLength = 1 << kLineShift;
38  static const int kLineMask = kLineLength - 1;
39 
40  CachePage() { memset(&validity_map_, LINE_INVALID, sizeof(validity_map_)); }
41 
42  char* ValidityByte(int offset) {
43  return &validity_map_[offset >> kLineShift];
44  }
45 
46  char* CachedData(int offset) { return &data_[offset]; }
47 
48  private:
49  char data_[kPageSize]; // The cached data.
50  static const int kValidityMapSize = kPageSize >> kLineShift;
51  char validity_map_[kValidityMapSize]; // One byte per line.
52 };
53 
54 class Simulator : public SimulatorBase {
55  public:
56  friend class S390Debugger;
57  enum Register {
58  no_reg = -1,
59  r0 = 0,
60  r1 = 1,
61  r2 = 2,
62  r3 = 3,
63  r4 = 4,
64  r5 = 5,
65  r6 = 6,
66  r7 = 7,
67  r8 = 8,
68  r9 = 9,
69  r10 = 10,
70  r11 = 11,
71  r12 = 12,
72  r13 = 13,
73  r14 = 14,
74  r15 = 15,
75  fp = r11,
76  ip = r12,
77  cp = r13,
78  ra = r14,
79  sp = r15, // name aliases
80  kNumGPRs = 16,
81  d0 = 0,
82  d1,
83  d2,
84  d3,
85  d4,
86  d5,
87  d6,
88  d7,
89  d8,
90  d9,
91  d10,
92  d11,
93  d12,
94  d13,
95  d14,
96  d15,
97  kNumFPRs = 16
98  };
99 
100  explicit Simulator(Isolate* isolate);
101  ~Simulator();
102 
103  // The currently executing Simulator instance. Potentially there can be one
104  // for each native thread.
105  static Simulator* current(v8::internal::Isolate* isolate);
106 
107  // Accessors for register state.
108  void set_register(int reg, uint64_t value);
109  uint64_t get_register(int reg) const;
110  template <typename T>
111  T get_low_register(int reg) const;
112  template <typename T>
113  T get_high_register(int reg) const;
114  void set_low_register(int reg, uint32_t value);
115  void set_high_register(int reg, uint32_t value);
116 
117  double get_double_from_register_pair(int reg);
118  void set_d_register_from_double(int dreg, const double dbl) {
119  DCHECK(dreg >= 0 && dreg < kNumFPRs);
120  *bit_cast<double*>(&fp_registers_[dreg]) = dbl;
121  }
122 
123  double get_double_from_d_register(int dreg) {
124  DCHECK(dreg >= 0 && dreg < kNumFPRs);
125  return *bit_cast<double*>(&fp_registers_[dreg]);
126  }
127  void set_d_register(int dreg, int64_t value) {
128  DCHECK(dreg >= 0 && dreg < kNumFPRs);
129  fp_registers_[dreg] = value;
130  }
131  int64_t get_d_register(int dreg) {
132  DCHECK(dreg >= 0 && dreg < kNumFPRs);
133  return fp_registers_[dreg];
134  }
135 
136  void set_d_register_from_float32(int dreg, const float f) {
137  DCHECK(dreg >= 0 && dreg < kNumFPRs);
138 
139  int32_t f_int = *bit_cast<int32_t*>(&f);
140  int64_t finalval = static_cast<int64_t>(f_int) << 32;
141  set_d_register(dreg, finalval);
142  }
143 
144  float get_float32_from_d_register(int dreg) {
145  DCHECK(dreg >= 0 && dreg < kNumFPRs);
146 
147  int64_t regval = get_d_register(dreg) >> 32;
148  int32_t regval32 = static_cast<int32_t>(regval);
149  return *bit_cast<float*>(&regval32);
150  }
151 
152  // Special case of set_register and get_register to access the raw PC value.
153  void set_pc(intptr_t value);
154  intptr_t get_pc() const;
155 
156  Address get_sp() const { return static_cast<Address>(get_register(sp)); }
157 
158  // Accessor to the internal simulator stack area.
159  uintptr_t StackLimit(uintptr_t c_limit) const;
160 
161  // Executes S390 instructions until the PC reaches end_sim_pc.
162  void Execute();
163 
164  template <typename Return, typename... Args>
165  Return Call(Address entry, Args... args) {
166  return VariadicCall<Return>(this, &Simulator::CallImpl, entry, args...);
167  }
168 
169  // Alternative: call a 2-argument double function.
170  void CallFP(Address entry, double d0, double d1);
171  int32_t CallFPReturnsInt(Address entry, double d0, double d1);
172  double CallFPReturnsDouble(Address entry, double d0, double d1);
173 
174  // Push an address onto the JS stack.
175  uintptr_t PushAddress(uintptr_t address);
176 
177  // Pop an address from the JS stack.
178  uintptr_t PopAddress();
179 
180  // Debugger input.
181  void set_last_debugger_input(char* input);
182  char* last_debugger_input() { return last_debugger_input_; }
183 
184  // Redirection support.
185  static void SetRedirectInstruction(Instruction* instruction);
186 
187  // ICache checking.
188  static bool ICacheMatch(void* one, void* two);
189  static void FlushICache(base::CustomMatcherHashMap* i_cache, void* start,
190  size_t size);
191 
192  // Returns true if pc register contains one of the 'special_values' defined
193  // below (bad_lr, end_sim_pc).
194  bool has_bad_pc() const;
195 
196  private:
197  enum special_values {
198  // Known bad pc value to ensure that the simulator does not execute
199  // without being properly setup.
200  bad_lr = -1,
201  // A pc value used to signal the simulator to stop execution. Generally
202  // the lr is set to this value on transition from native C code to
203  // simulated execution, so that the simulator can "return" to the native
204  // C code.
205  end_sim_pc = -2
206  };
207 
208  intptr_t CallImpl(Address entry, int argument_count,
209  const intptr_t* arguments);
210 
211  // Unsupported instructions use Format to print an error and stop execution.
212  void Format(Instruction* instr, const char* format);
213 
214  // Helper functions to set the conditional flags in the architecture state.
215  bool CarryFrom(int32_t left, int32_t right, int32_t carry = 0);
216  bool BorrowFrom(int32_t left, int32_t right);
217  template <typename T1>
218  inline bool OverflowFromSigned(T1 alu_out, T1 left, T1 right, bool addition);
219 
220  // Helper functions to decode common "addressing" modes
221  int32_t GetShiftRm(Instruction* instr, bool* carry_out);
222  int32_t GetImm(Instruction* instr, bool* carry_out);
223  void ProcessPUW(Instruction* instr, int num_regs, int operand_size,
224  intptr_t* start_address, intptr_t* end_address);
225  void HandleRList(Instruction* instr, bool load);
226  void HandleVList(Instruction* inst);
227  void SoftwareInterrupt(Instruction* instr);
228 
229  // Stop helper functions.
230  inline bool isStopInstruction(Instruction* instr);
231  inline bool isWatchedStop(uint32_t bkpt_code);
232  inline bool isEnabledStop(uint32_t bkpt_code);
233  inline void EnableStop(uint32_t bkpt_code);
234  inline void DisableStop(uint32_t bkpt_code);
235  inline void IncreaseStopCounter(uint32_t bkpt_code);
236  void PrintStopInfo(uint32_t code);
237 
238  // Byte Reverse
239  inline int16_t ByteReverse(int16_t hword);
240  inline int32_t ByteReverse(int32_t word);
241  inline int64_t ByteReverse(int64_t dword);
242 
243  // Read and write memory.
244  inline uint8_t ReadBU(intptr_t addr);
245  inline int8_t ReadB(intptr_t addr);
246  inline void WriteB(intptr_t addr, uint8_t value);
247  inline void WriteB(intptr_t addr, int8_t value);
248 
249  inline uint16_t ReadHU(intptr_t addr, Instruction* instr);
250  inline int16_t ReadH(intptr_t addr, Instruction* instr);
251  // Note: Overloaded on the sign of the value.
252  inline void WriteH(intptr_t addr, uint16_t value, Instruction* instr);
253  inline void WriteH(intptr_t addr, int16_t value, Instruction* instr);
254 
255  inline uint32_t ReadWU(intptr_t addr, Instruction* instr);
256  inline int32_t ReadW(intptr_t addr, Instruction* instr);
257  inline int64_t ReadW64(intptr_t addr, Instruction* instr);
258  inline void WriteW(intptr_t addr, uint32_t value, Instruction* instr);
259  inline void WriteW(intptr_t addr, int32_t value, Instruction* instr);
260 
261  inline int64_t ReadDW(intptr_t addr);
262  inline double ReadDouble(intptr_t addr);
263  inline float ReadFloat(intptr_t addr);
264  inline void WriteDW(intptr_t addr, int64_t value);
265 
266  // S390
267  void Trace(Instruction* instr);
268 
269  // Used by the CL**BR instructions.
270  template <typename T1, typename T2>
271  void SetS390RoundConditionCode(T1 r2_val, T2 max, T2 min) {
272  condition_reg_ = 0;
273  double r2_dval = static_cast<double>(r2_val);
274  double dbl_min = static_cast<double>(min);
275  double dbl_max = static_cast<double>(max);
276 
277  if (r2_dval == 0.0)
278  condition_reg_ = 8;
279  else if (r2_dval < 0.0 && r2_dval >= dbl_min && std::isfinite(r2_dval))
280  condition_reg_ = 4;
281  else if (r2_dval > 0.0 && r2_dval <= dbl_max && std::isfinite(r2_dval))
282  condition_reg_ = 2;
283  else
284  condition_reg_ = 1;
285  }
286 
287  template <typename T1>
288  void SetS390RoundConditionCode(T1 r2_val, int64_t max, int64_t min) {
289  condition_reg_ = 0;
290  double r2_dval = static_cast<double>(r2_val);
291  double dbl_min = static_cast<double>(min);
292  double dbl_max = static_cast<double>(max);
293 
294  // Note that the IEEE 754 floating-point representations (both 32 and
295  // 64 bit) cannot exactly represent INT64_MAX. The closest it can get
296  // is INT64_max + 1. IEEE 754 FP can, though, represent INT64_MIN
297  // exactly.
298 
299  // This is not an issue for INT32, as IEEE754 64-bit can represent
300  // INT32_MAX and INT32_MIN with exact precision.
301 
302  if (r2_dval == 0.0)
303  condition_reg_ = 8;
304  else if (r2_dval < 0.0 && r2_dval >= dbl_min && std::isfinite(r2_dval))
305  condition_reg_ = 4;
306  else if (r2_dval > 0.0 && r2_dval < dbl_max && std::isfinite(r2_dval))
307  condition_reg_ = 2;
308  else
309  condition_reg_ = 1;
310  }
311 
312  // Used by the CL**BR instructions.
313  template <typename T1, typename T2, typename T3>
314  void SetS390ConvertConditionCode(T1 src, T2 dst, T3 max) {
315  condition_reg_ = 0;
316  if (src == static_cast<T1>(0.0)) {
317  condition_reg_ |= 8;
318  } else if (src < static_cast<T1>(0.0) && static_cast<T2>(src) == 0 &&
319  std::isfinite(src)) {
320  condition_reg_ |= 4;
321  } else if (src > static_cast<T1>(0.0) && std::isfinite(src) &&
322  src < static_cast<T1>(max)) {
323  condition_reg_ |= 2;
324  } else {
325  condition_reg_ |= 1;
326  }
327  }
328 
329  template <typename T>
330  void SetS390ConditionCode(T lhs, T rhs) {
331  condition_reg_ = 0;
332  if (lhs == rhs) {
333  condition_reg_ |= CC_EQ;
334  } else if (lhs < rhs) {
335  condition_reg_ |= CC_LT;
336  } else if (lhs > rhs) {
337  condition_reg_ |= CC_GT;
338  }
339 
340  // We get down here only for floating point
341  // comparisons and the values are unordered
342  // i.e. NaN
343  if (condition_reg_ == 0) condition_reg_ = unordered;
344  }
345 
346  // Used by arithmetic operations that use carry.
347  template <typename T>
348  void SetS390ConditionCodeCarry(T result, bool overflow) {
349  condition_reg_ = 0;
350  bool zero_result = (result == static_cast<T>(0));
351  if (zero_result && !overflow) {
352  condition_reg_ |= 8;
353  } else if (!zero_result && !overflow) {
354  condition_reg_ |= 4;
355  } else if (zero_result && overflow) {
356  condition_reg_ |= 2;
357  } else if (!zero_result && overflow) {
358  condition_reg_ |= 1;
359  }
360  if (condition_reg_ == 0) UNREACHABLE();
361  }
362 
363  bool isNaN(double value) { return (value != value); }
364 
365  // Set the condition code for bitwise operations
366  // CC0 is set if value == 0.
367  // CC1 is set if value != 0.
368  // CC2/CC3 are not set.
369  template <typename T>
370  void SetS390BitWiseConditionCode(T value) {
371  condition_reg_ = 0;
372 
373  if (value == 0)
374  condition_reg_ |= CC_EQ;
375  else
376  condition_reg_ |= CC_LT;
377  }
378 
379  void SetS390OverflowCode(bool isOF) {
380  if (isOF) condition_reg_ = CC_OF;
381  }
382 
383  bool TestConditionCode(Condition mask) {
384  // Check for unconditional branch
385  if (mask == 0xf) return true;
386 
387  return (condition_reg_ & mask) != 0;
388  }
389 
390  // Executes one instruction.
391  void ExecuteInstruction(Instruction* instr, bool auto_incr_pc = true);
392 
393  // ICache.
394  static void CheckICache(base::CustomMatcherHashMap* i_cache,
395  Instruction* instr);
396  static void FlushOnePage(base::CustomMatcherHashMap* i_cache, intptr_t start,
397  int size);
398  static CachePage* GetCachePage(base::CustomMatcherHashMap* i_cache,
399  void* page);
400 
401  // Handle arguments and return value for runtime FP functions.
402  void GetFpArgs(double* x, double* y, intptr_t* z);
403  void SetFpResult(const double& result);
404  void TrashCallerSaveRegisters();
405 
406  void CallInternal(Address entry, int reg_arg_count = 3);
407 
408  // Architecture state.
409  // On z9 and higher and supported Linux on z Systems platforms, all registers
410  // are 64-bit, even in 31-bit mode.
411  uint64_t registers_[kNumGPRs];
412  int64_t fp_registers_[kNumFPRs];
413 
414  // Condition Code register. In S390, the last 4 bits are used.
415  int32_t condition_reg_;
416  // Special register to track PC.
417  intptr_t special_reg_pc_;
418 
419  // Simulator support.
420  char* stack_;
421  static const size_t stack_protection_size_ = 256 * kPointerSize;
422  bool pc_modified_;
423  int64_t icount_;
424 
425  // Debugger input.
426  char* last_debugger_input_;
427 
428  // Registered breakpoints.
429  Instruction* break_pc_;
430  Instr break_instr_;
431 
432  v8::internal::Isolate* isolate_;
433 
434  // A stop is watched if its code is less than kNumOfWatchedStops.
435  // Only watched stops support enabling/disabling and the counter feature.
436  static const uint32_t kNumOfWatchedStops = 256;
437 
438  // Breakpoint is disabled if bit 31 is set.
439  static const uint32_t kStopDisabledBit = 1 << 31;
440 
441  // A stop is enabled, meaning the simulator will stop when meeting the
442  // instruction, if bit 31 of watched_stops_[code].count is unset.
443  // The value watched_stops_[code].count & ~(1 << 31) indicates how many times
444  // the breakpoint was hit or gone through.
445  struct StopCountAndDesc {
446  uint32_t count;
447  char* desc;
448  };
449  StopCountAndDesc watched_stops_[kNumOfWatchedStops];
450  void DebugStart();
451 
452  int DecodeInstructionOriginal(Instruction* instr);
453  int DecodeInstruction(Instruction* instr);
454  int Evaluate_Unknown(Instruction* instr);
455 #define MAX_NUM_OPCODES (1 << 16)
456  typedef int (Simulator::*EvaluateFuncType)(Instruction*);
457 
458  static EvaluateFuncType EvalTable[MAX_NUM_OPCODES];
459  static void EvalTableInit();
460 
461 #define EVALUATE(name) int Evaluate_##name(Instruction* instr)
462 #define EVALUATE_VRR_INSTRUCTIONS(name, op_name, op_value) EVALUATE(op_name);
463  S390_VRR_C_OPCODE_LIST(EVALUATE_VRR_INSTRUCTIONS)
464  S390_VRR_A_OPCODE_LIST(EVALUATE_VRR_INSTRUCTIONS)
465 #undef EVALUATE_VRR_INSTRUCTIONS
466 
467  EVALUATE(DUMY);
468  EVALUATE(BKPT);
469  EVALUATE(SPM);
470  EVALUATE(BALR);
471  EVALUATE(BCTR);
472  EVALUATE(BCR);
473  EVALUATE(SVC);
474  EVALUATE(BSM);
475  EVALUATE(BASSM);
476  EVALUATE(BASR);
477  EVALUATE(MVCL);
478  EVALUATE(CLCL);
479  EVALUATE(LPR);
480  EVALUATE(LNR);
481  EVALUATE(LTR);
482  EVALUATE(LCR);
483  EVALUATE(NR);
484  EVALUATE(CLR);
485  EVALUATE(OR);
486  EVALUATE(XR);
487  EVALUATE(LR);
488  EVALUATE(CR);
489  EVALUATE(AR);
490  EVALUATE(SR);
491  EVALUATE(MR);
492  EVALUATE(DR);
493  EVALUATE(ALR);
494  EVALUATE(SLR);
495  EVALUATE(LDR);
496  EVALUATE(CDR);
497  EVALUATE(LER);
498  EVALUATE(STH);
499  EVALUATE(LA);
500  EVALUATE(STC);
501  EVALUATE(IC_z);
502  EVALUATE(EX);
503  EVALUATE(BAL);
504  EVALUATE(BCT);
505  EVALUATE(BC);
506  EVALUATE(LH);
507  EVALUATE(CH);
508  EVALUATE(AH);
509  EVALUATE(SH);
510  EVALUATE(MH);
511  EVALUATE(BAS);
512  EVALUATE(CVD);
513  EVALUATE(CVB);
514  EVALUATE(ST);
515  EVALUATE(LAE);
516  EVALUATE(N);
517  EVALUATE(CL);
518  EVALUATE(O);
519  EVALUATE(X);
520  EVALUATE(L);
521  EVALUATE(C);
522  EVALUATE(A);
523  EVALUATE(S);
524  EVALUATE(M);
525  EVALUATE(D);
526  EVALUATE(AL);
527  EVALUATE(SL);
528  EVALUATE(STD);
529  EVALUATE(LD);
530  EVALUATE(CD);
531  EVALUATE(STE);
532  EVALUATE(MS);
533  EVALUATE(LE);
534  EVALUATE(BRXH);
535  EVALUATE(BRXLE);
536  EVALUATE(BXH);
537  EVALUATE(BXLE);
538  EVALUATE(SRL);
539  EVALUATE(SLL);
540  EVALUATE(SRA);
541  EVALUATE(SLA);
542  EVALUATE(SRDL);
543  EVALUATE(SLDL);
544  EVALUATE(SRDA);
545  EVALUATE(SLDA);
546  EVALUATE(STM);
547  EVALUATE(TM);
548  EVALUATE(MVI);
549  EVALUATE(TS);
550  EVALUATE(NI);
551  EVALUATE(CLI);
552  EVALUATE(OI);
553  EVALUATE(XI);
554  EVALUATE(LM);
555  EVALUATE(CS);
556  EVALUATE(MVCLE);
557  EVALUATE(CLCLE);
558  EVALUATE(MC);
559  EVALUATE(CDS);
560  EVALUATE(STCM);
561  EVALUATE(ICM);
562  EVALUATE(BPRP);
563  EVALUATE(BPP);
564  EVALUATE(TRTR);
565  EVALUATE(MVN);
566  EVALUATE(MVC);
567  EVALUATE(MVZ);
568  EVALUATE(NC);
569  EVALUATE(CLC);
570  EVALUATE(OC);
571  EVALUATE(XC);
572  EVALUATE(MVCP);
573  EVALUATE(TR);
574  EVALUATE(TRT);
575  EVALUATE(ED);
576  EVALUATE(EDMK);
577  EVALUATE(PKU);
578  EVALUATE(UNPKU);
579  EVALUATE(MVCIN);
580  EVALUATE(PKA);
581  EVALUATE(UNPKA);
582  EVALUATE(PLO);
583  EVALUATE(LMD);
584  EVALUATE(SRP);
585  EVALUATE(MVO);
586  EVALUATE(PACK);
587  EVALUATE(UNPK);
588  EVALUATE(ZAP);
589  EVALUATE(AP);
590  EVALUATE(SP);
591  EVALUATE(MP);
592  EVALUATE(DP);
593  EVALUATE(UPT);
594  EVALUATE(PFPO);
595  EVALUATE(IIHH);
596  EVALUATE(IIHL);
597  EVALUATE(IILH);
598  EVALUATE(IILL);
599  EVALUATE(NIHH);
600  EVALUATE(NIHL);
601  EVALUATE(NILH);
602  EVALUATE(NILL);
603  EVALUATE(OIHH);
604  EVALUATE(OIHL);
605  EVALUATE(OILH);
606  EVALUATE(OILL);
607  EVALUATE(LLIHH);
608  EVALUATE(LLIHL);
609  EVALUATE(LLILH);
610  EVALUATE(LLILL);
611  EVALUATE(TMLH);
612  EVALUATE(TMLL);
613  EVALUATE(TMHH);
614  EVALUATE(TMHL);
615  EVALUATE(BRC);
616  EVALUATE(BRAS);
617  EVALUATE(BRCT);
618  EVALUATE(BRCTG);
619  EVALUATE(LHI);
620  EVALUATE(LGHI);
621  EVALUATE(AHI);
622  EVALUATE(AGHI);
623  EVALUATE(MHI);
624  EVALUATE(MGHI);
625  EVALUATE(CHI);
626  EVALUATE(CGHI);
627  EVALUATE(LARL);
628  EVALUATE(LGFI);
629  EVALUATE(BRCL);
630  EVALUATE(BRASL);
631  EVALUATE(XIHF);
632  EVALUATE(XILF);
633  EVALUATE(IIHF);
634  EVALUATE(IILF);
635  EVALUATE(NIHF);
636  EVALUATE(NILF);
637  EVALUATE(OIHF);
638  EVALUATE(OILF);
639  EVALUATE(LLIHF);
640  EVALUATE(LLILF);
641  EVALUATE(MSGFI);
642  EVALUATE(MSFI);
643  EVALUATE(SLGFI);
644  EVALUATE(SLFI);
645  EVALUATE(AGFI);
646  EVALUATE(AFI);
647  EVALUATE(ALGFI);
648  EVALUATE(ALFI);
649  EVALUATE(CGFI);
650  EVALUATE(CFI);
651  EVALUATE(CLGFI);
652  EVALUATE(CLFI);
653  EVALUATE(LLHRL);
654  EVALUATE(LGHRL);
655  EVALUATE(LHRL);
656  EVALUATE(LLGHRL);
657  EVALUATE(STHRL);
658  EVALUATE(LGRL);
659  EVALUATE(STGRL);
660  EVALUATE(LGFRL);
661  EVALUATE(LRL);
662  EVALUATE(LLGFRL);
663  EVALUATE(STRL);
664  EVALUATE(EXRL);
665  EVALUATE(PFDRL);
666  EVALUATE(CGHRL);
667  EVALUATE(CHRL);
668  EVALUATE(CGRL);
669  EVALUATE(CGFRL);
670  EVALUATE(ECTG);
671  EVALUATE(CSST);
672  EVALUATE(LPD);
673  EVALUATE(LPDG);
674  EVALUATE(BRCTH);
675  EVALUATE(AIH);
676  EVALUATE(ALSIH);
677  EVALUATE(ALSIHN);
678  EVALUATE(CIH);
679  EVALUATE(CLIH);
680  EVALUATE(STCK);
681  EVALUATE(CFC);
682  EVALUATE(IPM);
683  EVALUATE(HSCH);
684  EVALUATE(MSCH);
685  EVALUATE(SSCH);
686  EVALUATE(STSCH);
687  EVALUATE(TSCH);
688  EVALUATE(TPI);
689  EVALUATE(SAL);
690  EVALUATE(RSCH);
691  EVALUATE(STCRW);
692  EVALUATE(STCPS);
693  EVALUATE(RCHP);
694  EVALUATE(SCHM);
695  EVALUATE(CKSM);
696  EVALUATE(SAR);
697  EVALUATE(EAR);
698  EVALUATE(MSR);
699  EVALUATE(MSRKC);
700  EVALUATE(MVST);
701  EVALUATE(CUSE);
702  EVALUATE(SRST);
703  EVALUATE(XSCH);
704  EVALUATE(STCKE);
705  EVALUATE(STCKF);
706  EVALUATE(SRNM);
707  EVALUATE(STFPC);
708  EVALUATE(LFPC);
709  EVALUATE(TRE);
710  EVALUATE(CUUTF);
711  EVALUATE(CUTFU);
712  EVALUATE(STFLE);
713  EVALUATE(SRNMB);
714  EVALUATE(SRNMT);
715  EVALUATE(LFAS);
716  EVALUATE(PPA);
717  EVALUATE(ETND);
718  EVALUATE(TEND);
719  EVALUATE(NIAI);
720  EVALUATE(TABORT);
721  EVALUATE(TRAP4);
722  EVALUATE(LPEBR);
723  EVALUATE(LNEBR);
724  EVALUATE(LTEBR);
725  EVALUATE(LCEBR);
726  EVALUATE(LDEBR);
727  EVALUATE(LXDBR);
728  EVALUATE(LXEBR);
729  EVALUATE(MXDBR);
730  EVALUATE(KEBR);
731  EVALUATE(CEBR);
732  EVALUATE(AEBR);
733  EVALUATE(SEBR);
734  EVALUATE(MDEBR);
735  EVALUATE(DEBR);
736  EVALUATE(MAEBR);
737  EVALUATE(MSEBR);
738  EVALUATE(LPDBR);
739  EVALUATE(LNDBR);
740  EVALUATE(LTDBR);
741  EVALUATE(LCDBR);
742  EVALUATE(SQEBR);
743  EVALUATE(SQDBR);
744  EVALUATE(SQXBR);
745  EVALUATE(MEEBR);
746  EVALUATE(KDBR);
747  EVALUATE(CDBR);
748  EVALUATE(ADBR);
749  EVALUATE(SDBR);
750  EVALUATE(MDBR);
751  EVALUATE(DDBR);
752  EVALUATE(MADBR);
753  EVALUATE(MSDBR);
754  EVALUATE(LPXBR);
755  EVALUATE(LNXBR);
756  EVALUATE(LTXBR);
757  EVALUATE(LCXBR);
758  EVALUATE(LEDBRA);
759  EVALUATE(LDXBRA);
760  EVALUATE(LEXBRA);
761  EVALUATE(FIXBRA);
762  EVALUATE(KXBR);
763  EVALUATE(CXBR);
764  EVALUATE(AXBR);
765  EVALUATE(SXBR);
766  EVALUATE(MXBR);
767  EVALUATE(DXBR);
768  EVALUATE(TBEDR);
769  EVALUATE(TBDR);
770  EVALUATE(DIEBR);
771  EVALUATE(FIEBRA);
772  EVALUATE(THDER);
773  EVALUATE(THDR);
774  EVALUATE(DIDBR);
775  EVALUATE(FIDBRA);
776  EVALUATE(LXR);
777  EVALUATE(LPDFR);
778  EVALUATE(LNDFR);
779  EVALUATE(LCDFR);
780  EVALUATE(LZER);
781  EVALUATE(LZDR);
782  EVALUATE(LZXR);
783  EVALUATE(SFPC);
784  EVALUATE(SFASR);
785  EVALUATE(EFPC);
786  EVALUATE(CELFBR);
787  EVALUATE(CDLFBR);
788  EVALUATE(CXLFBR);
789  EVALUATE(CEFBRA);
790  EVALUATE(CDFBRA);
791  EVALUATE(CXFBRA);
792  EVALUATE(CFEBRA);
793  EVALUATE(CFDBRA);
794  EVALUATE(CFXBRA);
795  EVALUATE(CLFEBR);
796  EVALUATE(CLFDBR);
797  EVALUATE(CLFXBR);
798  EVALUATE(CELGBR);
799  EVALUATE(CDLGBR);
800  EVALUATE(CXLGBR);
801  EVALUATE(CEGBRA);
802  EVALUATE(CDGBRA);
803  EVALUATE(CXGBRA);
804  EVALUATE(CGEBRA);
805  EVALUATE(CGDBRA);
806  EVALUATE(CGXBRA);
807  EVALUATE(CLGEBR);
808  EVALUATE(CLGDBR);
809  EVALUATE(CFER);
810  EVALUATE(CFDR);
811  EVALUATE(CFXR);
812  EVALUATE(LDGR);
813  EVALUATE(CGER);
814  EVALUATE(CGDR);
815  EVALUATE(CGXR);
816  EVALUATE(LGDR);
817  EVALUATE(MDTR);
818  EVALUATE(MDTRA);
819  EVALUATE(DDTRA);
820  EVALUATE(ADTRA);
821  EVALUATE(SDTRA);
822  EVALUATE(LDETR);
823  EVALUATE(LEDTR);
824  EVALUATE(LTDTR);
825  EVALUATE(FIDTR);
826  EVALUATE(MXTRA);
827  EVALUATE(DXTRA);
828  EVALUATE(AXTRA);
829  EVALUATE(SXTRA);
830  EVALUATE(LXDTR);
831  EVALUATE(LDXTR);
832  EVALUATE(LTXTR);
833  EVALUATE(FIXTR);
834  EVALUATE(KDTR);
835  EVALUATE(CGDTRA);
836  EVALUATE(CUDTR);
837  EVALUATE(CDTR);
838  EVALUATE(EEDTR);
839  EVALUATE(ESDTR);
840  EVALUATE(KXTR);
841  EVALUATE(CGXTRA);
842  EVALUATE(CUXTR);
843  EVALUATE(CSXTR);
844  EVALUATE(CXTR);
845  EVALUATE(EEXTR);
846  EVALUATE(ESXTR);
847  EVALUATE(CDGTRA);
848  EVALUATE(CDUTR);
849  EVALUATE(CDSTR);
850  EVALUATE(CEDTR);
851  EVALUATE(QADTR);
852  EVALUATE(IEDTR);
853  EVALUATE(RRDTR);
854  EVALUATE(CXGTRA);
855  EVALUATE(CXUTR);
856  EVALUATE(CXSTR);
857  EVALUATE(CEXTR);
858  EVALUATE(QAXTR);
859  EVALUATE(IEXTR);
860  EVALUATE(RRXTR);
861  EVALUATE(LPGR);
862  EVALUATE(LNGR);
863  EVALUATE(LTGR);
864  EVALUATE(LCGR);
865  EVALUATE(LGR);
866  EVALUATE(LGBR);
867  EVALUATE(LGHR);
868  EVALUATE(AGR);
869  EVALUATE(SGR);
870  EVALUATE(ALGR);
871  EVALUATE(SLGR);
872  EVALUATE(MSGR);
873  EVALUATE(MSGRKC);
874  EVALUATE(DSGR);
875  EVALUATE(LRVGR);
876  EVALUATE(LPGFR);
877  EVALUATE(LNGFR);
878  EVALUATE(LTGFR);
879  EVALUATE(LCGFR);
880  EVALUATE(LGFR);
881  EVALUATE(LLGFR);
882  EVALUATE(LLGTR);
883  EVALUATE(AGFR);
884  EVALUATE(SGFR);
885  EVALUATE(ALGFR);
886  EVALUATE(SLGFR);
887  EVALUATE(MSGFR);
888  EVALUATE(DSGFR);
889  EVALUATE(KMAC);
890  EVALUATE(LRVR);
891  EVALUATE(CGR);
892  EVALUATE(CLGR);
893  EVALUATE(LBR);
894  EVALUATE(LHR);
895  EVALUATE(KMF);
896  EVALUATE(KMO);
897  EVALUATE(PCC);
898  EVALUATE(KMCTR);
899  EVALUATE(KM);
900  EVALUATE(KMC);
901  EVALUATE(CGFR);
902  EVALUATE(KIMD);
903  EVALUATE(KLMD);
904  EVALUATE(CFDTR);
905  EVALUATE(CLGDTR);
906  EVALUATE(CLFDTR);
907  EVALUATE(BCTGR);
908  EVALUATE(CFXTR);
909  EVALUATE(CLFXTR);
910  EVALUATE(CDFTR);
911  EVALUATE(CDLGTR);
912  EVALUATE(CDLFTR);
913  EVALUATE(CXFTR);
914  EVALUATE(CXLGTR);
915  EVALUATE(CXLFTR);
916  EVALUATE(CGRT);
917  EVALUATE(NGR);
918  EVALUATE(OGR);
919  EVALUATE(XGR);
920  EVALUATE(FLOGR);
921  EVALUATE(LLGCR);
922  EVALUATE(LLGHR);
923  EVALUATE(MLGR);
924  EVALUATE(DLGR);
925  EVALUATE(ALCGR);
926  EVALUATE(SLBGR);
927  EVALUATE(EPSW);
928  EVALUATE(TRTT);
929  EVALUATE(TRTO);
930  EVALUATE(TROT);
931  EVALUATE(TROO);
932  EVALUATE(LLCR);
933  EVALUATE(LLHR);
934  EVALUATE(MLR);
935  EVALUATE(DLR);
936  EVALUATE(ALCR);
937  EVALUATE(SLBR);
938  EVALUATE(CU14);
939  EVALUATE(CU24);
940  EVALUATE(CU41);
941  EVALUATE(CU42);
942  EVALUATE(TRTRE);
943  EVALUATE(SRSTU);
944  EVALUATE(TRTE);
945  EVALUATE(AHHHR);
946  EVALUATE(SHHHR);
947  EVALUATE(ALHHHR);
948  EVALUATE(SLHHHR);
949  EVALUATE(CHHR);
950  EVALUATE(AHHLR);
951  EVALUATE(SHHLR);
952  EVALUATE(ALHHLR);
953  EVALUATE(SLHHLR);
954  EVALUATE(CHLR);
955  EVALUATE(POPCNT_Z);
956  EVALUATE(LOCGR);
957  EVALUATE(NGRK);
958  EVALUATE(OGRK);
959  EVALUATE(XGRK);
960  EVALUATE(AGRK);
961  EVALUATE(SGRK);
962  EVALUATE(ALGRK);
963  EVALUATE(SLGRK);
964  EVALUATE(LOCR);
965  EVALUATE(NRK);
966  EVALUATE(ORK);
967  EVALUATE(XRK);
968  EVALUATE(ARK);
969  EVALUATE(SRK);
970  EVALUATE(ALRK);
971  EVALUATE(SLRK);
972  EVALUATE(LTG);
973  EVALUATE(LG);
974  EVALUATE(CVBY);
975  EVALUATE(AG);
976  EVALUATE(SG);
977  EVALUATE(ALG);
978  EVALUATE(SLG);
979  EVALUATE(MSG);
980  EVALUATE(DSG);
981  EVALUATE(CVBG);
982  EVALUATE(LRVG);
983  EVALUATE(LT);
984  EVALUATE(LGF);
985  EVALUATE(LGH);
986  EVALUATE(LLGF);
987  EVALUATE(LLGT);
988  EVALUATE(AGF);
989  EVALUATE(SGF);
990  EVALUATE(ALGF);
991  EVALUATE(SLGF);
992  EVALUATE(MSGF);
993  EVALUATE(DSGF);
994  EVALUATE(LRV);
995  EVALUATE(LRVH);
996  EVALUATE(CG);
997  EVALUATE(CLG);
998  EVALUATE(STG);
999  EVALUATE(NTSTG);
1000  EVALUATE(CVDY);
1001  EVALUATE(CVDG);
1002  EVALUATE(STRVG);
1003  EVALUATE(CGF);
1004  EVALUATE(CLGF);
1005  EVALUATE(LTGF);
1006  EVALUATE(CGH);
1007  EVALUATE(PFD);
1008  EVALUATE(STRV);
1009  EVALUATE(STRVH);
1010  EVALUATE(BCTG);
1011  EVALUATE(STY);
1012  EVALUATE(MSY);
1013  EVALUATE(MSC);
1014  EVALUATE(NY);
1015  EVALUATE(CLY);
1016  EVALUATE(OY);
1017  EVALUATE(XY);
1018  EVALUATE(LY);
1019  EVALUATE(CY);
1020  EVALUATE(AY);
1021  EVALUATE(SY);
1022  EVALUATE(MFY);
1023  EVALUATE(ALY);
1024  EVALUATE(SLY);
1025  EVALUATE(STHY);
1026  EVALUATE(LAY);
1027  EVALUATE(STCY);
1028  EVALUATE(ICY);
1029  EVALUATE(LAEY);
1030  EVALUATE(LB);
1031  EVALUATE(LGB);
1032  EVALUATE(LHY);
1033  EVALUATE(CHY);
1034  EVALUATE(AHY);
1035  EVALUATE(SHY);
1036  EVALUATE(MHY);
1037  EVALUATE(NG);
1038  EVALUATE(OG);
1039  EVALUATE(XG);
1040  EVALUATE(LGAT);
1041  EVALUATE(MLG);
1042  EVALUATE(DLG);
1043  EVALUATE(ALCG);
1044  EVALUATE(SLBG);
1045  EVALUATE(STPQ);
1046  EVALUATE(LPQ);
1047  EVALUATE(LLGC);
1048  EVALUATE(LLGH);
1049  EVALUATE(LLC);
1050  EVALUATE(LLH);
1051  EVALUATE(ML);
1052  EVALUATE(DL);
1053  EVALUATE(ALC);
1054  EVALUATE(SLB);
1055  EVALUATE(LLGTAT);
1056  EVALUATE(LLGFAT);
1057  EVALUATE(LAT);
1058  EVALUATE(LBH);
1059  EVALUATE(LLCH);
1060  EVALUATE(STCH);
1061  EVALUATE(LHH);
1062  EVALUATE(LLHH);
1063  EVALUATE(STHH);
1064  EVALUATE(LFHAT);
1065  EVALUATE(LFH);
1066  EVALUATE(STFH);
1067  EVALUATE(CHF);
1068  EVALUATE(MVCDK);
1069  EVALUATE(MVHHI);
1070  EVALUATE(MVGHI);
1071  EVALUATE(MVHI);
1072  EVALUATE(CHHSI);
1073  EVALUATE(CGHSI);
1074  EVALUATE(CHSI);
1075  EVALUATE(CLFHSI);
1076  EVALUATE(TBEGIN);
1077  EVALUATE(TBEGINC);
1078  EVALUATE(LMG);
1079  EVALUATE(SRAG);
1080  EVALUATE(SLAG);
1081  EVALUATE(SRLG);
1082  EVALUATE(SLLG);
1083  EVALUATE(CSY);
1084  EVALUATE(CSG);
1085  EVALUATE(RLLG);
1086  EVALUATE(RLL);
1087  EVALUATE(STMG);
1088  EVALUATE(STMH);
1089  EVALUATE(STCMH);
1090  EVALUATE(STCMY);
1091  EVALUATE(CDSY);
1092  EVALUATE(CDSG);
1093  EVALUATE(BXHG);
1094  EVALUATE(BXLEG);
1095  EVALUATE(ECAG);
1096  EVALUATE(TMY);
1097  EVALUATE(MVIY);
1098  EVALUATE(NIY);
1099  EVALUATE(CLIY);
1100  EVALUATE(OIY);
1101  EVALUATE(XIY);
1102  EVALUATE(ASI);
1103  EVALUATE(ALSI);
1104  EVALUATE(AGSI);
1105  EVALUATE(ALGSI);
1106  EVALUATE(ICMH);
1107  EVALUATE(ICMY);
1108  EVALUATE(MVCLU);
1109  EVALUATE(CLCLU);
1110  EVALUATE(STMY);
1111  EVALUATE(LMH);
1112  EVALUATE(LMY);
1113  EVALUATE(TP);
1114  EVALUATE(SRAK);
1115  EVALUATE(SLAK);
1116  EVALUATE(SRLK);
1117  EVALUATE(SLLK);
1118  EVALUATE(LOCG);
1119  EVALUATE(STOCG);
1120  EVALUATE(LANG);
1121  EVALUATE(LAOG);
1122  EVALUATE(LAXG);
1123  EVALUATE(LAAG);
1124  EVALUATE(LAALG);
1125  EVALUATE(LOC);
1126  EVALUATE(STOC);
1127  EVALUATE(LAN);
1128  EVALUATE(LAO);
1129  EVALUATE(LAX);
1130  EVALUATE(LAA);
1131  EVALUATE(LAAL);
1132  EVALUATE(BRXHG);
1133  EVALUATE(BRXLG);
1134  EVALUATE(RISBLG);
1135  EVALUATE(RNSBG);
1136  EVALUATE(RISBG);
1137  EVALUATE(ROSBG);
1138  EVALUATE(RXSBG);
1139  EVALUATE(RISBGN);
1140  EVALUATE(RISBHG);
1141  EVALUATE(CGRJ);
1142  EVALUATE(CGIT);
1143  EVALUATE(CIT);
1144  EVALUATE(CLFIT);
1145  EVALUATE(CGIJ);
1146  EVALUATE(CIJ);
1147  EVALUATE(AHIK);
1148  EVALUATE(AGHIK);
1149  EVALUATE(ALHSIK);
1150  EVALUATE(ALGHSIK);
1151  EVALUATE(CGRB);
1152  EVALUATE(CGIB);
1153  EVALUATE(CIB);
1154  EVALUATE(LDEB);
1155  EVALUATE(LXDB);
1156  EVALUATE(LXEB);
1157  EVALUATE(MXDB);
1158  EVALUATE(KEB);
1159  EVALUATE(CEB);
1160  EVALUATE(AEB);
1161  EVALUATE(SEB);
1162  EVALUATE(MDEB);
1163  EVALUATE(DEB);
1164  EVALUATE(MAEB);
1165  EVALUATE(MSEB);
1166  EVALUATE(TCEB);
1167  EVALUATE(TCDB);
1168  EVALUATE(TCXB);
1169  EVALUATE(SQEB);
1170  EVALUATE(SQDB);
1171  EVALUATE(MEEB);
1172  EVALUATE(KDB);
1173  EVALUATE(CDB);
1174  EVALUATE(ADB);
1175  EVALUATE(SDB);
1176  EVALUATE(MDB);
1177  EVALUATE(DDB);
1178  EVALUATE(MADB);
1179  EVALUATE(MSDB);
1180  EVALUATE(SLDT);
1181  EVALUATE(SRDT);
1182  EVALUATE(SLXT);
1183  EVALUATE(SRXT);
1184  EVALUATE(TDCET);
1185  EVALUATE(TDGET);
1186  EVALUATE(TDCDT);
1187  EVALUATE(TDGDT);
1188  EVALUATE(TDCXT);
1189  EVALUATE(TDGXT);
1190  EVALUATE(LEY);
1191  EVALUATE(LDY);
1192  EVALUATE(STEY);
1193  EVALUATE(STDY);
1194  EVALUATE(CZDT);
1195  EVALUATE(CZXT);
1196  EVALUATE(CDZT);
1197  EVALUATE(CXZT);
1198 #undef EVALUATE
1199 };
1200 
1201 } // namespace internal
1202 } // namespace v8
1203 
1204 #endif // defined(USE_SIMULATOR)
1205 #endif // V8_S390_SIMULATOR_S390_H_
Definition: libplatform.h:13