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