#BEGIN_LEGAL # #Copyright (c) 2019 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 # @file xed-operand-width.txt # the default xtype can be overridden in each operand using a ":" followed by an explicit xtype ## ## the width defaults to bytes. But it can be bits if it has a "bits" suffix ## # # default #oc2-code XTYPE width16 width32 width64 (if only one width is shown, it is for all widths) # INVALID INVALID 0 # # 3 strange things: # asz int 2 4 8 # varies with the effective address width ssz int 2 4 8 # varies with the stack address width pseudo struct 0 # these are for unusual registers pseudox87 struct 0 # these are for unusual registers # # # #1 i1 1 # FIXME: this is not used... a16 i16 4 # bound a32 i32 8 # bound b u8 1 d i32 4 # i8 i8 1 u8 u8 1 i16 i16 2 u16 u16 2 i32 i32 4 u32 u32 4 i64 i64 8 u64 u64 8 f16 f16 2 # IVB converts f32 f32 4 f64 f64 8 # dq i32 16 # xub u8 16 xuw u16 16 xud u32 16 xuq u64 16 x128 u128 16 # xb i8 16 xw i16 16 xd i32 16 xq i64 16 # relocated from AVX512 for use with other instructions zb i8 512bits zw i16 512bits zd i32 512bits zq i64 512bits mb i8 8 mw i16 8 md i32 8 mq i64 8 # m64int i64 8 m64real f64 8 mem108 struct 108 mem14 struct 14 mem16 struct 2 mem16int i16 2 mem28 struct 28 mem32int i32 4 mem32real f32 4 mem80dec b80 10 mem80real f80 10 f80 f80 10 # for X87 registers: mem94 struct 94 mfpxenv struct 512 mxsave struct 576 mprefetch i64 64 # made up width for prefetches p struct 4 6 6 p2 struct 4 6 10 pd f64 16 ps f32 16 pi i32 8 q i64 8 s struct 6 6 10 s64 struct 10 sd f64 8 si i32 4 ss f32 4 v int 2 4 8 y int 4 4 8 w i16 2 z int 2 4 4 spw8 int 16 32 0 # varies (64b invalid) STACK POINTER WIDTH spw int 2 4 8 # varies STACK POINTER WIDTH spw5 int 10 20 40 # varies (IRET approx) STACK POINTER WIDTH spw3 int 6 12 24 # varies (IRET approx) STACK POINTER WIDTH spw2 int 4 8 16 # varies (FAR call/ret approx) STACK POINTER WIDTH i1 int 1bits i2 int 2bits i3 int 3bits i4 int 4bits i5 int 5bits i6 int 6bits i7 int 7bits i8 int 8bits var var 0 # relies on NELEM * ELEMENT_SIZE to get the number of bits. bnd32 u32 12 # MPX 32b BNDLDX/BNDSTX memop 3x4B bnd64 u64 24 # MPX 32b BNDLDX/BNDSTX memop 3x8B