1242 const Type *CosDNode::Value( PhaseTransform *phase ) const { |
1242 const Type *CosDNode::Value( PhaseTransform *phase ) const { |
1243 const Type *t1 = phase->type( in(1) ); |
1243 const Type *t1 = phase->type( in(1) ); |
1244 if( t1 == Type::TOP ) return Type::TOP; |
1244 if( t1 == Type::TOP ) return Type::TOP; |
1245 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1245 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1246 double d = t1->getd(); |
1246 double d = t1->getd(); |
1247 if( d < 0.0 ) return Type::DOUBLE; |
1247 return TypeD::make( StubRoutines::intrinsic_cos( d ) ); |
1248 return TypeD::make( SharedRuntime::dcos( d ) ); |
|
1249 } |
1248 } |
1250 |
1249 |
1251 //============================================================================= |
1250 //============================================================================= |
1252 //------------------------------Value------------------------------------------ |
1251 //------------------------------Value------------------------------------------ |
1253 // Compute sin |
1252 // Compute sin |
1254 const Type *SinDNode::Value( PhaseTransform *phase ) const { |
1253 const Type *SinDNode::Value( PhaseTransform *phase ) const { |
1255 const Type *t1 = phase->type( in(1) ); |
1254 const Type *t1 = phase->type( in(1) ); |
1256 if( t1 == Type::TOP ) return Type::TOP; |
1255 if( t1 == Type::TOP ) return Type::TOP; |
1257 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1256 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1258 double d = t1->getd(); |
1257 double d = t1->getd(); |
1259 if( d < 0.0 ) return Type::DOUBLE; |
1258 return TypeD::make( StubRoutines::intrinsic_sin( d ) ); |
1260 return TypeD::make( SharedRuntime::dsin( d ) ); |
|
1261 } |
1259 } |
1262 |
1260 |
1263 //============================================================================= |
1261 //============================================================================= |
1264 //------------------------------Value------------------------------------------ |
1262 //------------------------------Value------------------------------------------ |
1265 // Compute tan |
1263 // Compute tan |
1266 const Type *TanDNode::Value( PhaseTransform *phase ) const { |
1264 const Type *TanDNode::Value( PhaseTransform *phase ) const { |
1267 const Type *t1 = phase->type( in(1) ); |
1265 const Type *t1 = phase->type( in(1) ); |
1268 if( t1 == Type::TOP ) return Type::TOP; |
1266 if( t1 == Type::TOP ) return Type::TOP; |
1269 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1267 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1270 double d = t1->getd(); |
1268 double d = t1->getd(); |
1271 if( d < 0.0 ) return Type::DOUBLE; |
1269 return TypeD::make( StubRoutines::intrinsic_tan( d ) ); |
1272 return TypeD::make( SharedRuntime::dtan( d ) ); |
|
1273 } |
1270 } |
1274 |
1271 |
1275 //============================================================================= |
1272 //============================================================================= |
1276 //------------------------------Value------------------------------------------ |
1273 //------------------------------Value------------------------------------------ |
1277 // Compute log |
1274 // Compute log |
1278 const Type *LogDNode::Value( PhaseTransform *phase ) const { |
1275 const Type *LogDNode::Value( PhaseTransform *phase ) const { |
1279 const Type *t1 = phase->type( in(1) ); |
1276 const Type *t1 = phase->type( in(1) ); |
1280 if( t1 == Type::TOP ) return Type::TOP; |
1277 if( t1 == Type::TOP ) return Type::TOP; |
1281 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1278 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1282 double d = t1->getd(); |
1279 double d = t1->getd(); |
1283 if( d < 0.0 ) return Type::DOUBLE; |
1280 return TypeD::make( StubRoutines::intrinsic_log( d ) ); |
1284 return TypeD::make( SharedRuntime::dlog( d ) ); |
|
1285 } |
1281 } |
1286 |
1282 |
1287 //============================================================================= |
1283 //============================================================================= |
1288 //------------------------------Value------------------------------------------ |
1284 //------------------------------Value------------------------------------------ |
1289 // Compute log10 |
1285 // Compute log10 |
1290 const Type *Log10DNode::Value( PhaseTransform *phase ) const { |
1286 const Type *Log10DNode::Value( PhaseTransform *phase ) const { |
1291 const Type *t1 = phase->type( in(1) ); |
1287 const Type *t1 = phase->type( in(1) ); |
1292 if( t1 == Type::TOP ) return Type::TOP; |
1288 if( t1 == Type::TOP ) return Type::TOP; |
1293 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1289 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1294 double d = t1->getd(); |
1290 double d = t1->getd(); |
1295 if( d < 0.0 ) return Type::DOUBLE; |
1291 return TypeD::make( StubRoutines::intrinsic_log10( d ) ); |
1296 return TypeD::make( SharedRuntime::dlog10( d ) ); |
|
1297 } |
1292 } |
1298 |
1293 |
1299 //============================================================================= |
1294 //============================================================================= |
1300 //------------------------------Value------------------------------------------ |
1295 //------------------------------Value------------------------------------------ |
1301 // Compute exp |
1296 // Compute exp |
1302 const Type *ExpDNode::Value( PhaseTransform *phase ) const { |
1297 const Type *ExpDNode::Value( PhaseTransform *phase ) const { |
1303 const Type *t1 = phase->type( in(1) ); |
1298 const Type *t1 = phase->type( in(1) ); |
1304 if( t1 == Type::TOP ) return Type::TOP; |
1299 if( t1 == Type::TOP ) return Type::TOP; |
1305 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1300 if( t1->base() != Type::DoubleCon ) return Type::DOUBLE; |
1306 double d = t1->getd(); |
1301 double d = t1->getd(); |
1307 if( d < 0.0 ) return Type::DOUBLE; |
1302 return TypeD::make( StubRoutines::intrinsic_exp( d ) ); |
1308 return TypeD::make( SharedRuntime::dexp( d ) ); |
|
1309 } |
1303 } |
1310 |
1304 |
1311 |
1305 |
1312 //============================================================================= |
1306 //============================================================================= |
1313 //------------------------------Value------------------------------------------ |
1307 //------------------------------Value------------------------------------------ |