From ae24102617c9c86552807a598fe6521ca9c6d7ee Mon Sep 17 00:00:00 2001 From: Jessica Clarke Date: Sat, 23 Oct 2021 01:56:05 +0100 Subject: [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) --- llvm/lib/Target/X86/X86InstrSystem.td | 2 +- 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] -- cgit v1.2.1