diff options
author | Jessica Clarke <jrtc27@jrtc27.com> | 2021-10-23 01:56:05 +0100 |
---|---|---|
committer | Tom Stellard <tstellar@redhat.com> | 2021-12-21 16:48:10 -0800 |
commit | ae24102617c9c86552807a598fe6521ca9c6d7ee (patch) | |
tree | 1a5bd667fcfaad97a9513860d6f328f17e306147 | |
parent | c95753ff5c116134a5ff8029cf2c35c8b760a027 (diff) | |
download | llvm-ae24102617c9c86552807a598fe6521ca9c6d7ee.tar.gz |
[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
(cherry picked from commit 2d8c18fbbdd1b07ab0d36ac49ef63f4d243afb8b)
-rw-r--r-- | llvm/lib/Target/X86/X86InstrSystem.td | 2 | ||||
-rw-r--r-- | llvm/test/MC/X86/padlock.s | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86InstrSystem.td b/llvm/lib/Target/X86/X86InstrSystem.td index 48c27051a872..355ddf26e3bb 100644 --- a/llvm/lib/Target/X86/X86InstrSystem.td +++ b/llvm/lib/Target/X86/X86InstrSystem.td @@ -583,7 +583,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 c79d346fa23e..9f9b16294ea0 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] |