v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
revectorizer.cc File Reference
Include dependency graph for revectorizer.cc:

Go to the source code of this file.

Namespaces

namespace  v8
 
namespace  v8::internal
 
namespace  v8::internal::compiler
 

Macros

#define TRACE(...)
 
#define SIMPLE_SIMD_OP(V)
 
#define SIMD_SHIFT_OP(V)
 
#define SIMD_SIGN_EXTENSION_CONVERT_OP(V)
 
#define SIMD_SPLAT_OP(V)
 
#define CASE(op_low, op_high, not_used)
 
#define CHECK_SIGN_EXTENSION_CASE(op_low, op_high, not_used)
 
#define CASE(op128, op256)
 
#define SIGN_EXTENSION_CASE(op_low, not_used1, not_used2)
 
#define SIMPLE_CASE(from, to)
 
#define SHIFT_CASE(from, to)
 
#define SIGN_EXTENSION_CONVERT_CASE(from, not_used, to)
 
#define SPLAT_CASE(from, to)
 

Macro Definition Documentation

◆ CASE [1/2]

#define CASE ( op128,
op256 )
Value:
case IrOpcode::k##op128:

◆ CASE [2/2]

#define CASE ( op_low,
op_high,
not_used )
Value:
case IrOpcode::k##op_low: \
case IrOpcode::k##op_high:

◆ CHECK_SIGN_EXTENSION_CASE

#define CHECK_SIGN_EXTENSION_CASE ( op_low,
op_high,
not_used )
Value:
case IrOpcode::k##op_low: { \
if (node_group[1]->opcode() == IrOpcode::k##op_high && \
node_group[0]->InputAt(0) == node_group[1]->InputAt(0)) { \
return true; \
} \
return false; \
}

◆ SHIFT_CASE

#define SHIFT_CASE ( from,
to )
Value:
case IrOpcode::k##from: { \
DCHECK(ShiftBySameScalar(pnode->Nodes())); \
new_op = mcgraph_->machine()->to(); \
inputs[1] = node0->InputAt(1); \
break; \
}
Point from
MachineGraph * mcgraph_

◆ SIGN_EXTENSION_CASE

#define SIGN_EXTENSION_CASE ( op_low,
not_used1,
not_used2 )
Value:
case IrOpcode::k##op_low:

◆ SIGN_EXTENSION_CONVERT_CASE

#define SIGN_EXTENSION_CONVERT_CASE ( from,
not_used,
to )
Value:
case IrOpcode::k##from: { \
DCHECK_EQ(node0->InputAt(0), pnode->Nodes()[1]->InputAt(0)); \
new_op = mcgraph_->machine()->to(); \
inputs[0] = node0->InputAt(0); \
break; \
}

◆ SIMD_SHIFT_OP

#define SIMD_SHIFT_OP ( V)
Value:
V(I64x2Shl, I64x4Shl) \
V(I32x4Shl, I32x8Shl) \
V(I16x8Shl, I16x16Shl) \
V(I32x4ShrS, I32x8ShrS) \
V(I16x8ShrS, I16x16ShrS) \
V(I64x2ShrU, I64x4ShrU) \
V(I32x4ShrU, I32x8ShrU) \
V(I16x8ShrU, I16x16ShrU)
#define V(Name)

Definition at line 132 of file revectorizer.cc.

◆ SIMD_SIGN_EXTENSION_CONVERT_OP

#define SIMD_SIGN_EXTENSION_CONVERT_OP ( V)
Value:
V(I64x2SConvertI32x4Low, I64x2SConvertI32x4High, I64x4SConvertI32x4) \
V(I64x2UConvertI32x4Low, I64x2UConvertI32x4High, I64x4UConvertI32x4) \
V(I32x4SConvertI16x8Low, I32x4SConvertI16x8High, I32x8SConvertI16x8) \
V(I32x4UConvertI16x8Low, I32x4UConvertI16x8High, I32x8UConvertI16x8) \
V(I16x8SConvertI8x16Low, I16x8SConvertI8x16High, I16x16SConvertI8x16) \
V(I16x8UConvertI8x16Low, I16x8UConvertI8x16High, I16x16UConvertI8x16)

Definition at line 142 of file revectorizer.cc.

◆ SIMD_SPLAT_OP

#define SIMD_SPLAT_OP ( V)
Value:
V(I8x16Splat, I8x32Splat) \
V(I16x8Splat, I16x16Splat) \
V(I32x4Splat, I32x8Splat) \
V(I64x2Splat, I64x4Splat)

Definition at line 150 of file revectorizer.cc.

◆ SIMPLE_CASE

#define SIMPLE_CASE ( from,
to )
Value:
case IrOpcode::k##from: \
new_op = mcgraph_->machine()->to(); \
break;

◆ SIMPLE_SIMD_OP

#define SIMPLE_SIMD_OP ( V)

Definition at line 33 of file revectorizer.cc.

◆ SPLAT_CASE

#define SPLAT_CASE ( from,
to )
Value:
case IrOpcode::k##from: \
new_op = mcgraph_->machine()->to(); \
inputs[0] = node0->InputAt(0); \
break;

◆ TRACE

#define TRACE ( ...)
Value:
do { \
if (v8_flags.trace_wasm_revectorize) { \
PrintF("Revec: "); \
PrintF(__VA_ARGS__); \
} \
} while (false)

Definition at line 23 of file revectorizer.cc.

Variable Documentation

◆ node_

Node* node_
private

Definition at line 372 of file revectorizer.cc.

◆ prev_

Node* prev_
private

Definition at line 373 of file revectorizer.cc.