33 import org.graalvm.compiler.asm.amd64.AMD64Assembler.VexRMOp; |
33 import org.graalvm.compiler.asm.amd64.AMD64Assembler.VexRMOp; |
34 import org.graalvm.compiler.asm.amd64.AMD64MacroAssembler; |
34 import org.graalvm.compiler.asm.amd64.AMD64MacroAssembler; |
35 import org.graalvm.compiler.asm.amd64.AVXKind.AVXSize; |
35 import org.graalvm.compiler.asm.amd64.AVXKind.AVXSize; |
36 import org.graalvm.compiler.lir.LIRInstructionClass; |
36 import org.graalvm.compiler.lir.LIRInstructionClass; |
37 import org.graalvm.compiler.lir.Opcode; |
37 import org.graalvm.compiler.lir.Opcode; |
38 import org.graalvm.compiler.lir.amd64.AMD64LIRInstruction; |
|
39 import org.graalvm.compiler.lir.asm.CompilationResultBuilder; |
38 import org.graalvm.compiler.lir.asm.CompilationResultBuilder; |
40 |
39 |
41 import jdk.vm.ci.meta.AllocatableValue; |
40 import jdk.vm.ci.meta.AllocatableValue; |
42 |
41 |
43 public final class AMD64VectorCompareOp extends AMD64LIRInstruction { |
42 public final class AMD64VectorCompareOp extends AMD64VectorInstruction { |
44 public static final LIRInstructionClass<AMD64VectorCompareOp> TYPE = LIRInstructionClass.create(AMD64VectorCompareOp.class); |
43 public static final LIRInstructionClass<AMD64VectorCompareOp> TYPE = LIRInstructionClass.create(AMD64VectorCompareOp.class); |
45 |
44 |
46 @Opcode private final VexRMOp opcode; |
45 @Opcode private final VexRMOp opcode; |
47 private final AVXSize size; |
|
48 @Use({REG}) protected AllocatableValue x; |
46 @Use({REG}) protected AllocatableValue x; |
49 @Use({REG, STACK}) protected AllocatableValue y; |
47 @Use({REG, STACK}) protected AllocatableValue y; |
50 |
48 |
51 public AMD64VectorCompareOp(VexRMOp opcode, AllocatableValue x, AllocatableValue y) { |
49 public AMD64VectorCompareOp(VexRMOp opcode, AllocatableValue x, AllocatableValue y) { |
52 this(opcode, AVXSize.XMM, x, y); |
50 this(opcode, AVXSize.XMM, x, y); |
53 } |
51 } |
54 |
52 |
55 public AMD64VectorCompareOp(VexRMOp opcode, AVXSize size, AllocatableValue x, AllocatableValue y) { |
53 public AMD64VectorCompareOp(VexRMOp opcode, AVXSize size, AllocatableValue x, AllocatableValue y) { |
56 super(TYPE); |
54 super(TYPE, size); |
57 this.opcode = opcode; |
55 this.opcode = opcode; |
58 this.size = size; |
|
59 this.x = x; |
56 this.x = x; |
60 this.y = y; |
57 this.y = y; |
61 } |
58 } |
62 |
59 |
63 @Override |
60 @Override |