292 virtual const Type* bottom_type() const { return Type::DOUBLE; }
293 virtual uint ideal_reg() const { return Op_RegD; }
294 };
295
296 //------------------------------DivVFNode--------------------------------------
297 // Vector divide float
298 class DivVFNode : public VectorNode {
299 public:
300 DivVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
301 virtual int Opcode() const;
302 };
303
304 //------------------------------DivVDNode--------------------------------------
305 // Vector Divide double
306 class DivVDNode : public VectorNode {
307 public:
308 DivVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
309 virtual int Opcode() const;
310 };
311
312 //------------------------------SqrtVDNode--------------------------------------
313 // Vector Sqrt double
314 class SqrtVDNode : public VectorNode {
315 public:
316 SqrtVDNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {}
317 virtual int Opcode() const;
318 };
319
320 //------------------------------LShiftVBNode-----------------------------------
321 // Vector left shift bytes
322 class LShiftVBNode : public VectorNode {
323 public:
324 LShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
325 virtual int Opcode() const;
326 };
327
328 //------------------------------LShiftVSNode-----------------------------------
329 // Vector left shift shorts
330 class LShiftVSNode : public VectorNode {
331 public:
|
292 virtual const Type* bottom_type() const { return Type::DOUBLE; }
293 virtual uint ideal_reg() const { return Op_RegD; }
294 };
295
296 //------------------------------DivVFNode--------------------------------------
297 // Vector divide float
298 class DivVFNode : public VectorNode {
299 public:
300 DivVFNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
301 virtual int Opcode() const;
302 };
303
304 //------------------------------DivVDNode--------------------------------------
305 // Vector Divide double
306 class DivVDNode : public VectorNode {
307 public:
308 DivVDNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
309 virtual int Opcode() const;
310 };
311
312 //------------------------------AbsVFNode--------------------------------------
313 // Vector Abs float
314 class AbsVFNode : public VectorNode {
315 public:
316 AbsVFNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {}
317 virtual int Opcode() const;
318 };
319
320 //------------------------------AbsVDNode--------------------------------------
321 // Vector Abs double
322 class AbsVDNode : public VectorNode {
323 public:
324 AbsVDNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {}
325 virtual int Opcode() const;
326 };
327
328 //------------------------------NegVFNode--------------------------------------
329 // Vector Neg float
330 class NegVFNode : public VectorNode {
331 public:
332 NegVFNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {}
333 virtual int Opcode() const;
334 };
335
336 //------------------------------NegVDNode--------------------------------------
337 // Vector Neg double
338 class NegVDNode : public VectorNode {
339 public:
340 NegVDNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {}
341 virtual int Opcode() const;
342 };
343
344 //------------------------------SqrtVDNode--------------------------------------
345 // Vector Sqrt double
346 class SqrtVDNode : public VectorNode {
347 public:
348 SqrtVDNode(Node* in, const TypeVect* vt) : VectorNode(in,vt) {}
349 virtual int Opcode() const;
350 };
351
352 //------------------------------LShiftVBNode-----------------------------------
353 // Vector left shift bytes
354 class LShiftVBNode : public VectorNode {
355 public:
356 LShiftVBNode(Node* in1, Node* in2, const TypeVect* vt) : VectorNode(in1,in2,vt) {}
357 virtual int Opcode() const;
358 };
359
360 //------------------------------LShiftVSNode-----------------------------------
361 // Vector left shift shorts
362 class LShiftVSNode : public VectorNode {
363 public:
|