src/share/vm/opto/vectornode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7201026 Cdiff src/share/vm/opto/vectornode.cpp

src/share/vm/opto/vectornode.cpp

Print this page

        

*** 314,323 **** --- 314,341 ---- } ShouldNotReachHere(); return NULL; } + VectorNode* VectorNode::shift_count(Compile* C, Node* shift, Node* cnt, uint vlen, BasicType bt) { + assert(VectorNode::is_shift(shift) && !cnt->is_Con(), "only variable shift count"); + // Match shift count type with shift vector type. + const TypeVect* vt = TypeVect::make(bt, vlen); + switch (shift->Opcode()) { + case Op_LShiftI: + case Op_LShiftL: + return new (C, 2) LShiftCntVNode(cnt, vt); + case Op_RShiftI: + case Op_RShiftL: + case Op_URShiftI: + case Op_URShiftL: + return new (C, 2) RShiftCntVNode(cnt, vt); + } + ShouldNotReachHere(); + return NULL; + } + // Return initial Pack node. Additional operands added with add_opd() calls. PackNode* PackNode::make(Compile* C, Node* s, uint vlen, BasicType bt) { const TypeVect* vt = TypeVect::make(bt, vlen); switch (bt) { case T_BOOLEAN:
*** 379,389 **** // Return the vector version of a scalar load node. LoadVectorNode* LoadVectorNode::make(Compile* C, int opc, Node* ctl, Node* mem, Node* adr, const TypePtr* atyp, uint vlen, BasicType bt) { const TypeVect* vt = TypeVect::make(bt, vlen); return new (C, 3) LoadVectorNode(ctl, mem, adr, atyp, vt); - return NULL; } // Return the vector version of a scalar store node. StoreVectorNode* StoreVectorNode::make(Compile* C, int opc, Node* ctl, Node* mem, Node* adr, const TypePtr* atyp, Node* val, --- 397,406 ----
src/share/vm/opto/vectornode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File