< prev index next >

src/hotspot/share/opto/mulnode.cpp

Print this page




1384 //------------------------------Value------------------------------------------
1385 const Type* FmaFNode::Value(PhaseGVN* phase) const {
1386   const Type *t1 = phase->type(in(1));
1387   if (t1 == Type::TOP) return Type::TOP;
1388   if (t1->base() != Type::FloatCon) return Type::FLOAT;
1389   const Type *t2 = phase->type(in(2));
1390   if (t2 == Type::TOP) return Type::TOP;
1391   if (t2->base() != Type::FloatCon) return Type::FLOAT;
1392   const Type *t3 = phase->type(in(3));
1393   if (t3 == Type::TOP) return Type::TOP;
1394   if (t3->base() != Type::FloatCon) return Type::FLOAT;
1395 #ifndef __STDC_IEC_559__
1396   return Type::FLOAT;
1397 #else
1398   float f1 = t1->getf();
1399   float f2 = t2->getf();
1400   float f3 = t3->getf();
1401   return TypeF::make(fma(f1, f2, f3));
1402 #endif
1403 }











1384 //------------------------------Value------------------------------------------
1385 const Type* FmaFNode::Value(PhaseGVN* phase) const {
1386   const Type *t1 = phase->type(in(1));
1387   if (t1 == Type::TOP) return Type::TOP;
1388   if (t1->base() != Type::FloatCon) return Type::FLOAT;
1389   const Type *t2 = phase->type(in(2));
1390   if (t2 == Type::TOP) return Type::TOP;
1391   if (t2->base() != Type::FloatCon) return Type::FLOAT;
1392   const Type *t3 = phase->type(in(3));
1393   if (t3 == Type::TOP) return Type::TOP;
1394   if (t3->base() != Type::FloatCon) return Type::FLOAT;
1395 #ifndef __STDC_IEC_559__
1396   return Type::FLOAT;
1397 #else
1398   float f1 = t1->getf();
1399   float f2 = t2->getf();
1400   float f3 = t3->getf();
1401   return TypeF::make(fma(f1, f2, f3));
1402 #endif
1403 }
1404 
1405 //=============================================================================
1406 //------------------------------hash-------------------------------------------
1407 // Hash function for MulAddS2INode.  Operation is commutative with commutative pairs.
1408 // The hash function must return the same value when edge swapping is performed.
1409 uint MulAddS2INode::hash() const {
1410   return (uintptr_t)in(1) + (uintptr_t)in(2) + (uintptr_t)in(3) + (uintptr_t)in(4) + Opcode();
1411 }
1412 
< prev index next >