[X86] Force VIA PadLock crypto instructions to emit a 0xF3 prefix when they encode to match what GNU as does.
The spec for these says they need 0xf3 but also mentions REP before the mnemonic. But I don't think its fair to users to make them write REP first. And gas doesn't make them. objdump seems to disassemble with or without the prefix and just prints any 0xf3 as REP.
This commit is contained in:
parent
6239d67001
commit
8fa3e8fa14
|
|
@ -564,25 +564,25 @@ def XRSTORS64 : RI<0xC7, MRM3m, (outs), (ins opaquemem:$dst),
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// VIA PadLock crypto instructions
|
// VIA PadLock crypto instructions
|
||||||
let Defs = [RAX, RDI], Uses = [RDX, RDI], SchedRW = [WriteSystem] in
|
let Defs = [RAX, RDI], Uses = [RDX, RDI], SchedRW = [WriteSystem] in
|
||||||
def XSTORE : I<0xa7, MRM_C0, (outs), (ins), "xstore", []>, TB;
|
def XSTORE : I<0xa7, MRM_C0, (outs), (ins), "xstore", []>, TB, REP;
|
||||||
|
|
||||||
def : InstAlias<"xstorerng", (XSTORE)>;
|
def : InstAlias<"xstorerng", (XSTORE)>;
|
||||||
|
|
||||||
let SchedRW = [WriteSystem] in {
|
let SchedRW = [WriteSystem] in {
|
||||||
let Defs = [RSI, RDI], Uses = [RBX, RDX, RSI, RDI] in {
|
let Defs = [RSI, RDI], Uses = [RBX, RDX, RSI, RDI] in {
|
||||||
def XCRYPTECB : I<0xa7, MRM_C8, (outs), (ins), "xcryptecb", []>, TB;
|
def XCRYPTECB : I<0xa7, MRM_C8, (outs), (ins), "xcryptecb", []>, TB, REP;
|
||||||
def XCRYPTCBC : I<0xa7, MRM_D0, (outs), (ins), "xcryptcbc", []>, TB;
|
def XCRYPTCBC : I<0xa7, MRM_D0, (outs), (ins), "xcryptcbc", []>, TB, REP;
|
||||||
def XCRYPTCTR : I<0xa7, MRM_D8, (outs), (ins), "xcryptctr", []>, TB;
|
def XCRYPTCTR : I<0xa7, MRM_D8, (outs), (ins), "xcryptctr", []>, TB, REP;
|
||||||
def XCRYPTCFB : I<0xa7, MRM_E0, (outs), (ins), "xcryptcfb", []>, TB;
|
def XCRYPTCFB : I<0xa7, MRM_E0, (outs), (ins), "xcryptcfb", []>, TB, REP;
|
||||||
def XCRYPTOFB : I<0xa7, MRM_E8, (outs), (ins), "xcryptofb", []>, TB;
|
def XCRYPTOFB : I<0xa7, MRM_E8, (outs), (ins), "xcryptofb", []>, TB, REP;
|
||||||
}
|
}
|
||||||
|
|
||||||
let Defs = [RAX, RSI, RDI], Uses = [RAX, RSI, RDI] in {
|
let Defs = [RAX, RSI, RDI], Uses = [RAX, RSI, RDI] in {
|
||||||
def XSHA1 : I<0xa6, MRM_C8, (outs), (ins), "xsha1", []>, TB;
|
def XSHA1 : I<0xa6, MRM_C8, (outs), (ins), "xsha1", []>, TB, REP;
|
||||||
def XSHA256 : I<0xa6, MRM_D0, (outs), (ins), "xsha256", []>, TB;
|
def XSHA256 : I<0xa6, MRM_D0, (outs), (ins), "xsha256", []>, TB, REP;
|
||||||
}
|
}
|
||||||
let Defs = [RAX, RDX, RSI], Uses = [RAX, RSI] in
|
let Defs = [RAX, RDX, RSI], Uses = [RAX, RSI] in
|
||||||
def MONTMUL : I<0xa6, MRM_C0, (outs), (ins), "montmul", []>, TB;
|
def MONTMUL : I<0xa6, MRM_C0, (outs), (ins), "montmul", []>, TB, REP;
|
||||||
} // SchedRW
|
} // SchedRW
|
||||||
|
|
||||||
//==-----------------------------------------------------------------------===//
|
//==-----------------------------------------------------------------------===//
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,4 @@
|
||||||
|
|
||||||
xstore
|
xstore
|
||||||
// CHECK: xstore
|
// CHECK: xstore
|
||||||
// CHECK: encoding: [0x0f,0xa7,0xc0]
|
// CHECK: encoding: [0xf3,0x0f,0xa7,0xc0]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue