mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
Add support for encoding the HLE XACQUIRE and XRELEASE prefixes.
For decoding, keep the current behavior of always decoding these as their REP versions. In the future, this could be improved to recognize the cases where these behave as XACQUIRE and XRELEASE and decode them as such. llvm-svn: 184207
This commit is contained in:
parent
18bf1abdc7
commit
aa267b3e82
@ -37,3 +37,10 @@ def XTEST : I<0x01, MRM_D6, (outs), (ins),
|
||||
def XABORT : Ii8<0xc6, MRM_F8, (outs), (ins i8imm:$imm),
|
||||
"xabort\t$imm",
|
||||
[(int_x86_xabort imm:$imm)]>, Requires<[HasRTM]>;
|
||||
|
||||
// HLE prefixes
|
||||
|
||||
def XACQUIRE_PREFIX : I<0xF2, RawFrm, (outs), (ins), "xacquire", []>, Requires<[HasHLE]>;
|
||||
|
||||
def XRELEASE_PREFIX : I<0xF3, RawFrm, (outs), (ins), "xrelease", []>, Requires<[HasHLE]>;
|
||||
|
||||
|
9
test/MC/X86/x86_64-hle-encoding.s
Normal file
9
test/MC/X86/x86_64-hle-encoding.s
Normal file
@ -0,0 +1,9 @@
|
||||
// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
|
||||
|
||||
// CHECK: xacquire
|
||||
// CHECK: [0xf2]
|
||||
xacquire
|
||||
|
||||
// CHECK: xrelease
|
||||
// CHECK: [0xf3]
|
||||
xrelease
|
@ -461,6 +461,12 @@ RecognizableInstr::filter_ret RecognizableInstr::filter() const {
|
||||
Name == "VMOVQs64rr")
|
||||
return FILTER_WEAK;
|
||||
|
||||
// XACQUIRE and XRELEASE reuse REPNE and REP respectively.
|
||||
// For now, just prefer the REP versions.
|
||||
if (Name == "XACQUIRE_PREFIX" ||
|
||||
Name == "XRELEASE_PREFIX")
|
||||
return FILTER_WEAK;
|
||||
|
||||
if (HasFROperands && Name.find("MOV") != Name.npos &&
|
||||
((Name.find("2") != Name.npos && Name.find("32") == Name.npos) ||
|
||||
(Name.find("to") != Name.npos)))
|
||||
|
Loading…
Reference in New Issue
Block a user