235 case Op_ReplicateB: 236 case Op_ReplicateS: 237 case Op_ReplicateI: 238 case Op_ReplicateL: 239 case Op_ReplicateF: 240 case Op_ReplicateD: 241 return true; 242 default: 243 return false; 244 } 245 } 246 247 // [Start, end) half-open range defining which operands are vectors 248 void VectorNode::vector_operands(Node* n, uint* start, uint* end) { 249 switch (n->Opcode()) { 250 case Op_LoadB: case Op_LoadUB: 251 case Op_LoadS: case Op_LoadUS: 252 case Op_LoadI: case Op_LoadL: 253 case Op_LoadF: case Op_LoadD: 254 case Op_LoadP: case Op_LoadN: 255 *start = 0; 256 *end = 0; // no vector operands 257 break; 258 case Op_StoreB: case Op_StoreC: 259 case Op_StoreI: case Op_StoreL: 260 case Op_StoreF: case Op_StoreD: 261 case Op_StoreP: case Op_StoreN: 262 *start = MemNode::ValueIn; 263 *end = MemNode::ValueIn + 1; // 1 vector operand 264 break; 265 case Op_LShiftI: case Op_LShiftL: 266 case Op_RShiftI: case Op_RShiftL: 267 case Op_URShiftI: case Op_URShiftL: 268 *start = 1; 269 *end = 2; // 1 vector operand 270 break; 271 case Op_AddI: case Op_AddL: case Op_AddF: case Op_AddD: 272 case Op_SubI: case Op_SubL: case Op_SubF: case Op_SubD: 273 case Op_MulI: case Op_MulL: case Op_MulF: case Op_MulD: 274 case Op_DivF: case Op_DivD: | 235 case Op_ReplicateB: 236 case Op_ReplicateS: 237 case Op_ReplicateI: 238 case Op_ReplicateL: 239 case Op_ReplicateF: 240 case Op_ReplicateD: 241 return true; 242 default: 243 return false; 244 } 245 } 246 247 // [Start, end) half-open range defining which operands are vectors 248 void VectorNode::vector_operands(Node* n, uint* start, uint* end) { 249 switch (n->Opcode()) { 250 case Op_LoadB: case Op_LoadUB: 251 case Op_LoadS: case Op_LoadUS: 252 case Op_LoadI: case Op_LoadL: 253 case Op_LoadF: case Op_LoadD: 254 case Op_LoadP: case Op_LoadN: 255 case Op_LoadBarrierSlowReg: 256 case Op_LoadBarrierWeakSlowReg: 257 *start = 0; 258 *end = 0; // no vector operands 259 break; 260 case Op_StoreB: case Op_StoreC: 261 case Op_StoreI: case Op_StoreL: 262 case Op_StoreF: case Op_StoreD: 263 case Op_StoreP: case Op_StoreN: 264 *start = MemNode::ValueIn; 265 *end = MemNode::ValueIn + 1; // 1 vector operand 266 break; 267 case Op_LShiftI: case Op_LShiftL: 268 case Op_RShiftI: case Op_RShiftL: 269 case Op_URShiftI: case Op_URShiftL: 270 *start = 1; 271 *end = 2; // 1 vector operand 272 break; 273 case Op_AddI: case Op_AddL: case Op_AddF: case Op_AddD: 274 case Op_SubI: case Op_SubL: case Op_SubF: case Op_SubD: 275 case Op_MulI: case Op_MulL: case Op_MulF: case Op_MulD: 276 case Op_DivF: case Op_DivD: |