#BEGIN_LEGAL # #Copyright (c) 2020 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # #END_LEGAL INSTRUCTIONS():: UDELETE: NOP0F1A UDELETE: NOP0F1B { ICLASS: BNDMK CPL: 3 EXTENSION: MPX CATEGORY: MPX ISA_SET: MPX ATTRIBUTES: NO_RIP_REL PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() f3_refining_prefix OPERANDS: REG0=BND_R():w AGEN:r } { ICLASS: BNDCL CPL: 3 EXTENSION: MPX CATEGORY: MPX ISA_SET: MPX ATTRIBUTES: EXCEPTION_BR COMMENT: 67 prefixes will be misinterpreted on MPX NI. XED cannot ignore them. PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() f3_refining_prefix OPERANDS: REG0=BND_R():r AGEN:r PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD=3 REG[rrr] RM[nnn] f3_refining_prefix mode64 OPERANDS: REG0=BND_R():r REG1=GPR64_B():r PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD=3 REG[rrr] RM[nnn] f3_refining_prefix not64 OPERANDS: REG0=BND_R():r REG1=GPR32_B():r } { ICLASS: BNDCU CPL: 3 EXTENSION: MPX CATEGORY: MPX ISA_SET: MPX ATTRIBUTES: EXCEPTION_BR COMMENT: 67 prefixes will be misinterpreted on MPX NI. XED cannot ignore them. PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() f2_refining_prefix OPERANDS: REG0=BND_R():r AGEN:r PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD=3 REG[rrr] RM[nnn] f2_refining_prefix mode64 OPERANDS: REG0=BND_R():r REG1=GPR64_B():r PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD=3 REG[rrr] RM[nnn] f2_refining_prefix not64 OPERANDS: REG0=BND_R():r REG1=GPR32_B():r } { ICLASS: BNDCN CPL: 3 EXTENSION: MPX CATEGORY: MPX ISA_SET: MPX ATTRIBUTES: EXCEPTION_BR COMMENT: 67 prefixes will be misinterpreted on MPX NI. XED cannot ignore them. PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() f2_refining_prefix OPERANDS: REG0=BND_R():r AGEN:r PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD=3 REG[rrr] RM[nnn] f2_refining_prefix mode64 OPERANDS: REG0=BND_R():r REG1=GPR64_B():r PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD=3 REG[rrr] RM[nnn] f2_refining_prefix not64 OPERANDS: REG0=BND_R():r REG1=GPR32_B():r } { ICLASS: BNDMOV CPL: 3 EXTENSION: MPX CATEGORY: MPX ISA_SET: MPX ATTRIBUTES: COMMENT: load form PATTERN: 0x0F 0x1A MPXMODE=1 MOD[0b11] MOD=3 REG[rrr] RM[nnn] osz_refining_prefix REFINING66() OPERANDS: REG0=BND_R():w REG1=BND_B():r # 16b refs 64b memop (2x32b) but only if EASZ=32b! PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() osz_refining_prefix REFINING66() mode16 eamode32 OPERANDS: REG0=BND_R():w MEM0:r:q:u32 # 32b refs 64b memop (2x32b) PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() osz_refining_prefix REFINING66() mode32 eamode32 OPERANDS: REG0=BND_R():w MEM0:r:q:u32 # 64b refs 128b memop (2x64b) PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() osz_refining_prefix REFINING66() mode64 OPERANDS: REG0=BND_R():w MEM0:r:dq:u64 } { ICLASS: BNDMOV CPL: 3 EXTENSION: MPX CATEGORY: MPX ISA_SET: MPX ATTRIBUTES: COMMENT: store form PATTERN: 0x0F 0x1B MPXMODE=1 MOD[0b11] MOD=3 REG[rrr] RM[nnn] osz_refining_prefix REFINING66() OPERANDS: REG0=BND_B():w REG1=BND_R():r # 16b refs 64b memop (2x32b) but only if EASZ=32b! PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() osz_refining_prefix REFINING66() mode16 eamode32 OPERANDS: MEM0:w:q:u32 REG0=BND_R():r # 32b refs 64b memop (2x32b) PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() osz_refining_prefix REFINING66() mode32 eamode32 OPERANDS: MEM0:w:q:u32 REG0=BND_R():r # 64b refs 128b memop (2x64b) PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() osz_refining_prefix REFINING66() mode64 OPERANDS: MEM0:w:dq:u64 REG0=BND_R():r } { ICLASS: BNDLDX CPL: 3 EXTENSION: MPX CATEGORY: MPX ISA_SET: MPX ATTRIBUTES: EXCEPTION_BR SPECIAL_AGEN_REQUIRED INDEX_REG_IS_POINTER NO_RIP_REL COMMENT: RIP (mode64, easz64, MOD=0, RM=5) mode disallowed in 64b And 16/32b is easize32 only PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() no_refining_prefix not64 eamode32 OPERANDS: REG0=BND_R():w MEM0:r:bnd32 PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD=0 REG[rrr] RM[nnn] MODRM() no_refining_prefix mode64 # RM!=5 OPERANDS: REG0=BND_R():w MEM0:r:bnd64 PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD=1 REG[rrr] RM[nnn] MODRM() no_refining_prefix mode64 OPERANDS: REG0=BND_R():w MEM0:r:bnd64 PATTERN: 0x0F 0x1A MPXMODE=1 MOD[mm] MOD=2 REG[rrr] RM[nnn] MODRM() no_refining_prefix mode64 OPERANDS: REG0=BND_R():w MEM0:r:bnd64 } { ICLASS: BNDSTX CPL: 3 EXTENSION: MPX CATEGORY: MPX ISA_SET: MPX ATTRIBUTES: EXCEPTION_BR SPECIAL_AGEN_REQUIRED INDEX_REG_IS_POINTER NO_RIP_REL COMMENT: RIP (mode64, easz64, MOD=0, RM=5) mode disallowed in 64b And 16/32b is easize32 only PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() no_refining_prefix not64 eamode32 OPERANDS: MEM0:w:bnd32 REG0=BND_R():r PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD=0 REG[rrr] RM[nnn] MODRM() no_refining_prefix mode64 # RM!=5 OPERANDS: MEM0:w:bnd64 REG0=BND_R():r PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD=1 REG[rrr] RM[nnn] MODRM() no_refining_prefix mode64 OPERANDS: MEM0:w:bnd64 REG0=BND_R():r PATTERN: 0x0F 0x1B MPXMODE=1 MOD[mm] MOD=2 REG[rrr] RM[nnn] MODRM() no_refining_prefix mode64 OPERANDS: MEM0:w:bnd64 REG0=BND_R():r } { ICLASS : NOP CPL : 3 CATEGORY : WIDENOP ATTRIBUTES: NOP EXTENSION : BASE ISA_SET : PPRO COMMENT : MPXMODE=1: some of the reg/reg forms of these NOPs are still NOPs. PATTERN : 0x0F 0x1A MPXMODE=1 MOD[0b11] MOD=3 REG[rrr] RM[nnn] no_refining_prefix OPERANDS : REG0=GPRv_B():r REG1=GPRv_R():r IFORM : NOP_GPRv_GPRv_0F1A PATTERN : 0x0F 0x1B MPXMODE=1 MOD[0b11] MOD=3 REG[rrr] RM[nnn] no_refining_prefix OPERANDS : REG0=GPRv_B():r REG1=GPRv_R():r IFORM : NOP_GPRv_GPRv_0F1B PATTERN : 0x0F 0x1B MPXMODE=1 MOD[0b11] MOD=3 REG[rrr] RM[nnn] f3_refining_prefix OPERANDS : REG0=GPRv_B():r REG1=GPRv_R():r IFORM : NOP_GPRv_GPRv_0F1B } { ICLASS : NOP CPL : 3 CATEGORY : WIDENOP ATTRIBUTES: NOP EXTENSION : BASE ISA_SET : PPRO COMMENT : For MPXMODE=0 operation PATTERN : 0x0F 0x1A MPXMODE=0 MOD[0b11] MOD=3 REG[rrr] RM[nnn] OPERANDS : REG0=GPRv_B():r REG1=GPRv_R():r IFORM : NOP_GPRv_GPRv_0F1A PATTERN : 0x0F 0x1B MPXMODE=0 MOD[0b11] MOD=3 REG[rrr] RM[nnn] OPERANDS : REG0=GPRv_B():r REG1=GPRv_R():r IFORM : NOP_GPRv_GPRv_0F1B PATTERN : 0x0F 0x1A MPXMODE=0 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() OPERANDS : REG0=GPRv_B():r MEM0:r:v IFORM : NOP_GPRv_MEMv_0F1A PATTERN : 0x0F 0x1B MPXMODE=0 MOD[mm] MOD!=3 REG[rrr] RM[nnn] MODRM() OPERANDS : REG0=GPRv_B():r MEM0:r:v IFORM : NOP_GPRv_MEM_0F1B }