23 |
23 |
24 package org.graalvm.compiler.lir.aarch64; |
24 package org.graalvm.compiler.lir.aarch64; |
25 |
25 |
26 import static org.graalvm.compiler.lir.LIRInstruction.OperandFlag.COMPOSITE; |
26 import static org.graalvm.compiler.lir.LIRInstruction.OperandFlag.COMPOSITE; |
27 |
27 |
|
28 import org.graalvm.compiler.asm.aarch64.AArch64Assembler.PrefetchMode; |
28 import org.graalvm.compiler.asm.aarch64.AArch64MacroAssembler; |
29 import org.graalvm.compiler.asm.aarch64.AArch64MacroAssembler; |
29 import org.graalvm.compiler.lir.LIRInstructionClass; |
30 import org.graalvm.compiler.lir.LIRInstructionClass; |
30 import org.graalvm.compiler.lir.asm.CompilationResultBuilder; |
31 import org.graalvm.compiler.lir.asm.CompilationResultBuilder; |
31 |
32 |
32 public final class AArch64PrefetchOp extends AArch64LIRInstruction { |
33 public final class AArch64PrefetchOp extends AArch64LIRInstruction { |
33 public static final LIRInstructionClass<AArch64PrefetchOp> TYPE = LIRInstructionClass.create(AArch64PrefetchOp.class); |
34 public static final LIRInstructionClass<AArch64PrefetchOp> TYPE = LIRInstructionClass.create(AArch64PrefetchOp.class); |
34 |
35 |
35 @SuppressWarnings("unused") private final int instr; // AllocatePrefetchInstr |
36 private final PrefetchMode mode; // AllocatePrefetchInstr |
36 @Alive({COMPOSITE}) protected AArch64AddressValue address; |
37 @Alive({COMPOSITE}) protected AArch64AddressValue address; |
37 |
38 |
38 public AArch64PrefetchOp(AArch64AddressValue address, int instr) { |
39 public AArch64PrefetchOp(AArch64AddressValue address, PrefetchMode mode) { |
39 super(TYPE); |
40 super(TYPE); |
40 this.address = address; |
41 this.address = address; |
41 this.instr = instr; |
42 this.mode = mode; |
42 } |
43 } |
43 |
44 |
44 @Override |
45 @Override |
45 public void emitCode(CompilationResultBuilder crb, AArch64MacroAssembler masm) { |
46 public void emitCode(CompilationResultBuilder crb, AArch64MacroAssembler masm) { |
46 // TODO implement prefetch |
47 // instr gets ignored! |
47 masm.nop(); |
48 masm.prfm(address.toAddress(), mode); |
48 } |
49 } |
49 } |
50 } |