diff --git a/compiler/src/jdk.internal.vm.compiler/src/org/graalvm/compiler/asm/amd64/AMD64Assembler.java b/compiler/src/jdk.internal.vm.compiler/src/org/graalvm/compiler/asm/amd64/AMD64Assembler.java index 5cc4f8934da..7026a4d1540 100644 --- a/compiler/src/jdk.internal.vm.compiler/src/org/graalvm/compiler/asm/amd64/AMD64Assembler.java +++ b/compiler/src/jdk.internal.vm.compiler/src/org/graalvm/compiler/asm/amd64/AMD64Assembler.java @@ -882,6 +882,7 @@ public static class SSEMROp extends AMD64MROp { // MOVSS and MOVSD are the same opcode, just with different operand size prefix public static final SSEMROp MOVSS = new SSEMROp("MOVSS", P_0F, 0x11, PreferredNDS.SRC, OpAssertion.SingleAssertion); public static final SSEMROp MOVSD = new SSEMROp("MOVSD", P_0F, 0x11, PreferredNDS.SRC, OpAssertion.DoubleAssertion); + public static final SSEMROp MOVUPD = new SSEMROp("MOVUPD", 0x66, P_0F, 0x11, PreferredNDS.NONE, OpAssertion.PackedDoubleAssertion); // @formatter:on private final PreferredNDS preferredNDS; diff --git a/compiler/src/jdk.internal.vm.compiler/src/org/graalvm/compiler/core/amd64/AMD64ArithmeticLIRGenerator.java b/compiler/src/jdk.internal.vm.compiler/src/org/graalvm/compiler/core/amd64/AMD64ArithmeticLIRGenerator.java index 0aa5ee458e7..18649e3a231 100644 --- a/compiler/src/jdk.internal.vm.compiler/src/org/graalvm/compiler/core/amd64/AMD64ArithmeticLIRGenerator.java +++ b/compiler/src/jdk.internal.vm.compiler/src/org/graalvm/compiler/core/amd64/AMD64ArithmeticLIRGenerator.java @@ -1,5 +1,6 @@ /* * Copyright (c) 2009, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2026, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1326,6 +1327,9 @@ protected void emitStore(AMD64Kind kind, AMD64AddressValue address, AllocatableV case DOUBLE: getLIRGen().append(new AMD64BinaryConsumer.MemoryMROp(SSEMROp.MOVSD, SD, address, value, state)); break; + case V128_DOUBLE: + getLIRGen().append(new AMD64BinaryConsumer.MemoryMROp(SSEMROp.MOVUPD, PD, address, value, state)); + break; default: throw GraalError.shouldNotReachHereUnexpectedValue(kind); // ExcludeFromJacocoGeneratedReport }