mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Remove EFLAGS from the BLSI/BLSMSK/BLSR patterns. The nodes created by DAG combine don't contain an EFLAGS def.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170308 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b926afcc5b
commit
a521e68210
@ -247,9 +247,9 @@ def X86and_flag : SDNode<"X86ISD::AND", SDTBinaryArithWithFlags,
|
|||||||
[SDNPCommutative]>;
|
[SDNPCommutative]>;
|
||||||
def X86andn_flag : SDNode<"X86ISD::ANDN", SDTBinaryArithWithFlags>;
|
def X86andn_flag : SDNode<"X86ISD::ANDN", SDTBinaryArithWithFlags>;
|
||||||
|
|
||||||
def X86blsi_flag : SDNode<"X86ISD::BLSI", SDTUnaryArithWithFlags>;
|
def X86blsi : SDNode<"X86ISD::BLSI", SDTIntUnaryOp>;
|
||||||
def X86blsmsk_flag : SDNode<"X86ISD::BLSMSK", SDTUnaryArithWithFlags>;
|
def X86blsmsk : SDNode<"X86ISD::BLSMSK", SDTIntUnaryOp>;
|
||||||
def X86blsr_flag : SDNode<"X86ISD::BLSR", SDTUnaryArithWithFlags>;
|
def X86blsr : SDNode<"X86ISD::BLSR", SDTIntUnaryOp>;
|
||||||
|
|
||||||
def X86mul_imm : SDNode<"X86ISD::MUL_IMM", SDTIntBinOp>;
|
def X86mul_imm : SDNode<"X86ISD::MUL_IMM", SDTIntBinOp>;
|
||||||
|
|
||||||
@ -1605,26 +1605,26 @@ multiclass bmi_bls<string mnemonic, Format RegMRM, Format MemMRM,
|
|||||||
PatFrag ld_frag> {
|
PatFrag ld_frag> {
|
||||||
def rr : I<0xF3, RegMRM, (outs RC:$dst), (ins RC:$src),
|
def rr : I<0xF3, RegMRM, (outs RC:$dst), (ins RC:$src),
|
||||||
!strconcat(mnemonic, "\t{$src, $dst|$dst, $src}"),
|
!strconcat(mnemonic, "\t{$src, $dst|$dst, $src}"),
|
||||||
[(set RC:$dst, EFLAGS, (OpNode RC:$src))]>, T8, VEX_4V;
|
[(set RC:$dst, (OpNode RC:$src)), (implicit EFLAGS)]>, T8, VEX_4V;
|
||||||
def rm : I<0xF3, MemMRM, (outs RC:$dst), (ins x86memop:$src),
|
def rm : I<0xF3, MemMRM, (outs RC:$dst), (ins x86memop:$src),
|
||||||
!strconcat(mnemonic, "\t{$src, $dst|$dst, $src}"),
|
!strconcat(mnemonic, "\t{$src, $dst|$dst, $src}"),
|
||||||
[(set RC:$dst, EFLAGS, (OpNode (ld_frag addr:$src)))]>,
|
[(set RC:$dst, (OpNode (ld_frag addr:$src))), (implicit EFLAGS)]>,
|
||||||
T8, VEX_4V;
|
T8, VEX_4V;
|
||||||
}
|
}
|
||||||
|
|
||||||
let Predicates = [HasBMI], Defs = [EFLAGS] in {
|
let Predicates = [HasBMI], Defs = [EFLAGS] in {
|
||||||
defm BLSR32 : bmi_bls<"blsr{l}", MRM1r, MRM1m, GR32, i32mem,
|
defm BLSR32 : bmi_bls<"blsr{l}", MRM1r, MRM1m, GR32, i32mem,
|
||||||
X86blsr_flag, loadi32>;
|
X86blsr, loadi32>;
|
||||||
defm BLSR64 : bmi_bls<"blsr{q}", MRM1r, MRM1m, GR64, i64mem,
|
defm BLSR64 : bmi_bls<"blsr{q}", MRM1r, MRM1m, GR64, i64mem,
|
||||||
X86blsr_flag, loadi64>, VEX_W;
|
X86blsr, loadi64>, VEX_W;
|
||||||
defm BLSMSK32 : bmi_bls<"blsmsk{l}", MRM2r, MRM2m, GR32, i32mem,
|
defm BLSMSK32 : bmi_bls<"blsmsk{l}", MRM2r, MRM2m, GR32, i32mem,
|
||||||
X86blsmsk_flag, loadi32>;
|
X86blsmsk, loadi32>;
|
||||||
defm BLSMSK64 : bmi_bls<"blsmsk{q}", MRM2r, MRM2m, GR64, i64mem,
|
defm BLSMSK64 : bmi_bls<"blsmsk{q}", MRM2r, MRM2m, GR64, i64mem,
|
||||||
X86blsmsk_flag, loadi64>, VEX_W;
|
X86blsmsk, loadi64>, VEX_W;
|
||||||
defm BLSI32 : bmi_bls<"blsi{l}", MRM3r, MRM3m, GR32, i32mem,
|
defm BLSI32 : bmi_bls<"blsi{l}", MRM3r, MRM3m, GR32, i32mem,
|
||||||
X86blsi_flag, loadi32>;
|
X86blsi, loadi32>;
|
||||||
defm BLSI64 : bmi_bls<"blsi{q}", MRM3r, MRM3m, GR64, i64mem,
|
defm BLSI64 : bmi_bls<"blsi{q}", MRM3r, MRM3m, GR64, i64mem,
|
||||||
X86blsi_flag, loadi64>, VEX_W;
|
X86blsi, loadi64>, VEX_W;
|
||||||
}
|
}
|
||||||
|
|
||||||
multiclass bmi_bextr_bzhi<bits<8> opc, string mnemonic, RegisterClass RC,
|
multiclass bmi_bextr_bzhi<bits<8> opc, string mnemonic, RegisterClass RC,
|
||||||
|
Loading…
Reference in New Issue
Block a user