blob: 33806300afa717fb26635b40201a7a31c514461a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package com.seaofnodes.simple.node;
import com.seaofnodes.simple.type.Type;
import com.seaofnodes.simple.type.TypeFloat;
import com.seaofnodes.simple.type.TypeInteger;
// Truncate toward zero, saturating overflow; NaN converts to zero.
public class ToIntegerNode extends Node {
public ToIntegerNode(Node lhs) { super(null,lhs); }
@Override public Tag serialTag() { return Tag.ToInteger; }
@Override public String label() { return "ToInteger"; }
@Override protected String format() { return "(int)%1"; }
@Override public Type compute() {
Type t = in(1)._type;
if( t.isHigh() ) return TypeInteger.TOP;
if( t instanceof TypeFloat tf && tf.isConstant() )
return TypeInteger.constant((long)tf.value());
return TypeInteger.BOT;
}
@Override public Node idealize() { return null; }
@Override Node copy(Node lhs, Node rhs) { return new ToIntegerNode(lhs); }
}
|