Top

SIMD 命令に関する高レベル中間語(Ideal)クラス (VectorNode, AddVBNode, AddVCNode, AddVSNode, AddVINode, AddVLNode, AddVFNode, AddVDNode, SubVBNode, SubVCNode, SubVSNode, SubVINode, SubVLNode, SubVFNode, SubVDNode, MulVFNode, MulVDNode, DivVFNode, DivVDNode, LShiftVBNode, LShiftVCNode, LShiftVSNode, LShiftVINode, URShiftVBNode, URShiftVCNode, URShiftVSNode, URShiftVINode, AndVNode, OrVNode, XorVNode, VectorLoadNode, Load16BNode, Load8BNode, Load4BNode, Load8CNode, Load4CNode, Load2CNode, Load8SNode, Load4SNode, Load2SNode, Load4INode, Load2INode, Load2LNode, Load4FNode, Load2FNode, Load2DNode, VectorStoreNode, Store16BNode, Store8BNode, Store4BNode, Store8CNode, Store4CNode, Store2CNode, Store4INode, Store2INode, Store2LNode, Store4FNode, Store2FNode, Store2DNode, Replicate16BNode, Replicate8BNode, Replicate4BNode, Replicate8CNode, Replicate4CNode, Replicate2CNode, Replicate8SNode, Replicate4SNode, Replicate2SNode, Replicate4INode, Replicate2INode, Replicate2LNode, Replicate4FNode, Replicate2FNode, Replicate2DNode, PackNode, PackBNode, PackCNode, PackSNode, PackINode, PackLNode, PackFNode, PackDNode, Pack2x1BNode, Pack2x2BNode, ExtractNode, ExtractBNode, ExtractCNode, ExtractSNode, ExtractINode, ExtractLNode, ExtractFNode, ExtractDNode)

これらは, C2 JIT Compiler 用の高レベル中間語を表すクラス. より具体的に言うと, 「SIMD 演算(ベクトル演算)」を表すクラス.

なお, これらのクラスは SuperWord クラスによって生成される (See: SuperWord). (<= たまにそうじゃないところで生成されることもあるが, まぁこれは SuperWord クラスが生成したものを2分木状に整形しているだけなので... (See: final_graph_reshaping_impl())

(#TODO ところでこれらの Node は使われてるか?? Load/Store/Replicate 以外はマシン語が出そうな気がしないが... 何か勘違いしてる??)

クラス一覧(class list)


VectorNode

概要(Summary)

Node クラスのサブクラスの1つ. 「SIMD 演算(ベクトル演算)」を表す全ての Node クラスの基底クラス.

なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------VectorNode--------------------------------------
    // Vector Operation
    class VectorNode : public Node {

内部構造(Internal structure)

このクラスのサブクラスは単項演算または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);
      }

詳細(Details)

See: here for details


AddVBNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは byte 値同士の SIMD 加算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------AddVBNode---------------------------------------
    // Vector add byte
    class AddVBNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


AddVCNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは char 値同士の SIMD 加算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------AddVCNode---------------------------------------
    // Vector add char
    class AddVCNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


AddVSNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは short 値同士の SIMD 加算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------AddVSNode---------------------------------------
    // Vector add short
    class AddVSNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


AddVINode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは int 値同士の SIMD 加算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------AddVINode---------------------------------------
    // Vector add int
    class AddVINode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


AddVLNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは long 値同士の SIMD 加算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------AddVLNode---------------------------------------
    // Vector add long
    class AddVLNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


AddVFNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは float 値同士の SIMD 加算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------AddVFNode---------------------------------------
    // Vector add float
    class AddVFNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


AddVDNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは double 値同士の SIMD 加算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------AddVDNode---------------------------------------
    // Vector add double
    class AddVDNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


SubVBNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは byte 値同士の SIMD 減算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------SubVBNode---------------------------------------
    // Vector subtract byte
    class SubVBNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


SubVCNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは char 値同士の SIMD 減算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------SubVCNode---------------------------------------
    // Vector subtract char
    class SubVCNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


SubVSNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは short 値同士の SIMD 減算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------SubVSNode---------------------------------------
    // Vector subtract short
    class SubVSNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


SubVINode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは int 値同士の SIMD 減算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------SubVINode---------------------------------------
    // Vector subtract int
    class SubVINode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


SubVLNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは long 値同士の SIMD 減算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------SubVLNode---------------------------------------
    // Vector subtract long
    class SubVLNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


SubVFNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは float 値同士の SIMD 減算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------SubVFNode---------------------------------------
    // Vector subtract float
    class SubVFNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


SubVDNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは double 値同士の SIMD 減算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------SubVDNode---------------------------------------
    // Vector subtract double
    class SubVDNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


MulVFNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは float 値同士の SIMD 乗算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------MulVFNode---------------------------------------
    // Vector multiply float
    class MulVFNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


MulVDNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは double 値同士の SIMD 乗算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------MulVDNode---------------------------------------
    // Vector multiply double
    class MulVDNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


DivVFNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは float 値同士の SIMD 除算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------DivVFNode---------------------------------------
    // Vector divide float
    class DivVFNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


DivVDNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは double 値同士の SIMD 除算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------DivVDNode---------------------------------------
    // Vector Divide double
    class DivVDNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


LShiftVBNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは byte 値同士の SIMD 左シフト演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------LShiftVBNode---------------------------------------
    // Vector lshift byte
    class LShiftVBNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


LShiftVCNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは char 値同士の SIMD 左シフト演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------LShiftVCNode---------------------------------------
    // Vector lshift chars
    class LShiftVCNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


LShiftVSNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは short 値同士の SIMD 左シフト演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------LShiftVSNode---------------------------------------
    // Vector lshift shorts
    class LShiftVSNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


LShiftVINode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは int 値同士の SIMD 左シフト演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------LShiftVINode---------------------------------------
    // Vector lshift ints
    class LShiftVINode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


URShiftVBNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは byte 値同士の SIMD 論理右シフト演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------URShiftVBNode---------------------------------------
    // Vector urshift bytes
    class URShiftVBNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


URShiftVCNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは char 値同士の SIMD 論理右シフト演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------URShiftVCNode---------------------------------------
    // Vector urshift char
    class URShiftVCNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


URShiftVSNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは short 値同士の SIMD 論理右シフト演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------URShiftVSNode---------------------------------------
    // Vector urshift shorts
    class URShiftVSNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


URShiftVINode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスは int 値同士の SIMD 論理右シフト演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------URShiftVINode---------------------------------------
    // Vector urshift ints
    class URShiftVINode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


AndVNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスはベクトル値同士の SIMD 論理積(ビットAND)演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------AndVNode---------------------------------------
    // Vector and
    class AndVNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


OrVNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスはベクトル値同士の SIMD 論理和(ビットOR)演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------OrVNode---------------------------------------
    // Vector or
    class OrVNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


XorVNode

概要(Summary)

VectorNode クラスの具象サブクラスの1つ. このクラスはベクトル値同士の SIMD 排他的論理和(ビットXOR)演算用.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------XorVNode---------------------------------------
    // Vector xor
    class XorVNode : public VectorNode {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

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) {}

詳細(Details)

See: here for details


VectorLoadNode

概要(Summary)

LoadNode クラスのサブクラスの1つ. SIMD 用の値のロードを表す全ての Node クラスの基底クラス.

なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------VectorLoadNode--------------------------------------
    // Vector Load from memory
    class VectorLoadNode : public LoadNode {

内部構造(Internal structure)

(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);
      }

詳細(Details)

See: here for details


Load16BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load8BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load4BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load8CNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load4CNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load2CNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load8SNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load4SNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load2SNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load4INode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load2INode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load2LNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load4FNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load2FNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


Load2DNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorLoadNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorNode::make()

内部構造(Internal structure)

(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)) {}

詳細(Details)

See: here for details


VectorStoreNode

概要(Summary)

StoreNode クラスのサブクラスの1つ. SIMD 用の値のストアを表す全ての Node クラスの基底クラス.

なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------VectorStoreNode--------------------------------------
    // Vector Store to memory
    class VectorStoreNode : public StoreNode {

内部構造(Internal structure)

(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);
      }

詳細(Details)

See: here for details


Store16BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store8BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store4BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store8CNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store4CNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store2CNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store4INode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store2INode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store2LNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store4FNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store2FNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Store2DNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorStoreNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> VectorStoreNode::make()

内部構造(Internal structure)

(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) {}

詳細(Details)

See: here for details


Replicate16BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate16BNode(Node* in1) : VectorNode(in1, 16) {}

詳細(Details)

See: here for details


Replicate8BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate8BNode(Node* in1) : VectorNode(in1, 8) {}

詳細(Details)

See: here for details


Replicate4BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate4BNode(Node* in1) : VectorNode(in1, 4) {}

詳細(Details)

See: here for details


Replicate8CNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate8CNode(Node* in1) : VectorNode(in1, 8) {}

詳細(Details)

See: here for details


Replicate4CNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate4CNode(Node* in1) : VectorNode(in1, 4) {}

詳細(Details)

See: here for details


Replicate2CNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate2CNode(Node* in1) : VectorNode(in1, 2) {}

詳細(Details)

See: here for details


Replicate8SNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate8SNode(Node* in1) : VectorNode(in1, 8) {}

詳細(Details)

See: here for details


Replicate4SNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate4SNode(Node* in1) : VectorNode(in1, 4) {}

詳細(Details)

See: here for details


Replicate2SNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate2SNode(Node* in1) : VectorNode(in1, 2) {}

詳細(Details)

See: here for details


Replicate4INode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate4INode(Node* in1) : VectorNode(in1, 4) {}

詳細(Details)

See: here for details


Replicate2INode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate2INode(Node* in1) : VectorNode(in1, 2) {}

詳細(Details)

See: here for details


Replicate2LNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate2LNode(Node* in1) : VectorNode(in1, 2) {}

詳細(Details)

See: here for details


Replicate4FNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate4FNode(Node* in1) : VectorNode(in1, 4) {}

詳細(Details)

See: here for details


Replicate2FNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate2FNode(Node* in1) : VectorNode(in1, 2) {}

詳細(Details)

See: here for details


Replicate2DNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

VectorNode::scalar2vector() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> VectorNode::scalar2vector()

内部構造(Internal structure)

単項演算を表すノードなので (control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Replicate2DNode(Node* in1) : VectorNode(in1, 2) {}

詳細(Details)

See: here for details


PackNode

概要(Summary)

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 {

内部構造(Internal structure)

このクラスのサブクラスは単項演算または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) {}

詳細(Details)

See: here for details


PackBNode

概要(Summary)

PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の byte 値を 1つのベクトル値にまとめる.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------PackBNode---------------------------------------
    // Pack byte scalars into vector
    class PackBNode : public PackNode {

使われ方(Usage)

生成箇所(where its instances are created)

PackNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> PackNode::make()

内部構造(Internal structure)

(control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      PackBNode(Node* in1)  : PackNode(in1) {}

詳細(Details)

See: here for details


PackCNode

概要(Summary)

PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の char 値を 1つのベクトル値にまとめる.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------PackCNode---------------------------------------
    // Pack char scalars into vector
    class PackCNode : public PackNode {

使われ方(Usage)

生成箇所(where its instances are created)

PackNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> PackNode::make()

内部構造(Internal structure)

(control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      PackCNode(Node* in1)  : PackNode(in1) {}

詳細(Details)

See: here for details


PackSNode

概要(Summary)

PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の short 値を 1つのベクトル値にまとめる.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------PackSNode---------------------------------------
    // Pack short scalars into a vector
    class PackSNode : public PackNode {

使われ方(Usage)

生成箇所(where its instances are created)

PackNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::vector_opd()
            -> PackNode::make()

内部構造(Internal structure)

(control input も含めて) 2つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      PackSNode(Node* in1)  : PackNode(in1) {}

詳細(Details)

See: here for details


PackINode

概要(Summary)

PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の int 値を 1つのベクトル値にまとめる.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------PackINode---------------------------------------
    // Pack integer scalars into a vector
    class PackINode : public PackNode {

使われ方(Usage)

生成箇所(where its instances are created)

以下の箇所で(のみ)生成されている.

そして, この関数は現在は以下のパスで(のみ)呼び出されている.

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()

内部構造(Internal structure)

単項演算の場合は (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) {}

詳細(Details)

See: here for details


PackLNode

概要(Summary)

PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の long 値を 1つのベクトル値にまとめる.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------PackLNode---------------------------------------
    // Pack long scalars into a vector
    class PackLNode : public PackNode {

使われ方(Usage)

生成箇所(where its instances are created)

以下の箇所で(のみ)生成されている.

そして, この関数は現在は以下のパスで(のみ)呼び出されている.

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()

内部構造(Internal structure)

単項演算の場合は (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) {}

詳細(Details)

See: here for details


PackFNode

概要(Summary)

PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の float 値を 1つのベクトル値にまとめる.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------PackFNode---------------------------------------
    // Pack float scalars into vector
    class PackFNode : public PackNode {

使われ方(Usage)

生成箇所(where its instances are created)

以下の箇所で(のみ)生成されている.

そして, この関数は現在は以下のパスで(のみ)呼び出されている.

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()

内部構造(Internal structure)

単項演算の場合は (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) {}

詳細(Details)

See: here for details


PackDNode

概要(Summary)

PackNode クラスの具象サブクラスの1つ. このクラスは, 複数の double 値を 1つのベクトル値にまとめる.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
    //------------------------------PackDNode---------------------------------------
    // Pack double scalars into a vector
    class PackDNode : public PackNode {

使われ方(Usage)

生成箇所(where its instances are created)

以下の箇所で(のみ)生成されている.

そして, この関数は現在は以下のパスで(のみ)呼び出されている.

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()

内部構造(Internal structure)

単項演算の場合は (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) {}

詳細(Details)

See: here for details


Pack2x1BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

final_graph_reshaping_impl() 内で(のみ)生成されている. そして, この関数は現在は以下のパスで(のみ)呼び出されている.

Compile::Optimize()
-> Compile::final_graph_reshaping()
   -> final_graph_reshaping_walk()
      -> final_graph_reshaping_impl()

内部構造(Internal structure)

2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Pack2x1BNode(Node *in1, Node* in2) : PackNode(in1, in2) {}

詳細(Details)

See: here for details


Pack2x2BNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

final_graph_reshaping_impl() 内で(のみ)生成されている. そして, この関数は現在は以下のパスで(のみ)呼び出されている.

Compile::Optimize()
-> Compile::final_graph_reshaping()
   -> final_graph_reshaping_walk()
      -> final_graph_reshaping_impl()

内部構造(Internal structure)

2項演算を表すノードなので, (control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      Pack2x2BNode(Node *in1, Node* in2) : PackNode(in1, in2) {}

詳細(Details)

See: here for details


ExtractNode

概要(Summary)

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 {

内部構造(Internal structure)

    ((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");
      }

詳細(Details)

See: here for details


ExtractBNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::insert_extracts()
            -> ExtractNode::make()

内部構造(Internal structure)

(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

その他の 2つは以下の通り.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      ExtractBNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}

詳細(Details)

See: here for details


ExtractCNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::insert_extracts()
            -> ExtractNode::make()

内部構造(Internal structure)

(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

その他の 2つは以下の通り.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      ExtractCNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}

詳細(Details)

See: here for details


ExtractSNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::insert_extracts()
            -> ExtractNode::make()

内部構造(Internal structure)

(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

その他の 2つは以下の通り.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      ExtractSNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}

詳細(Details)

See: here for details


ExtractINode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::insert_extracts()
            -> ExtractNode::make()

内部構造(Internal structure)

(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

その他の 2つは以下の通り.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      ExtractINode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}

詳細(Details)

See: here for details


ExtractLNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::insert_extracts()
            -> ExtractNode::make()

内部構造(Internal structure)

(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

その他の 2つは以下の通り.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      ExtractLNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}

詳細(Details)

See: here for details


ExtractFNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::insert_extracts()
            -> ExtractNode::make()

内部構造(Internal structure)

(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

その他の 2つは以下の通り.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      ExtractFNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}

詳細(Details)

See: here for details


ExtractDNode

概要(Summary)

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 {

使われ方(Usage)

生成箇所(where its instances are created)

ExtractNode::make() というファクトリメソッドが用意されており, その中で(のみ)生成されている. そして, このファクトリメソッドは, 現在は以下のパスで(のみ)呼び出されている.

PhaseIdealLoop::build_and_optimize()
-> SuperWord::transform_loop()
   -> SuperWord::SLP_extract()
      -> SuperWord::output()
         -> SuperWord::insert_extracts()
            -> ExtractNode::make()

内部構造(Internal structure)

(control input も含めて) 3つの入力ノードを持つ. ただし control input は常に空 (0 が設定される).

その他の 2つは以下の通り.

    ((cite: hotspot/src/share/vm/opto/vectornode.hpp))
      ExtractDNode(Node* src, ConINode* pos) : ExtractNode(src, pos) {}

詳細(Details)

See: here for details



This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.