[X86][APX] Do not emit {evex} prefix for memory variant (#109759)

This was mistakely changed by #109579, which doesn't match with other
EVEX decoding.

(cherry picked from commit 70529b24a30943d46e361d2990268499921e28a2)
This commit is contained in:
Phoebe Wang 2024-09-24 16:46:56 +08:00 committed by Tobias Hieta
parent edd018ead7
commit d401987fe3
2 changed files with 21 additions and 22 deletions

View File

@ -2617,8 +2617,8 @@ defm VFPCLASS : avx512_fp_fpclass_all<"vfpclass", 0x66, 0x67, SchedWriteFCmp>, E
multiclass avx512_mask_mov<bits<8> opc_kk, bits<8> opc_km, bits<8> opc_mk, multiclass avx512_mask_mov<bits<8> opc_kk, bits<8> opc_km, bits<8> opc_mk,
string OpcodeStr, RegisterClass KRC, ValueType vvt, string OpcodeStr, RegisterClass KRC, ValueType vvt,
X86MemOperand x86memop, string Suffix = ""> { X86MemOperand x86memop, string Suffix = ""> {
let explicitOpPrefix = !if(!eq(Suffix, ""), NoExplicitOpPrefix, ExplicitEVEX) in { let isMoveReg = 1, hasSideEffects = 0, SchedRW = [WriteMove],
let isMoveReg = 1, hasSideEffects = 0, SchedRW = [WriteMove] in explicitOpPrefix = !if(!eq(Suffix, ""), NoExplicitOpPrefix, ExplicitEVEX) in
def kk#Suffix : I<opc_kk, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src), def kk#Suffix : I<opc_kk, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), []>, !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), []>,
Sched<[WriteMove]>; Sched<[WriteMove]>;
@ -2630,7 +2630,6 @@ multiclass avx512_mask_mov<bits<8> opc_kk, bits<8> opc_km, bits<8> opc_mk,
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
[(store KRC:$src, addr:$dst)]>, [(store KRC:$src, addr:$dst)]>,
Sched<[WriteStore]>, NoCD8; Sched<[WriteStore]>, NoCD8;
}
} }
multiclass avx512_mask_mov_gpr<bits<8> opc_kr, bits<8> opc_rk, multiclass avx512_mask_mov_gpr<bits<8> opc_kr, bits<8> opc_rk,

View File

@ -17,20 +17,20 @@
# INTEL: {evex} kmovq k2, k1 # INTEL: {evex} kmovq k2, k1
0x62,0xf1,0xfc,0x08,0x90,0xd1 0x62,0xf1,0xfc,0x08,0x90,0xd1
# ATT: {evex} kmovb -16(%rax), %k0 # ATT: kmovb -16(%rax), %k0
# INTEL: {evex} kmovb k0, byte ptr [rax - 16] # INTEL: kmovb k0, byte ptr [rax - 16]
0x62,0xf1,0x7d,0x08,0x90,0x40,0xf0 0x62,0xf1,0x7d,0x08,0x90,0x40,0xf0
# ATT: {evex} kmovw -16(%rax), %k0 # ATT: kmovw -16(%rax), %k0
# INTEL: {evex} kmovw k0, word ptr [rax - 16] # INTEL: kmovw k0, word ptr [rax - 16]
0x62,0xf1,0x7c,0x08,0x90,0x40,0xf0 0x62,0xf1,0x7c,0x08,0x90,0x40,0xf0
# ATT: {evex} kmovd -16(%rax), %k0 # ATT: kmovd -16(%rax), %k0
# INTEL: {evex} kmovd k0, dword ptr [rax - 16] # INTEL: kmovd k0, dword ptr [rax - 16]
0x62,0xf1,0xfd,0x08,0x90,0x40,0xf0 0x62,0xf1,0xfd,0x08,0x90,0x40,0xf0
# ATT: {evex} kmovq -16(%rax), %k0 # ATT: kmovq -16(%rax), %k0
# INTEL: {evex} kmovq k0, qword ptr [rax - 16] # INTEL: kmovq k0, qword ptr [rax - 16]
0x62,0xf1,0xfc,0x08,0x90,0x40,0xf0 0x62,0xf1,0xfc,0x08,0x90,0x40,0xf0
# ATT-NOT: {evex} # ATT-NOT: {evex}