これらは, C2 JIT Compiler 用の高レベル中間語を表すクラス. より具体的に言うと, 「SIMD 演算(ベクトル演算)」を表すクラス.
なお, これらのクラスは SuperWord クラスによって生成される (See: SuperWord). (<= たまにそうじゃないところで生成されることもあるが, まぁこれは SuperWord クラスが生成したものを2分木状に整形しているだけなので... (See: final_graph_reshaping_impl())
(#TODO ところでこれらの Node は使われてるか?? Load/Store/Replicate 以外はマシン語が出そうな気がしないが... 何か勘違いしてる??)
Node クラスのサブクラスの1つ. 「SIMD 演算(ベクトル演算)」を表す全ての Node クラスの基底クラス.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------VectorNode--------------------------------------
// Vector Operation
class VectorNode : public Node {
このクラスのサブクラスは単項演算または2項演算を表す.
単項演算の場合は (control input も含めて) 2つの入力ノードを持つ. 2項演算の場合は, (control input も含めて) 3つの入力ノードを持つ.
ただし, どちらの場合も control input は常に空 (0 が設定される).
(なお, vlen 引数はベクトル内の要素の「個数」を表す (合計のバイト数ではない))
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
VectorNode(Node* n1, uint vlen) : Node(NULL, n1), _length(vlen) {
init_flags(Flag_is_Vector);
}
VectorNode(Node* n1, Node* n2, uint vlen) : Node(NULL, n1, n2), _length(vlen) {
init_flags(Flag_is_Vector);
}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは byte 値同士の SIMD 加算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------AddVBNode---------------------------------------
// Vector add byte
class AddVBNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
AddVBNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは char 値同士の SIMD 加算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------AddVCNode---------------------------------------
// Vector add char
class AddVCNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
AddVCNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは short 値同士の SIMD 加算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------AddVSNode---------------------------------------
// Vector add short
class AddVSNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
AddVSNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは int 値同士の SIMD 加算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------AddVINode---------------------------------------
// Vector add int
class AddVINode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
AddVINode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは long 値同士の SIMD 加算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------AddVLNode---------------------------------------
// Vector add long
class AddVLNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
AddVLNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは float 値同士の SIMD 加算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------AddVFNode---------------------------------------
// Vector add float
class AddVFNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
AddVFNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは double 値同士の SIMD 加算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------AddVDNode---------------------------------------
// Vector add double
class AddVDNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
AddVDNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは byte 値同士の SIMD 減算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------SubVBNode---------------------------------------
// Vector subtract byte
class SubVBNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
SubVBNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは char 値同士の SIMD 減算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------SubVCNode---------------------------------------
// Vector subtract char
class SubVCNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
SubVCNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは short 値同士の SIMD 減算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------SubVSNode---------------------------------------
// Vector subtract short
class SubVSNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
SubVSNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは int 値同士の SIMD 減算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------SubVINode---------------------------------------
// Vector subtract int
class SubVINode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
SubVINode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは long 値同士の SIMD 減算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------SubVLNode---------------------------------------
// Vector subtract long
class SubVLNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
SubVLNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは float 値同士の SIMD 減算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------SubVFNode---------------------------------------
// Vector subtract float
class SubVFNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
SubVFNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは double 値同士の SIMD 減算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------SubVDNode---------------------------------------
// Vector subtract double
class SubVDNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
SubVDNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは float 値同士の SIMD 乗算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------MulVFNode---------------------------------------
// Vector multiply float
class MulVFNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
MulVFNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは double 値同士の SIMD 乗算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------MulVDNode---------------------------------------
// Vector multiply double
class MulVDNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
MulVDNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは float 値同士の SIMD 除算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------DivVFNode---------------------------------------
// Vector divide float
class DivVFNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
DivVFNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは double 値同士の SIMD 除算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------DivVDNode---------------------------------------
// Vector Divide double
class DivVDNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
DivVDNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは byte 値同士の SIMD 左シフト演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------LShiftVBNode---------------------------------------
// Vector lshift byte
class LShiftVBNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
LShiftVBNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは char 値同士の SIMD 左シフト演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------LShiftVCNode---------------------------------------
// Vector lshift chars
class LShiftVCNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
LShiftVCNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは short 値同士の SIMD 左シフト演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------LShiftVSNode---------------------------------------
// Vector lshift shorts
class LShiftVSNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
LShiftVSNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは int 値同士の SIMD 左シフト演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------LShiftVINode---------------------------------------
// Vector lshift ints
class LShiftVINode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
LShiftVINode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは byte 値同士の SIMD 論理右シフト演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------URShiftVBNode---------------------------------------
// Vector urshift bytes
class URShiftVBNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
URShiftVBNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは char 値同士の SIMD 論理右シフト演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------URShiftVCNode---------------------------------------
// Vector urshift char
class URShiftVCNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
URShiftVCNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは short 値同士の SIMD 論理右シフト演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------URShiftVSNode---------------------------------------
// Vector urshift shorts
class URShiftVSNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
URShiftVSNode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスは int 値同士の SIMD 論理右シフト演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------URShiftVINode---------------------------------------
// Vector urshift ints
class URShiftVINode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
URShiftVINode(Node* in1, Node* in2, uint vlen) : VectorNode(in1,in2,vlen) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスはベクトル値同士の SIMD 論理積(ビットAND)演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------AndVNode---------------------------------------
// Vector and
class AndVNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
AndVNode(Node* in1, Node* in2, uint vlen, BasicType bt) : VectorNode(in1,in2,vlen), _bt(bt) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスはベクトル値同士の SIMD 論理和(ビットOR)演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------OrVNode---------------------------------------
// Vector or
class OrVNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
OrVNode(Node* in1, Node* in2, uint vlen, BasicType bt) : VectorNode(in1,in2,vlen), _bt(bt) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ. このクラスはベクトル値同士の SIMD 排他的論理和(ビットXOR)演算用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------XorVNode---------------------------------------
// Vector xor
class XorVNode : public VectorNode {
VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
XorVNode(Node* in1, Node* in2, uint vlen, BasicType bt) : VectorNode(in1,in2,vlen), _bt(bt) {}
See: here for details
LoadNode クラスのサブクラスの1つ. SIMD 用の値のロードを表す全ての Node クラスの基底クラス.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------VectorLoadNode--------------------------------------
// Vector Load from memory
class VectorLoadNode : public LoadNode {
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
VectorLoadNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const Type *rt)
: LoadNode(c,mem,adr,at,rt) {
init_flags(Flag_is_Vector);
}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは byte 値 16 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load16BNode--------------------------------------
// Vector load of 16 bytes (8bits signed) from memory
class Load16BNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load16BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::BYTE)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,16)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは byte 値 8 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load8BNode--------------------------------------
// Vector load of 8 bytes (8bits signed) from memory
class Load8BNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load8BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::BYTE)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,8)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは byte 値 4 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load4BNode--------------------------------------
// Vector load of 4 bytes (8bits signed) from memory
class Load4BNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load4BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::BYTE)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,4)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは char 値 8 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load8CNode--------------------------------------
// Vector load of 8 chars (16bits unsigned) from memory
class Load8CNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load8CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,8)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは char 値 4 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load4CNode--------------------------------------
// Vector load of 4 chars (16bits unsigned) from memory
class Load4CNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load4CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,4)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは char 値 2 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load2CNode--------------------------------------
// Vector load of 2 chars (16bits unsigned) from memory
class Load2CNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load2CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::CHAR)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,2)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは short 値 8 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load8SNode--------------------------------------
// Vector load of 8 shorts (16bits signed) from memory
class Load8SNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load8SNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::SHORT)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,8)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは short 値 4 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load4SNode--------------------------------------
// Vector load of 4 shorts (16bits signed) from memory
class Load4SNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load4SNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::SHORT)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,4)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは short 値 2 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load2SNode--------------------------------------
// Vector load of 2 shorts (16bits signed) from memory
class Load2SNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load2SNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::SHORT)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,2)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは int 値 4 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load4INode--------------------------------------
// Vector load of 4 integers (32bits signed) from memory
class Load4INode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load4INode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::INT)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,4)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは int 値 2 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load2INode--------------------------------------
// Vector load of 2 integers (32bits signed) from memory
class Load2INode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load2INode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeInt *ti = TypeInt::INT)
: VectorLoadNode(c,mem,adr,at,vect_type(ti,2)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは long 値 2 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load2LNode--------------------------------------
// Vector load of 2 longs (64bits signed) from memory
class Load2LNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load2LNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const TypeLong *tl = TypeLong::LONG)
: VectorLoadNode(c,mem,adr,at,vect_type(tl,2)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは float 値 4 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load4FNode--------------------------------------
// Vector load of 4 floats (32bits) from memory
class Load4FNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load4FNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const Type *t = Type::FLOAT)
: VectorLoadNode(c,mem,adr,at,vect_type(t,4)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは float 値 2 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load2FNode--------------------------------------
// Vector load of 2 floats (32bits) from memory
class Load2FNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load2FNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const Type *t = Type::FLOAT)
: VectorLoadNode(c,mem,adr,at,vect_type(t,2)) {}
See: here for details
VectorLoadNode クラスの具象サブクラスの1つ. このクラスは double 値 2 個のロード用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Load2DNode--------------------------------------
// Vector load of 2 doubles (64bits) from memory
class Load2DNode : public VectorLoadNode {
VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorNode::make()
(control input も含めて) 3つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 3つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Load2DNode(Node* c, Node* mem, Node* adr, const TypePtr* at, const Type *t = Type::DOUBLE)
: VectorLoadNode(c,mem,adr,at,vect_type(t,2)) {}
See: here for details
StoreNode クラスのサブクラスの1つ. SIMD 用の値のストアを表す全ての Node クラスの基底クラス.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------VectorStoreNode--------------------------------------
// Vector Store to memory
class VectorStoreNode : public StoreNode {
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
VectorStoreNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: StoreNode(c,mem,adr,at,val) {
init_flags(Flag_is_Vector);
}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは byte 値 16 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store16BNode--------------------------------------
// Vector store of 16 bytes (8bits signed) to memory
class Store16BNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store16BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは byte 値 8 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store8BNode--------------------------------------
// Vector store of 8 bytes (8bits signed) to memory
class Store8BNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store8BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは byte 値 4 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store4BNode--------------------------------------
// Vector store of 4 bytes (8bits signed) to memory
class Store4BNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store4BNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは char 値 8 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store8CNode--------------------------------------
// Vector store of 8 chars (16bits signed/unsigned) to memory
class Store8CNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store8CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは char 値 4 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store4CNode--------------------------------------
// Vector store of 4 chars (16bits signed/unsigned) to memory
class Store4CNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store4CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは char 値 2 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store2CNode--------------------------------------
// Vector store of 2 chars (16bits signed/unsigned) to memory
class Store2CNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store2CNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは int 値 4 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store4INode--------------------------------------
// Vector store of 4 integers (32bits signed) to memory
class Store4INode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store4INode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは int 値 2 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store2INode--------------------------------------
// Vector store of 2 integers (32bits signed) to memory
class Store2INode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store2INode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは long 値 2 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store2LNode--------------------------------------
// Vector store of 2 longs (64bits signed) to memory
class Store2LNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store2LNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは float 値 4 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store4FNode--------------------------------------
// Vector store of 4 floats (32bits) to memory
class Store4FNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store4FNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは float 値 2 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store2FNode--------------------------------------
// Vector store of 2 floats (32bits) to memory
class Store2FNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store2FNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorStoredNode クラスの具象サブクラスの1つ. このクラスは double 値 2 個のストア用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Store2DNode--------------------------------------
// Vector store of 2 doubles (64bits) to memory
class Store2DNode : public VectorStoreNode {
VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> VectorStoreNode::make()
(control input も含めて) 4つの入力ノードを持つ. これはスーパークラスである MemNode の入力ノードの先頭 4つに対応する.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Store2DNode(Node* c, Node* mem, Node* adr, const TypePtr* at, Node* val)
: VectorStoreNode(c,mem,adr,at,val) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの byte 値を 16個複製し, byte 値 16 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate16BNode---------------------------------------
// Replicate byte scalar to be vector of 16 bytes
class Replicate16BNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate16BNode(Node* in1) : VectorNode(in1, 16) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの byte 値を 8個複製し, byte 値 8 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate8BNode---------------------------------------
// Replicate byte scalar to be vector of 8 bytes
class Replicate8BNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate8BNode(Node* in1) : VectorNode(in1, 8) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの byte 値を 4個複製し, byte 値 4 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate4BNode---------------------------------------
// Replicate byte scalar to be vector of 4 bytes
class Replicate4BNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate4BNode(Node* in1) : VectorNode(in1, 4) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの char 値を 8個複製し, char 値 8 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate8CNode---------------------------------------
// Replicate char scalar to be vector of 8 chars
class Replicate8CNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate8CNode(Node* in1) : VectorNode(in1, 8) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの char 値を 4個複製し, char 値 4 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate4CNode---------------------------------------
// Replicate char scalar to be vector of 4 chars
class Replicate4CNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate4CNode(Node* in1) : VectorNode(in1, 4) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの char 値を 2個複製し, char 値 2 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate2CNode---------------------------------------
// Replicate char scalar to be vector of 2 chars
class Replicate2CNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate2CNode(Node* in1) : VectorNode(in1, 2) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの short 値を 8個複製し, short 値 8 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate8SNode---------------------------------------
// Replicate short scalar to be vector of 8 shorts
class Replicate8SNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate8SNode(Node* in1) : VectorNode(in1, 8) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの short 値を 4個複製し, short 値 4 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate4SNode---------------------------------------
// Replicate short scalar to be vector of 4 shorts
class Replicate4SNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate4SNode(Node* in1) : VectorNode(in1, 4) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの short 値を 2個複製し, short 値 2 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate2SNode---------------------------------------
// Replicate short scalar to be vector of 2 shorts
class Replicate2SNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate2SNode(Node* in1) : VectorNode(in1, 2) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの int 値を 4個複製し, int 値 4 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate4INode---------------------------------------
// Replicate int scalar to be vector of 4 ints
class Replicate4INode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate4INode(Node* in1) : VectorNode(in1, 4) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの int 値を 2個複製し, int 値 2 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate2INode---------------------------------------
// Replicate int scalar to be vector of 2 ints
class Replicate2INode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate2INode(Node* in1) : VectorNode(in1, 2) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの long 値を 2個複製し, long 値 2 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate2LNode---------------------------------------
// Replicate long scalar to be vector of 2 longs
class Replicate2LNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate2LNode(Node* in1) : VectorNode(in1, 2) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの float 値を 4個複製し, float 値 4 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate4FNode---------------------------------------
// Replicate float scalar to be vector of 4 floats
class Replicate4FNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate4FNode(Node* in1) : VectorNode(in1, 4) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの float 値を 2個複製し, float 値 2 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate2FNode---------------------------------------
// Replicate float scalar to be vector of 2 floats
class Replicate2FNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate2FNode(Node* in1) : VectorNode(in1, 2) {}
See: here for details
VectorNode クラスの具象サブクラスの1つ.
このクラスは, 1つの double 値を 2個複製し, double 値 2 個からなるベクトル値を作成する処理用.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Replicate2DNode---------------------------------------
// Replicate double scalar to be vector of 2 doubles
class Replicate2DNode : public VectorNode {
VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> VectorNode::scalar2vector()
単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Replicate2DNode(Node* in1) : VectorNode(in1, 2) {}
See: here for details
VectorNode クラスのサブクラスの1つ. このクラスは「SIMD 演算の対象となるデータ(スカラ値)を 1つのベクトル値にまとめる(パックする)処理」を表す全ての Node クラスの基底クラス.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------PackNode---------------------------------------
// Pack parent class (not for code generation).
class PackNode : public VectorNode {
このクラスのサブクラスは単項演算または2項演算を表す.
単項演算の場合は (control input も含めて) 2つの入力ノードを持つ. 2項演算の場合は, (control input も含めて) 3つの入力ノードを持つ.
ただし, どちらの場合も control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
PackNode(Node* in1) : VectorNode(in1, 1) {}
PackNode(Node* in1, Node* n2) : VectorNode(in1, n2, 2) {}
See: here for details
PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の byte 値を 1つのベクトル値にまとめる.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------PackBNode---------------------------------------
// Pack byte scalars into vector
class PackBNode : public PackNode {
PackNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> PackNode::make()
(control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
PackBNode(Node* in1) : PackNode(in1) {}
See: here for details
PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の char 値を 1つのベクトル値にまとめる.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------PackCNode---------------------------------------
// Pack char scalars into vector
class PackCNode : public PackNode {
PackNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> PackNode::make()
(control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
PackCNode(Node* in1) : PackNode(in1) {}
See: here for details
PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の short 値を 1つのベクトル値にまとめる.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------PackSNode---------------------------------------
// Pack short scalars into a vector
class PackSNode : public PackNode {
PackNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> PackNode::make()
(control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
PackSNode(Node* in1) : PackNode(in1) {}
See: here for details
PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の int 値を 1つのベクトル値にまとめる.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------PackINode---------------------------------------
// Pack integer scalars into a vector
class PackINode : public PackNode {
以下の箇所で(のみ)生成されている.
そして, この関数は現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> PackNode::make()
Compile::Optimize() -> Compile::final_graph_reshaping() -> final_graph_reshaping_walk() -> final_graph_reshaping_impl()
単項演算の場合は (control input も含めて) 2つの入力ノードを持つ. 2項演算の場合は, (control input も含めて) 3つの入力ノードを持つ.
どちらの場合も control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
PackINode(Node* in1) : PackNode(in1) {}
PackINode(Node* in1, Node* in2) : PackNode(in1, in2) {}
See: here for details
PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の long 値を 1つのベクトル値にまとめる.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------PackLNode---------------------------------------
// Pack long scalars into a vector
class PackLNode : public PackNode {
以下の箇所で(のみ)生成されている.
そして, この関数は現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> PackNode::make()
Compile::Optimize() -> Compile::final_graph_reshaping() -> final_graph_reshaping_walk() -> final_graph_reshaping_impl()
単項演算の場合は (control input も含めて) 2つの入力ノードを持つ. 2項演算の場合は, (control input も含めて) 3つの入力ノードを持つ.
どちらの場合も control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
PackLNode(Node* in1) : PackNode(in1) {}
PackLNode(Node* in1, Node* in2) : PackNode(in1, in2) {}
See: here for details
PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の float 値を 1つのベクトル値にまとめる.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------PackFNode---------------------------------------
// Pack float scalars into vector
class PackFNode : public PackNode {
以下の箇所で(のみ)生成されている.
そして, この関数は現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> PackNode::make()
Compile::Optimize() -> Compile::final_graph_reshaping() -> final_graph_reshaping_walk() -> final_graph_reshaping_impl()
単項演算の場合は (control input も含めて) 2つの入力ノードを持つ. 2項演算の場合は, (control input も含めて) 3つの入力ノードを持つ.
どちらの場合も control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
PackFNode(Node* in1) : PackNode(in1) {}
PackFNode(Node* in1, Node* in2) : PackNode(in1, in2) {}
See: here for details
PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の double 値を 1つのベクトル値にまとめる.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------PackDNode---------------------------------------
// Pack double scalars into a vector
class PackDNode : public PackNode {
以下の箇所で(のみ)生成されている.
そして, この関数は現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::vector_opd() -> PackNode::make()
Compile::Optimize() -> Compile::final_graph_reshaping() -> final_graph_reshaping_walk() -> final_graph_reshaping_impl()
単項演算の場合は (control input も含めて) 2つの入力ノードを持つ. 2項演算の場合は, (control input も含めて) 3つの入力ノードを持つ.
どちらの場合も control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
PackDNode(Node* in1) : PackNode(in1) {}
PackDNode(Node* in1, Node* in2) : PackNode(in1, in2) {}
See: here for details
PackNode クラスの具象サブクラスの1つ. このクラスは, 2つの byte 値を 1つのベクトル値にまとめる.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
// The Pack2xN nodes assist code generation. They are created from
// Pack4C, etc. nodes in final_graph_reshape in the form of a
// balanced, binary tree.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Pack2x1BNode-----------------------------------------
// Pack 2 1-byte integers into vector of 2 bytes
class Pack2x1BNode : public PackNode {
final_graph_reshaping_impl() 内で(のみ)生成されている. そして, この関数は現在は以下のパスで(のみ)呼び出されている.
Compile::Optimize() -> Compile::final_graph_reshaping() -> final_graph_reshaping_walk() -> final_graph_reshaping_impl()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Pack2x1BNode(Node *in1, Node* in2) : PackNode(in1, in2) {}
See: here for details
PackNode クラスの具象サブクラスの1つ. このクラスは, 2つの 2Byte 値 (short/char/Pack2x1B) を 1つのベクトル値にまとめる.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
// The Pack2xN nodes assist code generation. They are created from
// Pack4C, etc. nodes in final_graph_reshape in the form of a
// balanced, binary tree.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------Pack2x2BNode---------------------------------------
// Pack 2 2-byte integers into vector of 4 bytes
class Pack2x2BNode : public PackNode {
final_graph_reshaping_impl() 内で(のみ)生成されている. そして, この関数は現在は以下のパスで(のみ)呼び出されている.
Compile::Optimize() -> Compile::final_graph_reshaping() -> final_graph_reshaping_walk() -> final_graph_reshaping_impl()
2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
Pack2x2BNode(Node *in1, Node* in2) : PackNode(in1, in2) {}
See: here for details
VectorNode クラスのサブクラスの1つ. このクラスは「ベクトル値の中からスカラ値を取り出す処理(アンパック処理)」を表す全ての Node クラスの基底クラス.
なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------ExtractNode---------------------------------------
// Extract a scalar from a vector at position "pos"
class ExtractNode : public Node {
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
ExtractNode(Node* src, ConINode* pos) : Node(NULL, src, (Node*)pos) {
assert(in(2)->get_int() >= 0, "positive constants");
}
See: here for details
ExtractNode クラスの具象サブクラスの1つ. このクラスは, ベクトル値の中から byte 値を取り出す.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------ExtractBNode---------------------------------------
// Extract a byte from a vector at position "pos"
class ExtractBNode : public ExtractNode {
ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::insert_extracts() -> ExtractNode::make()
(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
その他の 2つは以下の通り.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
ExtractBNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}
See: here for details
ExtractNode クラスの具象サブクラスの1つ. このクラスは, ベクトル値の中から char 値を取り出す.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------ExtractCNode---------------------------------------
// Extract a char from a vector at position "pos"
class ExtractCNode : public ExtractNode {
ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::insert_extracts() -> ExtractNode::make()
(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
その他の 2つは以下の通り.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
ExtractCNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}
See: here for details
ExtractNode クラスの具象サブクラスの1つ. このクラスは, ベクトル値の中から short 値を取り出す.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------ExtractSNode---------------------------------------
// Extract a short from a vector at position "pos"
class ExtractSNode : public ExtractNode {
ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::insert_extracts() -> ExtractNode::make()
(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
その他の 2つは以下の通り.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
ExtractSNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}
See: here for details
ExtractNode クラスの具象サブクラスの1つ. このクラスは, ベクトル値の中から int 値を取り出す.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------ExtractINode---------------------------------------
// Extract an int from a vector at position "pos"
class ExtractINode : public ExtractNode {
ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::insert_extracts() -> ExtractNode::make()
(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
その他の 2つは以下の通り.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
ExtractINode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}
See: here for details
ExtractNode クラスの具象サブクラスの1つ. このクラスは, ベクトル値の中から long 値を取り出す.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------ExtractLNode---------------------------------------
// Extract a long from a vector at position "pos"
class ExtractLNode : public ExtractNode {
ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::insert_extracts() -> ExtractNode::make()
(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
その他の 2つは以下の通り.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
ExtractLNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}
See: here for details
ExtractNode クラスの具象サブクラスの1つ. このクラスは, ベクトル値の中から float 値を取り出す.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------ExtractFNode---------------------------------------
// Extract a float from a vector at position "pos"
class ExtractFNode : public ExtractNode {
ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::insert_extracts() -> ExtractNode::make()
(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
その他の 2つは以下の通り.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
ExtractFNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}
See: here for details
ExtractNode クラスの具象サブクラスの1つ. このクラスは, ベクトル値の中から double 値を取り出す.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
//------------------------------ExtractDNode---------------------------------------
// Extract a double from a vector at position "pos"
class ExtractDNode : public ExtractNode {
ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.
PhaseIdealLoop::build_and_optimize() -> SuperWord::transform_loop() -> SuperWord::SLP_extract() -> SuperWord::output() -> SuperWord::insert_extracts() -> ExtractNode::make()
(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).
その他の 2つは以下の通り.
((cite: hotspot/src/share/vm/opto/vectornode.hpp))
ExtractDNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.