#BEGIN_LEGAL # #Copyright (c) 2023 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 #The "MEM" suffix on tuples means NO BROADCAST ALLOWED # SET THE ELEMENT SIZE DURING DECODE -- using spreadsheet InputSize field # FIXME: fix and use 'otherwise' instead of REX=0! ESIZE_128_BITS():: REX=0 | ELEMENT_SIZE=128 ESIZE_64_BITS():: REX=0 | ELEMENT_SIZE=64 ESIZE_32_BITS():: REX=0 | ELEMENT_SIZE=32 ESIZE_16_BITS():: REX=0 | ELEMENT_SIZE=16 ESIZE_8_BITS():: REX=0 | ELEMENT_SIZE=8 ESIZE_4_BITS():: REX=0 | ELEMENT_SIZE=4 ESIZE_2_BITS():: REX=0 | ELEMENT_SIZE=2 ESIZE_1_BITS():: REX=0 | ELEMENT_SIZE=1 # eightmem is a 8B reference # quartermem is a 16B reference # halfmem is a 32B reference # fullmem is a 64B reference # legacy movddup references 64b when doing a 128b VL # but acts like fullmem for 256/512. NELEM_MOVDDUP():: ELEMENT_SIZE=64 VL128 | NELEM=1 ELEMENT_SIZE=64 VL256 | NELEM=4 ELEMENT_SIZE=64 VL512 | NELEM=8 # element size is in bits... NELEM_FULLMEM():: # updated 2011-02-18 ELEMENT_SIZE=1 VL512 | NELEM=512 ELEMENT_SIZE=2 VL512 | NELEM=256 ELEMENT_SIZE=4 VL512 | NELEM=128 ELEMENT_SIZE=8 VL512 | NELEM=64 ELEMENT_SIZE=16 VL512 | NELEM=32 ELEMENT_SIZE=32 VL512 | NELEM=16 ELEMENT_SIZE=64 VL512 | NELEM=8 ELEMENT_SIZE=128 VL512 | NELEM=4 ELEMENT_SIZE=256 VL512 | NELEM=2 ELEMENT_SIZE=512 VL512 | NELEM=1 ELEMENT_SIZE=1 VL256 | NELEM=256 ELEMENT_SIZE=2 VL256 | NELEM=128 ELEMENT_SIZE=4 VL256 | NELEM=64 ELEMENT_SIZE=8 VL256 | NELEM=32 ELEMENT_SIZE=16 VL256 | NELEM=16 ELEMENT_SIZE=32 VL256 | NELEM=8 ELEMENT_SIZE=64 VL256 | NELEM=4 ELEMENT_SIZE=128 VL256 | NELEM=2 ELEMENT_SIZE=256 VL256 | NELEM=1 ELEMENT_SIZE=512 VL256 | error ELEMENT_SIZE=1 VL128 | NELEM=128 ELEMENT_SIZE=2 VL128 | NELEM=64 ELEMENT_SIZE=4 VL128 | NELEM=32 ELEMENT_SIZE=8 VL128 | NELEM=16 ELEMENT_SIZE=16 VL128 | NELEM=8 ELEMENT_SIZE=32 VL128 | NELEM=4 ELEMENT_SIZE=64 VL128 | NELEM=2 ELEMENT_SIZE=128 VL128 | NELEM=1 ELEMENT_SIZE=256 VL128 | error ELEMENT_SIZE=512 VL128 | error NELEM_HALFMEM():: # 32B/256b reference updated 2011-02-18 ELEMENT_SIZE=1 VL512 | NELEM=256 ELEMENT_SIZE=2 VL512 | NELEM=128 ELEMENT_SIZE=4 VL512 | NELEM=64 ELEMENT_SIZE=8 VL512 | NELEM=32 ELEMENT_SIZE=16 VL512 | NELEM=16 ELEMENT_SIZE=32 VL512 | NELEM=8 ELEMENT_SIZE=64 VL512 | NELEM=4 ELEMENT_SIZE=128 VL512 | NELEM=2 ELEMENT_SIZE=256 VL512 | NELEM=1 ELEMENT_SIZE=512 VL512 | error ELEMENT_SIZE=1 VL256 | NELEM=128 ELEMENT_SIZE=2 VL256 | NELEM=64 ELEMENT_SIZE=4 VL256 | NELEM=32 ELEMENT_SIZE=8 VL256 | NELEM=16 ELEMENT_SIZE=16 VL256 | NELEM=8 ELEMENT_SIZE=32 VL256 | NELEM=4 ELEMENT_SIZE=64 VL256 | NELEM=2 ELEMENT_SIZE=128 VL256 | NELEM=1 ELEMENT_SIZE=256 VL256 | error ELEMENT_SIZE=512 VL256 | error ELEMENT_SIZE=1 VL128 | NELEM=64 ELEMENT_SIZE=2 VL128 | NELEM=32 ELEMENT_SIZE=4 VL128 | NELEM=16 ELEMENT_SIZE=8 VL128 | NELEM=8 ELEMENT_SIZE=16 VL128 | NELEM=4 ELEMENT_SIZE=32 VL128 | NELEM=2 ELEMENT_SIZE=64 VL128 | NELEM=1 ELEMENT_SIZE=128 VL128 | error ELEMENT_SIZE=256 VL128 | error ELEMENT_SIZE=512 VL128 | error NELEM_QUARTERMEM():: # 16B/128b reference updated 2011-02-18 ELEMENT_SIZE=1 VL512 | NELEM=128 ELEMENT_SIZE=2 VL512 | NELEM=64 ELEMENT_SIZE=4 VL512 | NELEM=32 ELEMENT_SIZE=8 VL512 | NELEM=16 ELEMENT_SIZE=16 VL512 | NELEM=8 ELEMENT_SIZE=32 VL512 | NELEM=4 ELEMENT_SIZE=64 VL512 | NELEM=2 ELEMENT_SIZE=128 VL512 | NELEM=1 ELEMENT_SIZE=256 VL512 | error ELEMENT_SIZE=512 VL512 | error ELEMENT_SIZE=1 VL256 | NELEM=64 ELEMENT_SIZE=2 VL256 | NELEM=32 ELEMENT_SIZE=4 VL256 | NELEM=16 ELEMENT_SIZE=8 VL256 | NELEM=8 ELEMENT_SIZE=16 VL256 | NELEM=4 ELEMENT_SIZE=32 VL256 | NELEM=2 ELEMENT_SIZE=64 VL256 | NELEM=1 ELEMENT_SIZE=128 VL256 | error ELEMENT_SIZE=256 VL256 | error ELEMENT_SIZE=512 VL256 | error ELEMENT_SIZE=1 VL128 | NELEM=32 ELEMENT_SIZE=2 VL128 | NELEM=16 ELEMENT_SIZE=4 VL128 | NELEM=8 ELEMENT_SIZE=8 VL128 | NELEM=4 ELEMENT_SIZE=16 VL128 | NELEM=2 ELEMENT_SIZE=32 VL128 | NELEM=1 ELEMENT_SIZE=64 VL128 | error ELEMENT_SIZE=128 VL128 | error ELEMENT_SIZE=256 VL128 | error ELEMENT_SIZE=512 VL128 | error NELEM_EIGHTHMEM():: # 8B/64b reference updated 2011-02-18 ELEMENT_SIZE=1 VL512 | NELEM=64 ELEMENT_SIZE=2 VL512 | NELEM=32 ELEMENT_SIZE=4 VL512 | NELEM=16 ELEMENT_SIZE=8 VL512 | NELEM=8 ELEMENT_SIZE=16 VL512 | NELEM=4 ELEMENT_SIZE=32 VL512 | NELEM=2 ELEMENT_SIZE=64 VL512 | NELEM=1 ELEMENT_SIZE=128 VL512 | error ELEMENT_SIZE=256 VL512 | error ELEMENT_SIZE=512 VL512 | error ELEMENT_SIZE=1 VL256 | NELEM=32 ELEMENT_SIZE=2 VL256 | NELEM=16 ELEMENT_SIZE=4 VL256 | NELEM=8 ELEMENT_SIZE=8 VL256 | NELEM=4 ELEMENT_SIZE=16 VL256 | NELEM=2 ELEMENT_SIZE=32 VL256 | NELEM=1 ELEMENT_SIZE=64 VL256 | error ELEMENT_SIZE=128 VL256 | error ELEMENT_SIZE=256 VL256 | error ELEMENT_SIZE=512 VL256 | error ELEMENT_SIZE=1 VL128 | NELEM=16 ELEMENT_SIZE=2 VL128 | NELEM=8 ELEMENT_SIZE=4 VL128 | NELEM=4 ELEMENT_SIZE=8 VL128 | NELEM=2 ELEMENT_SIZE=16 VL128 | NELEM=1 ELEMENT_SIZE=32 VL128 | error ELEMENT_SIZE=64 VL128 | error ELEMENT_SIZE=128 VL128 | error ELEMENT_SIZE=256 VL128 | error ELEMENT_SIZE=512 VL128 | error NELEM_GPR_READER_BYTE():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_READER_WORD():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_WRITER_LDOP_D():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_WRITER_LDOP_Q():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_WRITER_STORE_BYTE():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_WRITER_STORE_WORD():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_TUPLE1_BYTE():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_TUPLE1_WORD():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_SCALAR():: # same as tuple1 updated 2011-02-18 VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_TUPLE1_SUBDWORD():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_READER():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_READER_SUBDWORD():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_WRITER_LDOP():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_WRITER_STORE():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GPR_WRITER_STORE_SUBDWORD():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 # TUPLE1,2,4,8, FULL and HALF NELEM_TUPLE1():: #updated 2011-02-18 VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_GSCAT():: VL128 | NELEM=1 VL256 | NELEM=1 VL512 | NELEM=1 NELEM_TUPLE2():: #updated 2011-02-18 VL128 | NELEM=2 VL256 | NELEM=2 VL512 | NELEM=2 NELEM_TUPLE4():: #updated 2011-02-18 VL128 | NELEM=4 VL256 | NELEM=4 VL512 | NELEM=4 NELEM_TUPLE8():: # updated 2011-02-18 VL128 | NELEM=8 VL256 | NELEM=8 VL512 | NELEM=8 NELEM_MEM128():: # element_size=64 always!! SPECIAL updated 2011-02-18 BCRC=0b0 | ELEMENT_SIZE=64 NELEM=2 BCRC=0b1 | error NELEM_FULL():: BCRC=0b0 ELEMENT_SIZE=16 VL512 | NELEM=32 BCRC=0b1 ELEMENT_SIZE=16 VL512 | NELEM=1 EMX_BROADCAST_1TO32_16 BCRC=0b0 ELEMENT_SIZE=32 VL512 | NELEM=16 BCRC=0b1 ELEMENT_SIZE=32 VL512 | NELEM=1 EMX_BROADCAST_1TO16_32 BCRC=0b0 ELEMENT_SIZE=64 VL512 | NELEM=8 BCRC=0b1 ELEMENT_SIZE=64 VL512 | NELEM=1 EMX_BROADCAST_1TO8_64 BCRC=0b0 ELEMENT_SIZE=16 VL256 | NELEM=16 BCRC=0b1 ELEMENT_SIZE=16 VL256 | NELEM=1 EMX_BROADCAST_1TO16_16 BCRC=0b0 ELEMENT_SIZE=32 VL256 | NELEM=8 BCRC=0b1 ELEMENT_SIZE=32 VL256 | NELEM=1 EMX_BROADCAST_1TO8_32 BCRC=0b0 ELEMENT_SIZE=64 VL256 | NELEM=4 BCRC=0b1 ELEMENT_SIZE=64 VL256 | NELEM=1 EMX_BROADCAST_1TO4_64 BCRC=0b0 ELEMENT_SIZE=16 VL128 | NELEM=8 BCRC=0b1 ELEMENT_SIZE=16 VL128 | NELEM=1 EMX_BROADCAST_1TO8_16 BCRC=0b0 ELEMENT_SIZE=32 VL128 | NELEM=4 BCRC=0b1 ELEMENT_SIZE=32 VL128 | NELEM=1 EMX_BROADCAST_1TO4_32 BCRC=0b0 ELEMENT_SIZE=64 VL128 | NELEM=2 BCRC=0b1 ELEMENT_SIZE=64 VL128 | NELEM=1 EMX_BROADCAST_1TO2_64 # 512b=64B=16DW=8QW -> Half = 256b=32B=8DWORDS=4QWORDS # 256b=32B=8DW=4QW -> Half = 128b=16B=4DW=2QW # 128b=16B=4DW=2QW -> Half = 64b=8B=2DW=1QW NELEM_HALF():: # updated 2011-02-18 BCRC=0b0 ELEMENT_SIZE=32 VL512 | NELEM=8 BCRC=0b1 ELEMENT_SIZE=32 VL512 | NELEM=1 EMX_BROADCAST_1TO8_32 BCRC=0b0 ELEMENT_SIZE=32 VL256 | NELEM=4 BCRC=0b1 ELEMENT_SIZE=32 VL256 | NELEM=1 EMX_BROADCAST_1TO4_32 BCRC=0b0 ELEMENT_SIZE=32 VL128 | NELEM=2 BCRC=0b1 ELEMENT_SIZE=32 VL128 | NELEM=1 EMX_BROADCAST_1TO2_32 # For reg/reg ops with rounding control, we have to avoid having the # RC bits mes up the length. So we fix them here. FIX_ROUND_LEN512():: mode16 | VL512 VL_IGN=1 mode32 | VL512 VL_IGN=1 mode64 | VL512 VL_IGN=1 FIX_ROUND_LEN128():: mode16 | VL128 VL_IGN=1 mode32 | VL128 VL_IGN=1 mode64 | VL128 VL_IGN=1