#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


KNC_EVEX_INSTRUCTIONS()::

# VMOVNRA{PS,PD}  PD = F3 0F W1 EH0 29
#                 PS = F2 0F W0 EH0 29

# VMOVNRNGOA{PS,PD}  PD = F3 0F W1 EH1 29
#                    PS = F2 0F W0 EH1 29

{
ICLASS    : VMOVNRAPS
CPL       : 3
CATEGORY  : DATAXFER
EXTENSION : KNCE
ISA_SET   : KNCSTREAM
ATTRIBUTES : KNC_FP MXCSR  KNC_VMOV  REQUIRES_ALIGNMENT
# store to memory
PATTERN   : KVV 0x29 V0F VF2  REXW=0 NOEVSR MOD[mm]  MOD!=3 REG[rrr] RM[nnn] NR=0 MODRM() DNCONVERT_FLT32()
OPERANDS  : MEM0:rw:zv:TXT=CONVERT:TXT=NT  REG0=MASK1():r:mskw   REG1=ZMM_R3():r:zf32
}
{
ICLASS    : VMOVNRNGOAPS
CPL       : 3
CATEGORY  : DATAXFER
EXTENSION : KNCE
ISA_SET   : KNCSTREAM
ATTRIBUTES : KNC_FP MXCSR  KNC_VMOV  REQUIRES_ALIGNMENT
# store to memory
PATTERN   : KVV 0x29 V0F VF2  REXW=0 NOEVSR MOD[mm]  MOD!=3 REG[rrr] RM[nnn] NR=1 MODRM() DNCONVERT_FLT32()
OPERANDS  : MEM0:rw:zv:TXT=CONVERT:TXT=NT  REG0=MASK1():r:mskw   REG1=ZMM_R3():r:zf32
}

{
ICLASS    : VMOVNRAPD
CPL       : 3
CATEGORY  : DATAXFER
EXTENSION : KNCE
ISA_SET   : KNCSTREAM
ATTRIBUTES : KNC_FP MXCSR  KNC_VMOV KNC_F64  REQUIRES_ALIGNMENT
# store to memory, no legal down convert.
PATTERN   : KVV 0x29 V0F VF3  REXW=1 NOEVSR MOD[mm]  MOD!=3 REG[rrr] RM[nnn] NR=0 MODRM()  DNCONVERT_FLT64()
OPERANDS  : MEM0:rw:zf64:TXT=NT  REG0=MASK1():r:mskw REG1=ZMM_R3():r:zf64
}
{
ICLASS    : VMOVNRNGOAPD
CPL       : 3
CATEGORY  : DATAXFER
EXTENSION : KNCE
ISA_SET   : KNCSTREAM
ATTRIBUTES : KNC_FP MXCSR  KNC_VMOV KNC_F64  REQUIRES_ALIGNMENT
# store to memory, no legal down convert.
PATTERN   : KVV 0x29 V0F VF3  REXW=1 NOEVSR MOD[mm]  MOD!=3 REG[rrr] RM[nnn] NR=1 MODRM()  DNCONVERT_FLT64()
OPERANDS  : MEM0:rw:zf64:TXT=NT  REG0=MASK1():r:mskw REG1=ZMM_R3():r:zf64
}

