22 */
23
24
25 package org.graalvm.compiler.lir.amd64;
26
27 import org.graalvm.compiler.lir.Variable;
28 import org.graalvm.compiler.lir.gen.ArithmeticLIRGeneratorTool;
29
30 import jdk.vm.ci.amd64.AMD64Kind;
31 import jdk.vm.ci.meta.Value;
32
33 /**
34 * This interface can be used to generate AMD64 LIR for arithmetic operations.
35 */
36 public interface AMD64ArithmeticLIRGeneratorTool extends ArithmeticLIRGeneratorTool {
37
38 Value emitCountLeadingZeros(Value value);
39
40 Value emitCountTrailingZeros(Value value);
41
42 enum RoundingMode {
43 NEAREST(0),
44 DOWN(1),
45 UP(2),
46 TRUNCATE(3);
47
48 public final int encoding;
49
50 RoundingMode(int encoding) {
51 this.encoding = encoding;
52 }
53 }
54
55 Value emitRound(Value value, RoundingMode mode);
56
57 void emitCompareOp(AMD64Kind cmpKind, Variable left, Value right);
58 }
|
22 */
23
24
25 package org.graalvm.compiler.lir.amd64;
26
27 import org.graalvm.compiler.lir.Variable;
28 import org.graalvm.compiler.lir.gen.ArithmeticLIRGeneratorTool;
29
30 import jdk.vm.ci.amd64.AMD64Kind;
31 import jdk.vm.ci.meta.Value;
32
33 /**
34 * This interface can be used to generate AMD64 LIR for arithmetic operations.
35 */
36 public interface AMD64ArithmeticLIRGeneratorTool extends ArithmeticLIRGeneratorTool {
37
38 Value emitCountLeadingZeros(Value value);
39
40 Value emitCountTrailingZeros(Value value);
41
42 Value emitLogicalAndNot(Value value1, Value value2);
43
44 Value emitLowestSetIsolatedBit(Value value);
45
46 Value emitGetMaskUpToLowestSetBit(Value value);
47
48 Value emitResetLowestSetBit(Value value);
49
50 enum RoundingMode {
51 NEAREST(0),
52 DOWN(1),
53 UP(2),
54 TRUNCATE(3);
55
56 public final int encoding;
57
58 RoundingMode(int encoding) {
59 this.encoding = encoding;
60 }
61 }
62
63 Value emitRound(Value value, RoundingMode mode);
64
65 void emitCompareOp(AMD64Kind cmpKind, Variable left, Value right);
66 }
|