diff options
Diffstat (limited to 'deps/v8/src/s390/assembler-s390.h')
-rw-r--r-- | deps/v8/src/s390/assembler-s390.h | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/deps/v8/src/s390/assembler-s390.h b/deps/v8/src/s390/assembler-s390.h index 0b9fa38539..ffe0ac4621 100644 --- a/deps/v8/src/s390/assembler-s390.h +++ b/deps/v8/src/s390/assembler-s390.h @@ -90,6 +90,9 @@ namespace internal { V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \ V(d8) V(d9) V(d10) V(d11) V(d12) V(d13) V(d14) V(d15) +#define FLOAT_REGISTERS DOUBLE_REGISTERS +#define SIMD128_REGISTERS DOUBLE_REGISTERS + #define ALLOCATABLE_DOUBLE_REGISTERS(V) \ V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \ V(d8) V(d9) V(d10) V(d11) V(d12) V(d15) V(d0) @@ -143,8 +146,6 @@ struct Register { return r; } - const char* ToString(); - bool IsAllocatable() const; bool is_valid() const { return 0 <= reg_code && reg_code < kNumRegisters; } bool is(Register reg) const { return reg_code == reg.reg_code; } int code() const { @@ -185,6 +186,8 @@ const Register kLithiumScratch = r1; // lithium scratch. const Register kRootRegister = r10; // Roots array pointer. const Register cp = r13; // JavaScript context pointer. +static const bool kSimpleFPAliasing = true; + // Double word FP register. struct DoubleRegister { enum Code { @@ -198,8 +201,6 @@ struct DoubleRegister { static const int kNumRegisters = Code::kAfterLast; static const int kMaxNumRegisters = kNumRegisters; - const char* ToString(); - bool IsAllocatable() const; bool is_valid() const { return 0 <= reg_code && reg_code < kNumRegisters; } bool is(DoubleRegister reg) const { return reg_code == reg.reg_code; } @@ -221,7 +222,10 @@ struct DoubleRegister { int reg_code; }; -typedef DoubleRegister DoubleRegister; +typedef DoubleRegister FloatRegister; + +// TODO(john.yan) Define SIMD registers. +typedef DoubleRegister Simd128Register; #define DECLARE_REGISTER(R) \ const DoubleRegister R = {DoubleRegister::kCode_##R}; @@ -265,9 +269,6 @@ const CRegister cr5 = {5}; const CRegister cr6 = {6}; const CRegister cr7 = {7}; -// TODO(john.yan) Define SIMD registers. -typedef DoubleRegister Simd128Register; - // ----------------------------------------------------------------------------- // Machine instruction Operands @@ -546,7 +547,6 @@ class Assembler : public AssemblerBase { // Helper for unconditional branch to Label with update to save register void b(Register r, Label* l) { - positions_recorder()->WriteRecordedPositions(); int32_t halfwords = branch_offset(l) / 2; brasl(r, Operand(halfwords)); } @@ -607,7 +607,7 @@ class Assembler : public AssemblerBase { void breakpoint(bool do_print) { if (do_print) { - printf("DebugBreak is inserted to %p\n", pc_); + PrintF("DebugBreak is inserted to %p\n", static_cast<void*>(pc_)); } #if V8_HOST_ARCH_64_BIT int64_t value = reinterpret_cast<uint64_t>(&v8::base::OS::DebugBreak); @@ -765,7 +765,6 @@ class Assembler : public AssemblerBase { RRE_FORM(cdr); RXE_FORM(cdb); RXE_FORM(ceb); - RRE_FORM(cefbr); RXE_FORM(ddb); RRE_FORM(ddbr); SS1_FORM(ed); @@ -779,6 +778,7 @@ class Assembler : public AssemblerBase { RI1_FORM(iihh); RI1_FORM(iihl); RIL1_FORM(iilf); + RIL1_FORM(lgfi); RI1_FORM(iilh); RI1_FORM(iill); RRE_FORM(lcgr); @@ -791,7 +791,10 @@ class Assembler : public AssemblerBase { RR_FORM(lnr); RSY1_FORM(loc); RXY_FORM(lrv); + RRE_FORM(lrvr); + RRE_FORM(lrvgr); RXY_FORM(lrvh); + RXY_FORM(lrvg); RXE_FORM(mdb); RRE_FORM(mdbr); SS4_FORM(mvck); @@ -817,6 +820,8 @@ class Assembler : public AssemblerBase { RX_FORM(ste); RXY_FORM(stey); RXY_FORM(strv); + RXY_FORM(strvh); + RXY_FORM(strvg); RI1_FORM(tmll); SS1_FORM(tr); S_FORM(ts); @@ -871,6 +876,12 @@ class Assembler : public AssemblerBase { void lmy(Register r1, Register r2, const MemOperand& src); void lmg(Register r1, Register r2, const MemOperand& src); + // Load On Condition Instructions + void locr(Condition m3, Register r1, Register r2); + void locgr(Condition m3, Register r1, Register r2); + void loc(Condition m3, Register r1, const MemOperand& src); + void locg(Condition m3, Register r1, const MemOperand& src); + // Store Instructions void st(Register r, const MemOperand& src); void stc(Register r, const MemOperand& src); @@ -1044,6 +1055,7 @@ class Assembler : public AssemblerBase { // 32-bit Multiply Instructions void m(Register r1, const MemOperand& opnd); + void mfy(Register r1, const MemOperand& opnd); void mr_z(Register r1, Register r2); void ml(Register r1, const MemOperand& opnd); void mlr(Register r1, Register r2); @@ -1144,7 +1156,7 @@ class Assembler : public AssemblerBase { void cegbr(DoubleRegister fltReg, Register fixReg); void cdgbr(DoubleRegister fltReg, Register fixReg); void cfebr(Condition m3, Register fixReg, DoubleRegister fltReg); - void cefbr(DoubleRegister fltReg, Register fixReg); + void cefbr(Condition m3, DoubleRegister fltReg, Register fixReg); // Floating Point Compare Instructions void cebr(DoubleRegister r1, DoubleRegister r2); @@ -1171,6 +1183,7 @@ class Assembler : public AssemblerBase { void sqdb(DoubleRegister r1, const MemOperand& opnd); void sqdbr(DoubleRegister r1, DoubleRegister r2); void lcdbr(DoubleRegister r1, DoubleRegister r2); + void lcebr(DoubleRegister r1, DoubleRegister r2); void ldeb(DoubleRegister r1, const MemOperand& opnd); enum FIDBRA_MASK3 { @@ -1241,7 +1254,7 @@ class Assembler : public AssemblerBase { // Record a deoptimization reason that can be used by a log or cpu profiler. // Use --trace-deopt to enable. - void RecordDeoptReason(const int reason, int raw_position); + void RecordDeoptReason(DeoptimizeReason reason, int raw_position, int id); // Writes a single byte or word of data in the code stream. Used // for inline tables, e.g., jump-tables. @@ -1250,10 +1263,6 @@ class Assembler : public AssemblerBase { void dq(uint64_t data); void dp(uintptr_t data); - AssemblerPositionsRecorder* positions_recorder() { - return &positions_recorder_; - } - void PatchConstantPoolAccessInstruction(int pc_offset, int offset, ConstantPoolEntry::Access access, ConstantPoolEntry::Type type) { @@ -1416,6 +1425,8 @@ class Assembler : public AssemblerBase { inline void rxy_form(Opcode op, Register r1, Register x2, Register b2, Disp d2); + inline void rxy_form(Opcode op, Register r1, Condition m3, Register b2, + Disp d2); inline void rxy_form(Opcode op, DoubleRegister r1, Register x2, Register b2, Disp d2); @@ -1449,9 +1460,6 @@ class Assembler : public AssemblerBase { friend class CodePatcher; List<Handle<Code> > code_targets_; - - AssemblerPositionsRecorder positions_recorder_; - friend class AssemblerPositionsRecorder; friend class EnsureSpace; }; |