v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
assembler-s390.h File Reference
#include <stdio.h>
#include <memory>
#include <fcntl.h>
#include <unistd.h>
#include "src/base/platform/platform.h"
#include "src/codegen/assembler.h"
#include "src/codegen/external-reference.h"
#include "src/codegen/label.h"
#include "src/codegen/s390/constants-s390.h"
#include "src/codegen/s390/register-s390.h"
#include "src/objects/smi.h"
Include dependency graph for assembler-s390.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  v8::internal::Operand
 
union  v8::internal::Operand::Value
 
class  v8::internal::MemOperand
 
class  v8::internal::DeferredRelocInfo
 
class  v8::internal::Assembler
 
class  v8::internal::EnsureSpace
 
class  v8::internal::UseScratchRegisterScope
 

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define DECLARE_S390_RIL_AB_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RIL_C_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RR_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RRD_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RRE_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RX_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RXY_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RSY_A_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RSY_B_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RS_A_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RS_B_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RS_SHIFT_FORMAT(name, opcode)
 
#define DECLARE_S390_RXE_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RI_A_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RI_B_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RI_C_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RRF_A_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RRF_B_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RRF_C_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RRF_D_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RRF_E_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RSI_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RSL_A_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RSL_B_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_S_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_SI_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_SIY_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RRS_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RIS_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_SIL_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RIE_D_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RIE_E_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_RIE_F_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_S390_SS_A_INSTRUCTIONS(name, op_name, op_value)
 
#define DECLARE_VRR_A_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRR_C_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRR_B_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRR_E_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRR_F_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRX_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRS_A_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRS_B_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRS_C_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRI_A_INSTRUCTIONS(name, opcode_name, opcode_value)
 
#define DECLARE_VRI_C_INSTRUCTIONS(name, opcode_name, opcode_value)
 

Typedefs

using v8::internal::Disp = int32_t
 

Macro Definition Documentation

◆ DECLARE_S390_RI_A_INSTRUCTIONS

#define DECLARE_S390_RI_A_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r, const Operand& i2) { \
DCHECK(is_uint12(op_name)); \
DCHECK(is_uint16(i2.immediate()) || is_int16(i2.immediate())); \
ri_format(op_name, r.code(), i2.immediate()); \
}
const char * name
Definition builtins.cc:39
int r
Definition mul-fft.cc:298

Definition at line 577 of file assembler-s390.h.

◆ DECLARE_S390_RI_B_INSTRUCTIONS

#define DECLARE_S390_RI_B_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, const Operand& imm) { \
/* 2nd argument encodes # of halfwords, so divide by 2. */ \
int16_t numHalfwords = static_cast<int16_t>(imm.immediate()) / 2; \
Operand halfwordOp = Operand(numHalfwords); \
halfwordOp.setBits(16); \
ri_format(op_name, r1.code(), halfwordOp.immediate()); \
}

Definition at line 586 of file assembler-s390.h.

◆ DECLARE_S390_RI_C_INSTRUCTIONS

#define DECLARE_S390_RI_C_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Condition m, const Operand& i2) { \
DCHECK(is_uint12(op_name)); \
DCHECK(is_uint4(m)); \
DCHECK(op_name == BRC ? is_int16(i2.immediate()) \
: is_uint16(i2.immediate())); \
ri_format(op_name, m, i2.immediate()); \
}
int m
Definition mul-fft.cc:294

Definition at line 597 of file assembler-s390.h.

◆ DECLARE_S390_RIE_D_INSTRUCTIONS

#define DECLARE_S390_RIE_D_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Register r3, const Operand& i2) { \
rie_d_format(op_name, r1.code(), r3.code(), i2.immediate(), 0); \
}

Definition at line 860 of file assembler-s390.h.

◆ DECLARE_S390_RIE_E_INSTRUCTIONS

#define DECLARE_S390_RIE_E_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Register r3, const Operand& i2) { \
rie_e_format(op_name, r1.code(), r3.code(), i2.immediate()); \
}

Definition at line 877 of file assembler-s390.h.

◆ DECLARE_S390_RIE_F_INSTRUCTIONS

#define DECLARE_S390_RIE_F_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register dst, Register src, const Operand& startBit, \
const Operand& endBit, const Operand& shiftAmt) { \
DCHECK(is_uint8(startBit.immediate())); \
DCHECK(is_uint8(endBit.immediate())); \
DCHECK(is_uint8(shiftAmt.immediate())); \
rie_f_format(op_name, dst.code(), src.code(), startBit.immediate(), \
endBit.immediate(), shiftAmt.immediate()); \
}

Definition at line 896 of file assembler-s390.h.

◆ DECLARE_S390_RIL_AB_INSTRUCTIONS

#define DECLARE_S390_RIL_AB_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
template <class R1> \
inline void name(R1 r1, const Operand& i2) { \
ril_format(op_name, r1.code(), i2.immediate()); \
}

Definition at line 328 of file assembler-s390.h.

◆ DECLARE_S390_RIL_C_INSTRUCTIONS

#define DECLARE_S390_RIL_C_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
inline void name(Condition m1, const Operand& i2) { \
ril_format(op_name, m1, i2.immediate()); \
}

Definition at line 333 of file assembler-s390.h.

◆ DECLARE_S390_RIS_INSTRUCTIONS

#define DECLARE_S390_RIS_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Condition m3, Register b4, const Operand& d4, \
const Operand& i2) { \
ris_format(op_name, r1.code(), m3, b4.code(), d4.immediate(), \
i2.immediate()); \
} \
void name(Register r1, const Operand& i2, Condition m3, \
const MemOperand& opnd) { \
name(r1, m3, opnd.getBaseRegister(), Operand(opnd.getDisplacement()), i2); \
}

Definition at line 817 of file assembler-s390.h.

◆ DECLARE_S390_RR_INSTRUCTIONS

#define DECLARE_S390_RR_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
inline void name(Register r1, Register r2) { \
rr_format(op_name, r1.code(), r2.code()); \
} \
inline void name(DoubleRegister r1, DoubleRegister r2) { \
rr_format(op_name, r1.code(), r2.code()); \
} \
inline void name(Condition m1, Register r2) { \
rr_format(op_name, m1, r2.code()); \
}

Definition at line 351 of file assembler-s390.h.

◆ DECLARE_S390_RRD_INSTRUCTIONS

#define DECLARE_S390_RRD_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
template <class R1, class R2, class R3> \
inline void name(R1 r1, R3 r3, R2 r2) { \
rrd_format(op_name, r1.code(), r3.code(), r2.code()); \
}

Definition at line 370 of file assembler-s390.h.

◆ DECLARE_S390_RRE_INSTRUCTIONS

#define DECLARE_S390_RRE_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
template <class R1, class R2> \
inline void name(R1 r1, R2 r2) { \
rre_format(op_name, r1.code(), r2.code()); \
}

Definition at line 384 of file assembler-s390.h.

◆ DECLARE_S390_RRF_A_INSTRUCTIONS

#define DECLARE_S390_RRF_A_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Condition m4, Register r2, Register r3) { \
rrf_format(op_name, r3.code(), m4, r1.code(), r2.code()); \
} \
void name(Register r1, Register r2, Register r3) { \
name(r1, Condition(0), r2, r3); \
}

Definition at line 616 of file assembler-s390.h.

◆ DECLARE_S390_RRF_B_INSTRUCTIONS

#define DECLARE_S390_RRF_B_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Condition m4, Register r2, Register r3) { \
rrf_format(op_name, r3.code(), m4, r1.code(), r2.code()); \
} \
void name(Register r1, Register r2, Register r3) { \
name(r1, Condition(0), r2, r3); \
}

Definition at line 626 of file assembler-s390.h.

◆ DECLARE_S390_RRF_C_INSTRUCTIONS

#define DECLARE_S390_RRF_C_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
template <class R1, class R2> \
void name(Condition m3, Condition m4, R1 r1, R2 r2) { \
rrf_format(op_name, m3, m4, r1.code(), r2.code()); \
} \
template <class R1, class R2> \
void name(Condition m3, R1 r1, R2 r2) { \
name(m3, Condition(0), r1, r2); \
}

Definition at line 636 of file assembler-s390.h.

◆ DECLARE_S390_RRF_D_INSTRUCTIONS

#define DECLARE_S390_RRF_D_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
template <class R1, class R2> \
void name(Condition m3, Condition m4, R1 r1, R2 r2) { \
rrf_format(op_name, m3, m4, r1.code(), r2.code()); \
} \
template <class R1, class R2> \
void name(Condition m3, R1 r1, R2 r2) { \
name(m3, Condition(0), r1, r2); \
}

Definition at line 648 of file assembler-s390.h.

◆ DECLARE_S390_RRF_E_INSTRUCTIONS

#define DECLARE_S390_RRF_E_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
template <class M3, class M4, class R1, class R2> \
void name(M3 m3, M4 m4, R1 r1, R2 r2) { \
rrf_format(op_name, m3, m4, r1.code(), r2.code()); \
} \
template <class M3, class R1, class R2> \
void name(M3 m3, R1 r1, R2 r2) { \
name(m3, Condition(0), r1, r2); \
}

Definition at line 660 of file assembler-s390.h.

◆ DECLARE_S390_RRS_INSTRUCTIONS

#define DECLARE_S390_RRS_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Register r2, Register b4, const Operand& d4, \
Condition m3) { \
rrs_format(op_name, r1.code(), r2.code(), b4.code(), d4.immediate(), m3); \
} \
void name(Register r1, Register r2, Condition m3, const MemOperand& opnd) { \
name(r1, r2, opnd.getBaseRegister(), Operand(opnd.getDisplacement()), m3); \
}

Definition at line 793 of file assembler-s390.h.

◆ DECLARE_S390_RS_A_INSTRUCTIONS

#define DECLARE_S390_RS_A_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Register r3, Register b2, const Operand& d2) { \
rs_format(op_name, r1.code(), r3.code(), b2.code(), d2.immediate()); \
} \
void name(Register r1, Register r3, const MemOperand& opnd) { \
name(r1, r3, opnd.getBaseRegister(), Operand(opnd.getDisplacement())); \
}

Definition at line 506 of file assembler-s390.h.

◆ DECLARE_S390_RS_B_INSTRUCTIONS

#define DECLARE_S390_RS_B_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Condition m3, Register b2, const Operand& d2) { \
rs_format(op_name, r1.code(), m3, b2.code(), d2.immediate()); \
} \
void name(Register r1, Condition m3, const MemOperand& opnd) { \
name(r1, m3, opnd.getBaseRegister(), Operand(opnd.getDisplacement())); \
}

Definition at line 516 of file assembler-s390.h.

◆ DECLARE_S390_RS_SHIFT_FORMAT

#define DECLARE_S390_RS_SHIFT_FORMAT ( name,
opcode )
Value:
void name(Register r1, Register r2, const Operand& opnd = Operand::Zero()) { \
rs_format(opcode, r1.code(), r0.code(), r2.code(), opnd.immediate()); \
} \
void name(Register r1, const Operand& opnd) { \
rs_format(opcode, r1.code(), r0.code(), r0.code(), opnd.immediate()); \
}

Definition at line 526 of file assembler-s390.h.

◆ DECLARE_S390_RSI_INSTRUCTIONS

#define DECLARE_S390_RSI_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Register r3, const Operand& i2) { \
rsi_format(op_name, r1.code(), r3.code(), i2.immediate()); \
}

Definition at line 681 of file assembler-s390.h.

◆ DECLARE_S390_RSL_A_INSTRUCTIONS

#define DECLARE_S390_RSL_A_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(const Operand& l1, Register b1, const Operand& d1) { \
uint16_t L = static_cast<uint16_t>(l1.immediate() << 8); \
rsl_format(op_name, L, b1.code(), d1.immediate(), 0, 0); \
}

Definition at line 700 of file assembler-s390.h.

◆ DECLARE_S390_RSL_B_INSTRUCTIONS

#define DECLARE_S390_RSL_B_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(const Operand& l2, Register b2, const Operand& d2, Register r1, \
Condition m3) { \
uint16_t L = static_cast<uint16_t>(l2.immediate()); \
rsl_format(op_name, L, b2.code(), d2.immediate(), r1.code(), m3); \
}

Definition at line 708 of file assembler-s390.h.

◆ DECLARE_S390_RSY_A_INSTRUCTIONS

#define DECLARE_S390_RSY_A_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Register r3, Register b2, \
const Operand& d2 = Operand::Zero()) { \
rsy_format(op_name, r1.code(), r3.code(), b2.code(), d2.immediate()); \
} \
void name(Register r1, Register r3, Operand d2) { name(r1, r3, r0, d2); } \
void name(Register r1, Register r3, const MemOperand& opnd) { \
name(r1, r3, opnd.getBaseRegister(), Operand(opnd.getDisplacement())); \
}

Definition at line 476 of file assembler-s390.h.

◆ DECLARE_S390_RSY_B_INSTRUCTIONS

#define DECLARE_S390_RSY_B_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Condition m3, Register b2, const Operand& d2) { \
rsy_format(op_name, r1.code(), m3, b2.code(), d2.immediate()); \
} \
void name(Register r1, Condition m3, const MemOperand& opnd) { \
name(r1, m3, opnd.getBaseRegister(), Operand(opnd.getDisplacement())); \
}

Definition at line 488 of file assembler-s390.h.

◆ DECLARE_S390_RX_INSTRUCTIONS

#define DECLARE_S390_RX_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
template <class R1> \
inline void name(R1 r1, Register x2, Register b2, const Operand& d2) { \
rx_format(op_name, r1.code(), x2.code(), b2.code(), d2.immediate()); \
} \
template <class R1> \
inline void name(R1 r1, const MemOperand& opnd) { \
name(r1, opnd.getIndexRegister(), opnd.getBaseRegister(), \
Operand(opnd.getDisplacement())); \
}

Definition at line 400 of file assembler-s390.h.

◆ DECLARE_S390_RXE_INSTRUCTIONS

#define DECLARE_S390_RXE_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register r1, Register x2, Register b2, const Operand& d2, \
Condition m3 = static_cast<Condition>(0)) { \
rxe_format(op_name, r1.code(), x2.code(), b2.code(), d2.immediate(), m3); \
} \
template <class _R1Type> \
void name(_R1Type r1, const MemOperand& opnd) { \
name(Register::from_code(r1.code()), opnd.rx(), opnd.rb(), \
Operand(opnd.offset())); \
}

Definition at line 556 of file assembler-s390.h.

◆ DECLARE_S390_RXY_INSTRUCTIONS

#define DECLARE_S390_RXY_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
template <class R1, class R2> \
inline void name(R1 r1, R2 r2, Register b2, const Operand& d2) { \
rxy_format(op_name, r1.code(), r2.code(), b2.code(), d2.immediate()); \
} \
template <class R1> \
inline void name(R1 r1, const MemOperand& opnd) { \
name(r1, opnd.getIndexRegister(), opnd.getBaseRegister(), \
Operand(opnd.getDisplacement())); \
}

Definition at line 430 of file assembler-s390.h.

◆ DECLARE_S390_S_INSTRUCTIONS

#define DECLARE_S390_S_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register b1, const Operand& d2) { \
Opcode op = op_name; \
if ((op & 0xFF00) == 0) { \
op = (Opcode)(op << 8); \
} \
s_format(op, b1.code(), d2.immediate()); \
} \
void name(const MemOperand& opnd) { \
Operand d2 = Operand(opnd.getDisplacement()); \
name(opnd.getBaseRegister(), d2); \
}

Definition at line 726 of file assembler-s390.h.

◆ DECLARE_S390_SI_INSTRUCTIONS

#define DECLARE_S390_SI_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(const Operand& i2, Register b1, const Operand& d1) { \
si_format(op_name, i2.immediate(), b1.code(), d1.immediate()); \
} \
void name(const MemOperand& opnd, const Operand& i2) { \
name(i2, opnd.getBaseRegister(), Operand(opnd.getDisplacement())); \
}

Definition at line 748 of file assembler-s390.h.

◆ DECLARE_S390_SIL_INSTRUCTIONS

#define DECLARE_S390_SIL_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register b1, const Operand& d1, const Operand& i2) { \
sil_format(op_name, b1.code(), d1.immediate(), i2.immediate()); \
} \
void name(const MemOperand& opnd, const Operand& i2) { \
name(opnd.getBaseRegister(), Operand(opnd.getDisplacement()), i2); \
}

Definition at line 840 of file assembler-s390.h.

◆ DECLARE_S390_SIY_INSTRUCTIONS

#define DECLARE_S390_SIY_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(const Operand& i2, Register b1, const Operand& d1) { \
siy_format(op_name, i2.immediate(), b1.code(), d1.immediate()); \
} \
void name(const MemOperand& opnd, const Operand& i2) { \
name(i2, opnd.getBaseRegister(), Operand(opnd.getDisplacement())); \
}

Definition at line 771 of file assembler-s390.h.

◆ DECLARE_S390_SS_A_INSTRUCTIONS

#define DECLARE_S390_SS_A_INSTRUCTIONS ( name,
op_name,
op_value )
Value:
void name(Register b1, const Operand& d1, Register b2, const Operand& d2, \
const Operand& length) { \
ss_a_format(op_name, length.immediate(), b1.code(), d1.immediate(), \
b2.code(), d2.immediate()); \
} \
void name(const MemOperand& opnd1, const MemOperand& opnd2, \
const Operand& length) { \
ss_a_format(op_name, length.immediate(), opnd1.getBaseRegister().code(), \
opnd1.getDisplacement(), opnd2.getBaseRegister().code(), \
opnd2.getDisplacement()); \
}

Definition at line 920 of file assembler-s390.h.

◆ DECLARE_VRI_A_INSTRUCTIONS

#define DECLARE_VRI_A_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, const Operand& i2, Condition m3) { \
uint64_t code = (static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint32_t>(i2.immediate())) * B16 | \
(static_cast<uint64_t>(m3 & 0xF)) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}
#define B32
#define B36

Definition at line 1219 of file assembler-s390.h.

◆ DECLARE_VRI_C_INSTRUCTIONS

#define DECLARE_VRI_C_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, DoubleRegister v2, const Operand& i2, \
Condition m4) { \
uint64_t code = (static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint64_t>(v2.code())) * B32 | \
(static_cast<uint16_t>(i2.immediate())) * B16 | \
(static_cast<uint64_t>(m4 & 0xF)) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}

Definition at line 1232 of file assembler-s390.h.

◆ DECLARE_VRR_A_INSTRUCTIONS

#define DECLARE_VRR_A_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, DoubleRegister v2, Condition m5, Condition m4, \
Condition m3) { \
uint64_t code = (static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint64_t>(v2.code())) * B32 | \
(static_cast<uint64_t>(m5 & 0xF)) * B20 | \
(static_cast<uint64_t>(m4 & 0xF)) * B16 | \
(static_cast<uint64_t>(m3 & 0xF)) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}

Definition at line 1073 of file assembler-s390.h.

◆ DECLARE_VRR_B_INSTRUCTIONS

#define DECLARE_VRR_B_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3, \
Condition m5, Condition m4) { \
uint64_t code = (static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint64_t>(v2.code())) * B32 | \
(static_cast<uint64_t>(v3.code())) * B28 | \
(static_cast<uint64_t>(m5 & 0xF)) * B20 | \
(static_cast<uint64_t>(m4 & 0xF)) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}

Definition at line 1106 of file assembler-s390.h.

◆ DECLARE_VRR_C_INSTRUCTIONS

#define DECLARE_VRR_C_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3, \
Condition m6, Condition m5, Condition m4) { \
uint64_t code = (static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint64_t>(v2.code())) * B32 | \
(static_cast<uint64_t>(v3.code())) * B28 | \
(static_cast<uint64_t>(m6 & 0xF)) * B20 | \
(static_cast<uint64_t>(m5 & 0xF)) * B16 | \
(static_cast<uint64_t>(m4 & 0xF)) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}

Definition at line 1089 of file assembler-s390.h.

◆ DECLARE_VRR_E_INSTRUCTIONS

#define DECLARE_VRR_E_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, DoubleRegister v2, DoubleRegister v3, \
DoubleRegister v4, Condition m6, Condition m5) { \
uint64_t code = (static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint64_t>(v2.code())) * B32 | \
(static_cast<uint64_t>(v3.code())) * B28 | \
(static_cast<uint64_t>(m6 & 0xF)) * B24 | \
(static_cast<uint64_t>(m5 & 0xF)) * B16 | \
(static_cast<uint64_t>(v4.code())) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}

Definition at line 1122 of file assembler-s390.h.

◆ DECLARE_VRR_F_INSTRUCTIONS

#define DECLARE_VRR_F_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, Register r1, Register r2) { \
uint64_t code = (static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint64_t>(r1.code())) * B32 | \
(static_cast<uint64_t>(r2.code())) * B28 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}

Definition at line 1139 of file assembler-s390.h.

◆ DECLARE_VRS_A_INSTRUCTIONS

#define DECLARE_VRS_A_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, DoubleRegister v2, const MemOperand& opnd, \
Condition m4 = Condition(0)) { \
uint64_t code = \
(static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint64_t>(v2.code())) * B32 | \
(static_cast<uint64_t>(opnd.getBaseRegister().code())) * B28 | \
(static_cast<uint64_t>(opnd.getDisplacement())) * B16 | \
(static_cast<uint64_t>(m4 & 0xF)) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}
Handle< Code > code

Definition at line 1168 of file assembler-s390.h.

◆ DECLARE_VRS_B_INSTRUCTIONS

#define DECLARE_VRS_B_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, Register r1, const MemOperand& opnd, \
Condition m4 = Condition(0)) { \
uint64_t code = \
(static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint64_t>(r1.code())) * B32 | \
(static_cast<uint64_t>(opnd.getBaseRegister().code())) * B28 | \
(static_cast<uint64_t>(opnd.getDisplacement())) * B16 | \
(static_cast<uint64_t>(m4 & 0xF)) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}

Definition at line 1185 of file assembler-s390.h.

◆ DECLARE_VRS_C_INSTRUCTIONS

#define DECLARE_VRS_C_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(Register r1, DoubleRegister v1, const MemOperand& opnd, \
Condition m4 = Condition(0)) { \
uint64_t code = \
(static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(r1.code())) * B36 | \
(static_cast<uint64_t>(v1.code())) * B32 | \
(static_cast<uint64_t>(opnd.getBaseRegister().code())) * B28 | \
(static_cast<uint64_t>(opnd.getDisplacement())) * B16 | \
(static_cast<uint64_t>(m4 & 0xF)) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}

Definition at line 1202 of file assembler-s390.h.

◆ DECLARE_VRX_INSTRUCTIONS

#define DECLARE_VRX_INSTRUCTIONS ( name,
opcode_name,
opcode_value )
Value:
void name(DoubleRegister v1, const MemOperand& opnd, Condition m3) { \
uint64_t code = \
(static_cast<uint64_t>(opcode_value & 0xFF00)) * B32 | \
(static_cast<uint64_t>(v1.code())) * B36 | \
(static_cast<uint64_t>(opnd.getIndexRegister().code())) * B32 | \
(static_cast<uint64_t>(opnd.getBaseRegister().code())) * B28 | \
(static_cast<uint64_t>(opnd.getDisplacement())) * B16 | \
(static_cast<uint64_t>(m3 & 0xF)) * B12 | \
(static_cast<uint64_t>(0)) * B8 | \
(static_cast<uint64_t>(opcode_value & 0x00FF)); \
emit6bytes(code); \
}

Definition at line 1152 of file assembler-s390.h.