[llvm] 2d8c18f - [X86] Don't add implicit REP prefix to VIA PadLock xstore
Jessica Clarke via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 22 17:57:49 PDT 2021
Author: Jessica Clarke
Date: 2021-10-23T01:57:17+01:00
New Revision: 2d8c18fbbdd1b07ab0d36ac49ef63f4d243afb8b
URL: https://github.com/llvm/llvm-project/commit/2d8c18fbbdd1b07ab0d36ac49ef63f4d243afb8b
DIFF: https://github.com/llvm/llvm-project/commit/2d8c18fbbdd1b07ab0d36ac49ef63f4d243afb8b.diff
LOG: [X86] Don't add implicit REP prefix to VIA PadLock xstore
Commit 8fa3e8fa1492 added an implicit REP prefix to all VIA PadLock
instructions, but GNU as doesn't add one to xstore, only all the others.
This resulted in a kernel panic regression in FreeBSD upon updating to
LLVM 11 (https://bugs.freebsd.org/259218) which includes the commit in
question. This partially reverts that commit.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D112355
Added:
Modified:
llvm/lib/Target/X86/X86InstrSystem.td
llvm/test/MC/X86/padlock.s
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86InstrSystem.td b/llvm/lib/Target/X86/X86InstrSystem.td
index 0f86f0364ccd1..b4dd99d08a626 100644
--- a/llvm/lib/Target/X86/X86InstrSystem.td
+++ b/llvm/lib/Target/X86/X86InstrSystem.td
@@ -584,7 +584,7 @@ def XRSTORS64 : RI<0xC7, MRM3m, (outs), (ins opaquemem:$dst),
//===----------------------------------------------------------------------===//
// VIA PadLock crypto instructions
let Defs = [RAX, RDI], Uses = [RDX, RDI], SchedRW = [WriteSystem] in
- def XSTORE : I<0xa7, MRM_C0, (outs), (ins), "xstore", []>, TB, REP;
+ def XSTORE : I<0xa7, MRM_C0, (outs), (ins), "xstore", []>, TB;
def : InstAlias<"xstorerng", (XSTORE)>;
diff --git a/llvm/test/MC/X86/padlock.s b/llvm/test/MC/X86/padlock.s
index c79d346fa23ee..9f9b16294ea02 100644
--- a/llvm/test/MC/X86/padlock.s
+++ b/llvm/test/MC/X86/padlock.s
@@ -1,8 +1,11 @@
// RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s
+/// Check xstore does not get an implicit REP prefix but all other PadLock
+/// instructions do.
+
xstore
// CHECK: xstore
-// CHECK: encoding: [0xf3,0x0f,0xa7,0xc0]
+// CHECK: encoding: [0x0f,0xa7,0xc0]
xcryptecb
// CHECK: xcryptecb
// CHECK: encoding: [0xf3,0x0f,0xa7,0xc8]
More information about the llvm-commits
mailing list