[PATCH] D141458: [X86] Add RMPQUERY to SNP instructions
Simon Pilgrim via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 2 02:20:48 PST 2023
RKSimon added inline comments.
================
Comment at: llvm/lib/Target/X86/X86InstrSNP.td:38
// F3 0F 01 FE
-let Uses = [RAX] in
+let Uses = [RAX, RCX], Defs = [EAX, EFLAGS] in
def RMPADJUST: I<0x01, MRM_FE, (outs), (ins), "rmpadjust", []>, XS,
----------------
Looking at the description in APM3 - it uses RDX as well (for permissions)
```
Modifies RMP permissions for a guest page. The guest virtual address is specified in the RAX register.
The page size is specified in RCX[0]. The target VMPL and its permissions are specified in the RDX
register as follows:
```
================
Comment at: llvm/lib/Target/X86/X86InstrSNP.td:43
+// F3 0F 01 FD
+let Uses = [RAX, RDX], Defs = [RCX, RDX] in
+def RMPQUERY: I<0x01, MRM_FD, (outs), (ins), "rmpquery", []>, XS,
----------------
RKSimon wrote:
> craig.topper wrote:
> > Defs doesn't reflect this additional sentence from the spec
> >
> > ```
> > Upon completion, a return code is stored in EAX. rFLAGS bits OF, ZF, AF, PF and SF are set based on
> > return code.
> > ```
> All the SNP instructions seem to be missing this in fact - and many update RAX/EAX with a return code as well.
Uses RCX as well?
```
Reads an RMP permission mask for a guest page. The guest virtual address is specified in the RAX
register. The target VMPL is specified in RDX[7:0]. RMP permissions for the specified VMPL are
returned in RDX[63:8] and the RCX register as shown below
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D141458/new/
https://reviews.llvm.org/D141458
More information about the llvm-commits
mailing list