[llvm] r329945 - [X86] Remove InstrItinClass entries from SSE/AVX instructions defs (PR37093)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 12 12:59:35 PDT 2018
Author: rksimon
Date: Thu Apr 12 12:59:35 2018
New Revision: 329945
URL: http://llvm.org/viewvc/llvm-project?rev=329945&view=rev
Log:
[X86] Remove InstrItinClass entries from SSE/AVX instructions defs (PR37093)
Modified:
llvm/trunk/lib/Target/X86/X86InstrAVX512.td
llvm/trunk/lib/Target/X86/X86InstrSSE.td
Modified: llvm/trunk/lib/Target/X86/X86InstrAVX512.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrAVX512.td?rev=329945&r1=329944&r2=329945&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrAVX512.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrAVX512.td Thu Apr 12 12:59:35 2018
@@ -353,7 +353,7 @@ multiclass AVX512_maskable_in_asm<bits<8
string OpcodeStr,
string AttSrcAsm, string IntelSrcAsm,
list<dag> Pattern,
- InstrItinClass itin> :
+ InstrItinClass itin = NoItinerary> :
AVX512_maskable_custom<O, F, Outs, Ins,
!con((ins _.RC:$src0, _.KRCWM:$mask), Ins),
!con((ins _.KRCWM:$mask), Ins),
@@ -410,7 +410,7 @@ multiclass AVX512_maskable_cmp<bits<8> O
multiclass AVX512_maskable_cmp_alt<bits<8> O, Format F, X86VectorVTInfo _,
dag Outs, dag Ins, string OpcodeStr,
string AttSrcAsm, string IntelSrcAsm,
- InstrItinClass itin> :
+ InstrItinClass itin = NoItinerary> :
AVX512_maskable_custom_cmp<O, F, Outs,
Ins, !con((ins _.KRCWM:$mask),Ins), OpcodeStr,
AttSrcAsm, IntelSrcAsm, [],[], itin>;
@@ -505,7 +505,7 @@ multiclass vinsert_for_size_split<int Op
(iPTR imm)),
(vinsert_for_mask:$src3 (To.VT To.RC:$src1),
(From.VT From.RC:$src2),
- (iPTR imm)), itins.rr>,
+ (iPTR imm))>,
AVX512AIi8Base, EVEX_4V, Sched<[itins.Sched]>;
let mayLoad = 1 in
defm rm : AVX512_maskable_split<Opcode, MRMSrcMem, To, (outs To.RC:$dst),
@@ -517,7 +517,7 @@ multiclass vinsert_for_size_split<int Op
(iPTR imm)),
(vinsert_for_mask:$src3 (To.VT To.RC:$src1),
(From.VT (bitconvert (From.LdFrag addr:$src2))),
- (iPTR imm)), itins.rm>, AVX512AIi8Base, EVEX_4V,
+ (iPTR imm))>, AVX512AIi8Base, EVEX_4V,
EVEX_CD8<From.EltSize, From.CD8TupleForm>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -1747,13 +1747,13 @@ let Constraints = "$src1 = $dst", ExeDom
(ins _.RC:$src2, _.RC:$src3),
OpcodeStr, "$src3, $src2", "$src2, $src3",
(_.VT (X86VPermi2X _.RC:$src1, _.RC:$src2, _.RC:$src3)),
- itins.rr, 1>, EVEX_4V, AVX5128IBase, Sched<[itins.Sched]>;
+ NoItinerary, 1>, EVEX_4V, AVX5128IBase, Sched<[itins.Sched]>;
defm rm: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.MemOp:$src3),
OpcodeStr, "$src3, $src2", "$src2, $src3",
(_.VT (X86VPermi2X _.RC:$src1, _.RC:$src2,
- (_.VT (bitconvert (_.LdFrag addr:$src3))))), itins.rm, 1>,
+ (_.VT (bitconvert (_.LdFrag addr:$src3))))), NoItinerary, 1>,
EVEX_4V, AVX5128IBase, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -1767,7 +1767,7 @@ multiclass avx512_perm_i_mb<bits<8> opc,
!strconcat("$src2, ${src3}", _.BroadcastStr ),
(_.VT (X86VPermi2X _.RC:$src1,
_.RC:$src2,(_.VT (X86VBroadcast (_.ScalarLdFrag addr:$src3))))),
- itins.rm, 1>, AVX5128IBase, EVEX_4V, EVEX_B,
+ NoItinerary, 1>, AVX5128IBase, EVEX_4V, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -1818,13 +1818,13 @@ let Constraints = "$src1 = $dst", ExeDom
(ins IdxVT.RC:$src2, _.RC:$src3),
OpcodeStr, "$src3, $src2", "$src2, $src3",
(_.VT (X86VPermt2 _.RC:$src1, IdxVT.RC:$src2, _.RC:$src3)),
- itins.rr, 1>, EVEX_4V, AVX5128IBase, Sched<[itins.Sched]>;
+ NoItinerary, 1>, EVEX_4V, AVX5128IBase, Sched<[itins.Sched]>;
defm rm: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins IdxVT.RC:$src2, _.MemOp:$src3),
OpcodeStr, "$src3, $src2", "$src2, $src3",
(_.VT (X86VPermt2 _.RC:$src1, IdxVT.RC:$src2,
- (bitconvert (_.LdFrag addr:$src3)))), itins.rm, 1>,
+ (bitconvert (_.LdFrag addr:$src3)))), NoItinerary, 1>,
EVEX_4V, AVX5128IBase, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -1837,7 +1837,7 @@ multiclass avx512_perm_t_mb<bits<8> opc,
!strconcat("$src2, ${src3}", _.BroadcastStr ),
(_.VT (X86VPermt2 _.RC:$src1,
IdxVT.RC:$src2,(_.VT (X86VBroadcast (_.ScalarLdFrag addr:$src3))))),
- itins.rm, 1>, AVX5128IBase, EVEX_4V, EVEX_B,
+ NoItinerary, 1>, AVX5128IBase, EVEX_4V, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -1910,36 +1910,36 @@ multiclass avx512_blendmask<bits<8> opc,
def rr : AVX5128I<opc, MRMSrcReg, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2),
!strconcat(OpcodeStr,
- "\t{$src2, $src1, ${dst}|${dst}, $src1, $src2}"),
- [], itins.rr>, EVEX_4V, Sched<[itins.Sched]>;
+ "\t{$src2, $src1, ${dst}|${dst}, $src1, $src2}"), []>,
+ EVEX_4V, Sched<[itins.Sched]>;
def rrk : AVX5128I<opc, MRMSrcReg, (outs _.RC:$dst),
(ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
!strconcat(OpcodeStr,
"\t{$src2, $src1, ${dst} {${mask}}|${dst} {${mask}}, $src1, $src2}"),
- [], itins.rr>, EVEX_4V, EVEX_K, Sched<[itins.Sched]>;
+ []>, EVEX_4V, EVEX_K, Sched<[itins.Sched]>;
def rrkz : AVX5128I<opc, MRMSrcReg, (outs _.RC:$dst),
(ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
!strconcat(OpcodeStr,
"\t{$src2, $src1, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src1, $src2}"),
- [], itins.rr>, EVEX_4V, EVEX_KZ, Sched<[itins.Sched]>;
+ []>, EVEX_4V, EVEX_KZ, Sched<[itins.Sched]>;
let mayLoad = 1 in {
def rm : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
(ins _.RC:$src1, _.MemOp:$src2),
!strconcat(OpcodeStr,
"\t{$src2, $src1, ${dst}|${dst}, $src1, $src2}"),
- [], itins.rm>, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
+ []>, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmk : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
(ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
!strconcat(OpcodeStr,
"\t{$src2, $src1, ${dst} {${mask}}|${dst} {${mask}}, $src1, $src2}"),
- [], itins.rm>, EVEX_4V, EVEX_K, EVEX_CD8<_.EltSize, CD8VF>,
+ []>, EVEX_4V, EVEX_K, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmkz : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
(ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
!strconcat(OpcodeStr,
"\t{$src2, $src1, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src1, $src2}"),
- [], itins.rm>, EVEX_4V, EVEX_KZ, EVEX_CD8<_.EltSize, CD8VF>,
+ []>, EVEX_4V, EVEX_KZ, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -1951,24 +1951,24 @@ multiclass avx512_blendmask_rmb<bits<8>
(ins _.KRCWM:$mask, _.RC:$src1, _.ScalarMemOp:$src2),
!strconcat(OpcodeStr,
"\t{${src2}", _.BroadcastStr, ", $src1, $dst {${mask}}|",
- "$dst {${mask}}, $src1, ${src2}", _.BroadcastStr, "}"),
- [], itins.rm>, EVEX_4V, EVEX_K, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
+ "$dst {${mask}}, $src1, ${src2}", _.BroadcastStr, "}"), []>,
+ EVEX_4V, EVEX_K, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmbkz : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
(ins _.KRCWM:$mask, _.RC:$src1, _.ScalarMemOp:$src2),
!strconcat(OpcodeStr,
"\t{${src2}", _.BroadcastStr, ", $src1, $dst {${mask}} {z}|",
- "$dst {${mask}} {z}, $src1, ${src2}", _.BroadcastStr, "}"),
- [], itins.rm>, EVEX_4V, EVEX_KZ, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
+ "$dst {${mask}} {z}, $src1, ${src2}", _.BroadcastStr, "}"), []>,
+ EVEX_4V, EVEX_KZ, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmb : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2),
!strconcat(OpcodeStr,
"\t{${src2}", _.BroadcastStr, ", $src1, $dst|",
- "$dst, $src1, ${src2}", _.BroadcastStr, "}"),
- [], itins.rm>, EVEX_4V, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
+ "$dst, $src1, ${src2}", _.BroadcastStr, "}"), []>,
+ EVEX_4V, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -2021,7 +2021,7 @@ multiclass avx512_cmp_scalar<X86VectorVT
"$src2, $src1", "$src1, $src2",
(OpNode (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
- imm:$cc), itins.rr>, EVEX_4V, Sched<[itins.Sched]>;
+ imm:$cc)>, EVEX_4V, Sched<[itins.Sched]>;
let mayLoad = 1 in
defm rm_Int : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
(outs _.KRC:$dst),
@@ -2029,7 +2029,7 @@ multiclass avx512_cmp_scalar<X86VectorVT
"vcmp${cc}"#_.Suffix,
"$src2, $src1", "$src1, $src2",
(OpNode (_.VT _.RC:$src1), _.ScalarIntMemCPat:$src2,
- imm:$cc), itins.rm>, EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
+ imm:$cc)>, EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rrb_Int : AVX512_maskable_cmp<0xC2, MRMSrcReg, _,
@@ -2040,7 +2040,7 @@ multiclass avx512_cmp_scalar<X86VectorVT
(OpNodeRnd (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
imm:$cc,
- (i32 FROUND_NO_EXC)), itins.rr>,
+ (i32 FROUND_NO_EXC))>,
EVEX_4V, EVEX_B, Sched<[itins.Sched]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0 in {
@@ -2048,14 +2048,14 @@ multiclass avx512_cmp_scalar<X86VectorVT
(outs VK1:$dst),
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
- "$cc, $src2, $src1", "$src1, $src2, $cc", itins.rr>, EVEX_4V,
+ "$cc, $src2, $src1", "$src1, $src2, $cc">, EVEX_4V,
Sched<[itins.Sched]>;
let mayLoad = 1 in
defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
(outs _.KRC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
- "$cc, $src2, $src1", "$src1, $src2, $cc", itins.rm>,
+ "$cc, $src2, $src1", "$src1, $src2, $cc">,
EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
@@ -2063,7 +2063,7 @@ multiclass avx512_cmp_scalar<X86VectorVT
(outs _.KRC:$dst),
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
- "$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc", itins.rr>,
+ "$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc">,
EVEX_4V, EVEX_B, Sched<[itins.Sched]>;
}// let isAsmParserOnly = 1, hasSideEffects = 0
@@ -2075,8 +2075,8 @@ multiclass avx512_cmp_scalar<X86VectorVT
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set _.KRC:$dst, (OpNode _.FRC:$src1,
_.FRC:$src2,
- imm:$cc))],
- itins.rr>, EVEX_4V, Sched<[itins.Sched]>;
+ imm:$cc))]>,
+ EVEX_4V, Sched<[itins.Sched]>;
def rm : AVX512Ii8<0xC2, MRMSrcMem,
(outs _.KRC:$dst),
(ins _.FRC:$src1, _.ScalarMemOp:$src2, AVXCC:$cc),
@@ -2084,8 +2084,8 @@ multiclass avx512_cmp_scalar<X86VectorVT
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set _.KRC:$dst, (OpNode _.FRC:$src1,
(_.ScalarLdFrag addr:$src2),
- imm:$cc))],
- itins.rm>, EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
+ imm:$cc))]>,
+ EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -2105,22 +2105,22 @@ multiclass avx512_icmp_packed<bits<8> op
def rr : AVX512BI<opc, MRMSrcReg,
(outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2)))],
- itins.rr>, EVEX_4V, Sched<[itins.Sched]>;
+ [(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2)))]>,
+ EVEX_4V, Sched<[itins.Sched]>;
def rm : AVX512BI<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
- (_.VT (bitconvert (_.LdFrag addr:$src2)))))],
- itins.rm>, EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (_.VT (bitconvert (_.LdFrag addr:$src2)))))]>,
+ EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
let isCommutable = IsCommutable in
def rrk : AVX512BI<opc, MRMSrcReg,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst {${mask}}|",
"$dst {${mask}}, $src1, $src2}"),
[(set _.KRC:$dst, (and _.KRCWM:$mask,
- (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))))],
- itins.rr>, EVEX_4V, EVEX_K, Sched<[itins.Sched]>;
+ (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))))]>,
+ EVEX_4V, EVEX_K, Sched<[itins.Sched]>;
def rmk : AVX512BI<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst {${mask}}|",
@@ -2128,8 +2128,8 @@ multiclass avx512_icmp_packed<bits<8> op
[(set _.KRC:$dst, (and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1),
(_.VT (bitconvert
- (_.LdFrag addr:$src2))))))],
- itins.rm>, EVEX_4V, EVEX_K, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (_.LdFrag addr:$src2))))))]>,
+ EVEX_4V, EVEX_K, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
multiclass avx512_icmp_packed_rmb<bits<8> opc, string OpcodeStr, PatFrag OpNode,
@@ -2140,8 +2140,8 @@ multiclass avx512_icmp_packed_rmb<bits<8
!strconcat(OpcodeStr, "\t{${src2}", _.BroadcastStr, ", $src1, $dst",
"|$dst, $src1, ${src2}", _.BroadcastStr, "}"),
[(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
- (X86VBroadcast (_.ScalarLdFrag addr:$src2))))],
- itins.rm>, EVEX_4V, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (X86VBroadcast (_.ScalarLdFrag addr:$src2))))]>,
+ EVEX_4V, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmbk : AVX512BI<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1,
_.ScalarMemOp:$src2),
@@ -2151,8 +2151,8 @@ multiclass avx512_icmp_packed_rmb<bits<8
[(set _.KRC:$dst, (and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1),
(X86VBroadcast
- (_.ScalarLdFrag addr:$src2)))))],
- itins.rm>, EVEX_4V, EVEX_K, EVEX_B,
+ (_.ScalarLdFrag addr:$src2)))))]>,
+ EVEX_4V, EVEX_K, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -2243,16 +2243,16 @@ multiclass avx512_icmp_cc<bits<8> opc, s
!strconcat("vpcmp${cc}", Suffix,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
- imm:$cc))],
- itins.rr>, EVEX_4V, Sched<[itins.Sched]>;
+ imm:$cc))]>,
+ EVEX_4V, Sched<[itins.Sched]>;
def rmi : AVX512AIi8<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2, AVX512ICC:$cc),
!strconcat("vpcmp${cc}", Suffix,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
(_.VT (bitconvert (_.LdFrag addr:$src2))),
- imm:$cc))],
- itins.rm>, EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ imm:$cc))]>,
+ EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
let isCommutable = 1 in
def rrik : AVX512AIi8<opc, MRMSrcReg,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2,
@@ -2262,8 +2262,8 @@ multiclass avx512_icmp_cc<bits<8> opc, s
"$dst {${mask}}, $src1, $src2}"),
[(set _.KRC:$dst, (and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
- imm:$cc)))],
- itins.rr>, EVEX_4V, EVEX_K, Sched<[itins.Sched]>;
+ imm:$cc)))]>,
+ EVEX_4V, EVEX_K, Sched<[itins.Sched]>;
def rmik : AVX512AIi8<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2,
AVX512ICC:$cc),
@@ -2273,39 +2273,37 @@ multiclass avx512_icmp_cc<bits<8> opc, s
[(set _.KRC:$dst, (and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1),
(_.VT (bitconvert (_.LdFrag addr:$src2))),
- imm:$cc)))],
- itins.rm>, EVEX_4V, EVEX_K,
- Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ imm:$cc)))]>,
+ EVEX_4V, EVEX_K, Sched<[itins.Sched.Folded, ReadAfterLd]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0 in {
def rri_alt : AVX512AIi8<opc, MRMSrcReg,
(outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
!strconcat("vpcmp", Suffix, "\t{$cc, $src2, $src1, $dst|",
- "$dst, $src1, $src2, $cc}"),
- [], itins.rr>, EVEX_4V, Sched<[itins.Sched]>;
+ "$dst, $src1, $src2, $cc}"), []>,
+ EVEX_4V, Sched<[itins.Sched]>;
let mayLoad = 1 in
def rmi_alt : AVX512AIi8<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
!strconcat("vpcmp", Suffix, "\t{$cc, $src2, $src1, $dst|",
- "$dst, $src1, $src2, $cc}"),
- [], itins.rm>, EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ "$dst, $src1, $src2, $cc}"), []>,
+ EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rrik_alt : AVX512AIi8<opc, MRMSrcReg,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2,
u8imm:$cc),
!strconcat("vpcmp", Suffix,
"\t{$cc, $src2, $src1, $dst {${mask}}|",
- "$dst {${mask}}, $src1, $src2, $cc}"),
- [], itins.rr>, EVEX_4V, EVEX_K, Sched<[itins.Sched]>;
+ "$dst {${mask}}, $src1, $src2, $cc}"), []>,
+ EVEX_4V, EVEX_K, Sched<[itins.Sched]>;
let mayLoad = 1 in
def rmik_alt : AVX512AIi8<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2,
u8imm:$cc),
!strconcat("vpcmp", Suffix,
"\t{$cc, $src2, $src1, $dst {${mask}}|",
- "$dst {${mask}}, $src1, $src2, $cc}"),
- [], itins.rm>, EVEX_4V, EVEX_K,
- Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ "$dst {${mask}}, $src1, $src2, $cc}"), []>,
+ EVEX_4V, EVEX_K, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
def : Pat<(OpNode (bitconvert (_.LdFrag addr:$src2)),
@@ -2331,9 +2329,8 @@ multiclass avx512_icmp_cc_rmb<bits<8> op
"$dst, $src1, ${src2}", _.BroadcastStr, "}"),
[(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
(X86VBroadcast (_.ScalarLdFrag addr:$src2)),
- imm:$cc))],
- itins.rm>, EVEX_4V, EVEX_B,
- Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ imm:$cc))]>,
+ EVEX_4V, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmibk : AVX512AIi8<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1,
_.ScalarMemOp:$src2, AVX512ICC:$cc),
@@ -2343,9 +2340,8 @@ multiclass avx512_icmp_cc_rmb<bits<8> op
[(set _.KRC:$dst, (and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1),
(X86VBroadcast (_.ScalarLdFrag addr:$src2)),
- imm:$cc)))],
- itins.rm>, EVEX_4V, EVEX_K, EVEX_B,
- Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ imm:$cc)))]>,
+ EVEX_4V, EVEX_K, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0, mayLoad = 1 in {
@@ -2354,17 +2350,15 @@ multiclass avx512_icmp_cc_rmb<bits<8> op
u8imm:$cc),
!strconcat("vpcmp", Suffix,
"\t{$cc, ${src2}", _.BroadcastStr, ", $src1, $dst|",
- "$dst, $src1, ${src2}", _.BroadcastStr, ", $cc}"),
- [], itins.rm>, EVEX_4V, EVEX_B,
- Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ "$dst, $src1, ${src2}", _.BroadcastStr, ", $cc}"), []>,
+ EVEX_4V, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmibk_alt : AVX512AIi8<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1,
_.ScalarMemOp:$src2, u8imm:$cc),
!strconcat("vpcmp", Suffix,
"\t{$cc, ${src2}", _.BroadcastStr, ", $src1, $dst {${mask}}|",
- "$dst {${mask}}, $src1, ${src2}", _.BroadcastStr, ", $cc}"),
- [], itins.rm>, EVEX_4V, EVEX_K, EVEX_B,
- Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ "$dst {${mask}}, $src1, ${src2}", _.BroadcastStr, ", $cc}"), []>,
+ EVEX_4V, EVEX_K, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
def : Pat<(OpNode (X86VBroadcast (_.ScalarLdFrag addr:$src2)),
@@ -2445,7 +2439,7 @@ multiclass avx512_vcmp_common<OpndItins
"$src2, $src1", "$src1, $src2",
(X86cmpm (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
- imm:$cc), itins.rr, 1>,
+ imm:$cc), NoItinerary, 1>,
Sched<[itins.Sched]>;
defm rmi : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
@@ -2454,7 +2448,7 @@ multiclass avx512_vcmp_common<OpndItins
"$src2, $src1", "$src1, $src2",
(X86cmpm (_.VT _.RC:$src1),
(_.VT (bitconvert (_.LdFrag addr:$src2))),
- imm:$cc), itins.rm>,
+ imm:$cc)>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmbi : AVX512_maskable_cmp<0xC2, MRMSrcMem, _,
@@ -2465,7 +2459,7 @@ multiclass avx512_vcmp_common<OpndItins
"$src1, ${src2}"##_.BroadcastStr,
(X86cmpm (_.VT _.RC:$src1),
(_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src2))),
- imm:$cc), itins.rm>,
+ imm:$cc)>,
EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0 in {
@@ -2473,7 +2467,7 @@ multiclass avx512_vcmp_common<OpndItins
(outs _.KRC:$dst),
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
- "$cc, $src2, $src1", "$src1, $src2, $cc", itins.rr>,
+ "$cc, $src2, $src1", "$src1, $src2, $cc">,
Sched<[itins.Sched]>;
let mayLoad = 1 in {
@@ -2481,7 +2475,7 @@ multiclass avx512_vcmp_common<OpndItins
(outs _.KRC:$dst),
(ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
- "$cc, $src2, $src1", "$src1, $src2, $cc", itins.rm>,
+ "$cc, $src2, $src1", "$src1, $src2, $cc">,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmbi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
@@ -2489,7 +2483,7 @@ multiclass avx512_vcmp_common<OpndItins
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, ${src2}"##_.BroadcastStr##", $src1",
- "$src1, ${src2}"##_.BroadcastStr##", $cc", itins.rm>,
+ "$src1, ${src2}"##_.BroadcastStr##", $cc">,
EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -2530,7 +2524,7 @@ multiclass avx512_vcmp_sae<OpndItins iti
(X86cmpmRnd (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
imm:$cc,
- (i32 FROUND_NO_EXC)), itins.rr>,
+ (i32 FROUND_NO_EXC))>,
EVEX_B, Sched<[itins.Sched]>;
let isAsmParserOnly = 1, hasSideEffects = 0 in {
@@ -2539,7 +2533,7 @@ multiclass avx512_vcmp_sae<OpndItins iti
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
"vcmp"#_.Suffix,
"$cc, {sae}, $src2, $src1",
- "$src1, $src2, {sae}, $cc", itins.rr>,
+ "$src1, $src2, {sae}, $cc">,
EVEX_B, Sched<[itins.Sched]>;
}
}
@@ -2585,7 +2579,7 @@ multiclass avx512_scalar_fpclass<bits<8>
(ins _.RC:$src1, i32u8imm:$src2),
OpcodeStr##_.Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
[(set _.KRC:$dst,(OpNode (_.VT _.RC:$src1),
- (i32 imm:$src2)))], itins.rr>,
+ (i32 imm:$src2)))]>,
Sched<[itins.Sched]>;
def rrk : AVX512<opc, MRMSrcReg, (outs _.KRC:$dst),
(ins _.KRCWM:$mask, _.RC:$src1, i32u8imm:$src2),
@@ -2593,7 +2587,7 @@ multiclass avx512_scalar_fpclass<bits<8>
"\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
[(set _.KRC:$dst,(and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1),
- (i32 imm:$src2))))], itins.rr>,
+ (i32 imm:$src2))))]>,
EVEX_K, Sched<[itins.Sched]>;
def rm : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
(ins _.IntScalarMemOp:$src1, i32u8imm:$src2),
@@ -2601,7 +2595,7 @@ multiclass avx512_scalar_fpclass<bits<8>
"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
[(set _.KRC:$dst,
(OpNode _.ScalarIntMemCPat:$src1,
- (i32 imm:$src2)))], itins.rm>,
+ (i32 imm:$src2)))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmk : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
(ins _.KRCWM:$mask, _.IntScalarMemOp:$src1, i32u8imm:$src2),
@@ -2609,7 +2603,7 @@ multiclass avx512_scalar_fpclass<bits<8>
"\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
[(set _.KRC:$dst,(and _.KRCWM:$mask,
(OpNode _.ScalarIntMemCPat:$src1,
- (i32 imm:$src2))))], itins.rm>,
+ (i32 imm:$src2))))]>,
EVEX_K, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -2625,7 +2619,7 @@ multiclass avx512_vector_fpclass<bits<8>
(ins _.RC:$src1, i32u8imm:$src2),
OpcodeStr##_.Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
[(set _.KRC:$dst,(OpNode (_.VT _.RC:$src1),
- (i32 imm:$src2)))], itins.rr>,
+ (i32 imm:$src2)))]>,
Sched<[itins.Sched]>;
def rrk : AVX512<opc, MRMSrcReg, (outs _.KRC:$dst),
(ins _.KRCWM:$mask, _.RC:$src1, i32u8imm:$src2),
@@ -2633,7 +2627,7 @@ multiclass avx512_vector_fpclass<bits<8>
"\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
[(set _.KRC:$dst,(and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1),
- (i32 imm:$src2))))], itins.rr>,
+ (i32 imm:$src2))))]>,
EVEX_K, Sched<[itins.Sched]>;
def rm : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
(ins _.MemOp:$src1, i32u8imm:$src2),
@@ -2641,7 +2635,7 @@ multiclass avx512_vector_fpclass<bits<8>
"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
[(set _.KRC:$dst,(OpNode
(_.VT (bitconvert (_.LdFrag addr:$src1))),
- (i32 imm:$src2)))], itins.rm>,
+ (i32 imm:$src2)))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmk : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
(ins _.KRCWM:$mask, _.MemOp:$src1, i32u8imm:$src2),
@@ -2649,7 +2643,7 @@ multiclass avx512_vector_fpclass<bits<8>
"\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
[(set _.KRC:$dst, (and _.KRCWM:$mask, (OpNode
(_.VT (bitconvert (_.LdFrag addr:$src1))),
- (i32 imm:$src2))))], itins.rm>,
+ (i32 imm:$src2))))]>,
EVEX_K, Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmb : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
(ins _.ScalarMemOp:$src1, i32u8imm:$src2),
@@ -2659,7 +2653,7 @@ multiclass avx512_vector_fpclass<bits<8>
[(set _.KRC:$dst,(OpNode
(_.VT (X86VBroadcast
(_.ScalarLdFrag addr:$src1))),
- (i32 imm:$src2)))], itins.rm>,
+ (i32 imm:$src2)))]>,
EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rmbk : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
(ins _.KRCWM:$mask, _.ScalarMemOp:$src1, i32u8imm:$src2),
@@ -2669,7 +2663,7 @@ multiclass avx512_vector_fpclass<bits<8>
[(set _.KRC:$dst,(and _.KRCWM:$mask, (OpNode
(_.VT (X86VBroadcast
(_.ScalarLdFrag addr:$src1))),
- (i32 imm:$src2))))], itins.rm>,
+ (i32 imm:$src2))))]>,
EVEX_B, EVEX_K, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -2848,7 +2842,7 @@ multiclass avx512_mask_unop<bits<8> opc,
let Predicates = [prd] in
def rr : I<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
- [(set KRC:$dst, (OpNode KRC:$src))], itins.rr>,
+ [(set KRC:$dst, (OpNode KRC:$src))]>,
Sched<[itins.Sched]>;
}
@@ -2885,7 +2879,7 @@ multiclass avx512_mask_binop<bits<8> opc
def rr : I<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src1, KRC:$src2),
!strconcat(OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [(set KRC:$dst, (OpNode KRC:$src1, KRC:$src2))], itins.rr>,
+ [(set KRC:$dst, (OpNode KRC:$src1, KRC:$src2))]>,
Sched<[itins.Sched]>;
}
@@ -2953,8 +2947,8 @@ multiclass avx512_mask_unpck<string Suff
let hasSideEffects = 0 in
def rr : I<0x4b, MRMSrcReg, (outs KRC:$dst),
(ins KRC:$src1, KRC:$src2),
- "kunpck"#Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", [],
- itins.rr>, VEX_4V, VEX_L, Sched<[itins.Sched]>;
+ "kunpck"#Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
+ VEX_4V, VEX_L, Sched<[itins.Sched]>;
def : Pat<(VT (concat_vectors KRCSrc:$src1, KRCSrc:$src2)),
(!cast<Instruction>(NAME##rr)
@@ -2973,7 +2967,7 @@ multiclass avx512_mask_testop<bits<8> op
let Predicates = [prd], Defs = [EFLAGS] in
def rr : I<opc, MRMSrcReg, (outs), (ins KRC:$src1, KRC:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
- [(set EFLAGS, (OpNode KRC:$src1, KRC:$src2))], itins.rr>,
+ [(set EFLAGS, (OpNode KRC:$src1, KRC:$src2))]>,
Sched<[itins.Sched]>;
}
@@ -2999,8 +2993,8 @@ multiclass avx512_mask_shiftop<bits<8> o
def ri : Ii8<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src, u8imm:$imm),
!strconcat(OpcodeStr,
"\t{$imm, $src, $dst|$dst, $src, $imm}"),
- [(set KRC:$dst, (OpNode KRC:$src, (i8 imm:$imm)))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set KRC:$dst, (OpNode KRC:$src, (i8 imm:$imm)))]>,
+ Sched<[itins.Sched]>;
}
multiclass avx512_mask_shiftop_w<bits<8> opc1, bits<8> opc2, string OpcodeStr,
@@ -3199,15 +3193,15 @@ multiclass avx512_load<bits<8> opc, stri
let hasSideEffects = 0 in {
def rr : AVX512PI<opc, MRMSrcReg, (outs _.RC:$dst), (ins _.RC:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), [],
- _.ExeDomain, itins.rr>, EVEX, Sched<[SchedRR]>;
+ _.ExeDomain>, EVEX, Sched<[SchedRR]>;
def rrkz : AVX512PI<opc, MRMSrcReg, (outs _.RC:$dst),
(ins _.KRCWM:$mask, _.RC:$src),
!strconcat(OpcodeStr, "\t{$src, ${dst} {${mask}} {z}|",
"${dst} {${mask}} {z}, $src}"),
[(set _.RC:$dst, (_.VT (SelectOprr _.KRCWM:$mask,
(_.VT _.RC:$src),
- _.ImmAllZerosV)))], _.ExeDomain,
- itins.rr>, EVEX, EVEX_KZ, Sched<[SchedRR]>;
+ _.ImmAllZerosV)))], _.ExeDomain>,
+ EVEX, EVEX_KZ, Sched<[SchedRR]>;
let mayLoad = 1, canFoldAsLoad = 1, isReMaterializable = 1 in
def rm : AVX512PI<opc, MRMSrcMem, (outs _.RC:$dst), (ins _.MemOp:$src),
@@ -3215,7 +3209,7 @@ multiclass avx512_load<bits<8> opc, stri
!if(NoRMPattern, [],
[(set _.RC:$dst,
(_.VT (bitconvert (ld_frag addr:$src))))]),
- _.ExeDomain, itins.rm>, EVEX, Sched<[SchedRM]>;
+ _.ExeDomain>, EVEX, Sched<[SchedRM]>;
let Constraints = "$src0 = $dst", isConvertibleToThreeAddress = 1 in {
def rrk : AVX512PI<opc, MRMSrcReg, (outs _.RC:$dst),
@@ -3224,8 +3218,8 @@ multiclass avx512_load<bits<8> opc, stri
"${dst} {${mask}}, $src1}"),
[(set _.RC:$dst, (_.VT (SelectOprr _.KRCWM:$mask,
(_.VT _.RC:$src1),
- (_.VT _.RC:$src0))))], _.ExeDomain,
- itins.rr>, EVEX, EVEX_K, Sched<[SchedRR]>;
+ (_.VT _.RC:$src0))))], _.ExeDomain>,
+ EVEX, EVEX_K, Sched<[SchedRR]>;
def rmk : AVX512PI<opc, MRMSrcMem, (outs _.RC:$dst),
(ins _.RC:$src0, _.KRCWM:$mask, _.MemOp:$src1),
!strconcat(OpcodeStr, "\t{$src1, ${dst} {${mask}}|",
@@ -3233,7 +3227,7 @@ multiclass avx512_load<bits<8> opc, stri
[(set _.RC:$dst, (_.VT
(vselect _.KRCWM:$mask,
(_.VT (bitconvert (ld_frag addr:$src1))),
- (_.VT _.RC:$src0))))], _.ExeDomain, itins.rm>,
+ (_.VT _.RC:$src0))))], _.ExeDomain>,
EVEX, EVEX_K, Sched<[SchedRM]>;
}
def rmkz : AVX512PI<opc, MRMSrcMem, (outs _.RC:$dst),
@@ -3242,7 +3236,7 @@ multiclass avx512_load<bits<8> opc, stri
"${dst} {${mask}} {z}, $src}",
[(set _.RC:$dst, (_.VT (vselect _.KRCWM:$mask,
(_.VT (bitconvert (ld_frag addr:$src))), _.ImmAllZerosV)))],
- _.ExeDomain, itins.rm>, EVEX, EVEX_KZ, Sched<[SchedRM]>;
+ _.ExeDomain>, EVEX, EVEX_KZ, Sched<[SchedRM]>;
}
def : Pat<(_.VT (mload addr:$ptr, _.KRCWM:$mask, undef)),
(!cast<Instruction>(NAME#_.ZSuffix##rmkz) _.KRCWM:$mask, addr:$ptr)>;
@@ -3301,19 +3295,19 @@ multiclass avx512_store<bits<8> opc, str
let hasSideEffects = 0 in {
def rr_REV : AVX512PI<opc, MRMDestReg, (outs _.RC:$dst), (ins _.RC:$src),
OpcodeStr # ".s\t{$src, $dst|$dst, $src}",
- [], _.ExeDomain, itins.rr>, EVEX, FoldGenData<Name#rr>,
+ [], _.ExeDomain>, EVEX, FoldGenData<Name#rr>,
Sched<[SchedRR]>;
def rrk_REV : AVX512PI<opc, MRMDestReg, (outs _.RC:$dst),
(ins _.KRCWM:$mask, _.RC:$src),
OpcodeStr # ".s\t{$src, ${dst} {${mask}}|"#
"${dst} {${mask}}, $src}",
- [], _.ExeDomain, itins.rr>, EVEX, EVEX_K,
+ [], _.ExeDomain>, EVEX, EVEX_K,
FoldGenData<Name#rrk>, Sched<[SchedRR]>;
def rrkz_REV : AVX512PI<opc, MRMDestReg, (outs _.RC:$dst),
(ins _.KRCWM:$mask, _.RC:$src),
OpcodeStr # ".s\t{$src, ${dst} {${mask}} {z}|" #
"${dst} {${mask}} {z}, $src}",
- [], _.ExeDomain, itins.rr>, EVEX, EVEX_KZ,
+ [], _.ExeDomain>, EVEX, EVEX_KZ,
FoldGenData<Name#rrkz>, Sched<[SchedRR]>;
}
@@ -3322,11 +3316,11 @@ multiclass avx512_store<bits<8> opc, str
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
!if(NoMRPattern, [],
[(st_frag (_.VT _.RC:$src), addr:$dst)]),
- _.ExeDomain, itins.mr>, EVEX, Sched<[SchedMR]>;
+ _.ExeDomain>, EVEX, Sched<[SchedMR]>;
def mrk : AVX512PI<opc, MRMDestMem, (outs),
(ins _.MemOp:$dst, _.KRCWM:$mask, _.RC:$src),
OpcodeStr # "\t{$src, ${dst} {${mask}}|${dst} {${mask}}, $src}",
- [], _.ExeDomain, itins.mr>, EVEX, EVEX_K, Sched<[SchedMR]>;
+ [], _.ExeDomain>, EVEX, EVEX_K, Sched<[SchedMR]>;
def: Pat<(mstore addr:$ptr, _.KRCWM:$mask, (_.VT _.RC:$src)),
(!cast<Instruction>(NAME#_.ZSuffix##mrk) addr:$ptr,
@@ -4346,15 +4340,15 @@ multiclass avx512_binop_rm<bits<8> opc,
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (OpNode _.RC:$src1, _.RC:$src2)),
- itins.rr, IsCommutable>, AVX512BIBase, EVEX_4V,
+ NoItinerary, IsCommutable>, AVX512BIBase, EVEX_4V,
Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (OpNode _.RC:$src1,
- (bitconvert (_.LdFrag addr:$src2)))),
- itins.rm>, AVX512BIBase, EVEX_4V,
+ (bitconvert (_.LdFrag addr:$src2))))>,
+ AVX512BIBase, EVEX_4V,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -4368,8 +4362,8 @@ multiclass avx512_binop_rmb<bits<8> opc,
"$src1, ${src2}"##_.BroadcastStr,
(_.VT (OpNode _.RC:$src1,
(X86VBroadcast
- (_.ScalarLdFrag addr:$src2)))),
- itins.rm>, AVX512BIBase, EVEX_4V, EVEX_B,
+ (_.ScalarLdFrag addr:$src2))))>,
+ AVX512BIBase, EVEX_4V, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -4474,14 +4468,14 @@ multiclass avx512_binop_rm2<bits<8> opc,
(_Dst.VT (OpNode
(_Src.VT _Src.RC:$src1),
(_Src.VT _Src.RC:$src2))),
- itins.rr, IsCommutable>,
+ NoItinerary, IsCommutable>,
AVX512BIBase, EVEX_4V, Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
(ins _Src.RC:$src1, _Src.MemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_Dst.VT (OpNode (_Src.VT _Src.RC:$src1),
- (bitconvert (_Src.LdFrag addr:$src2)))),
- itins.rm>, AVX512BIBase, EVEX_4V,
+ (bitconvert (_Src.LdFrag addr:$src2))))>,
+ AVX512BIBase, EVEX_4V,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmb : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
@@ -4491,8 +4485,8 @@ multiclass avx512_binop_rm2<bits<8> opc,
"$src1, ${src2}"##_Brdct.BroadcastStr,
(_Dst.VT (OpNode (_Src.VT _Src.RC:$src1), (bitconvert
(_Brdct.VT (X86VBroadcast
- (_Brdct.ScalarLdFrag addr:$src2)))))),
- itins.rm>, AVX512BIBase, EVEX_4V, EVEX_B,
+ (_Brdct.ScalarLdFrag addr:$src2))))))>,
+ AVX512BIBase, EVEX_4V, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -4561,8 +4555,8 @@ multiclass avx512_packs_rmb<bits<8> opc,
"$src1, ${src2}"##_Src.BroadcastStr,
(_Dst.VT (OpNode (_Src.VT _Src.RC:$src1), (bitconvert
(_Src.VT (X86VBroadcast
- (_Src.ScalarLdFrag addr:$src2)))))),
- itins.rm>, EVEX_4V, EVEX_B, EVEX_CD8<_Src.EltSize, CD8VF>,
+ (_Src.ScalarLdFrag addr:$src2))))))>,
+ EVEX_4V, EVEX_B, EVEX_CD8<_Src.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -4576,13 +4570,13 @@ multiclass avx512_packs_rm<bits<8> opc,
(_Dst.VT (OpNode
(_Src.VT _Src.RC:$src1),
(_Src.VT _Src.RC:$src2))),
- itins.rr, IsCommutable>,
+ NoItinerary, IsCommutable>,
EVEX_CD8<_Src.EltSize, CD8VF>, EVEX_4V, Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
(ins _Src.RC:$src1, _Src.MemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_Dst.VT (OpNode (_Src.VT _Src.RC:$src1),
- (bitconvert (_Src.LdFrag addr:$src2)))), itins.rm>,
+ (bitconvert (_Src.LdFrag addr:$src2))))>,
EVEX_4V, EVEX_CD8<_Src.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -4745,7 +4739,7 @@ multiclass avx512_logic_rm<bits<8> opc,
(bitconvert (_.VT _.RC:$src2)))),
(_.VT (bitconvert (_.i64VT (OpNodeMsk _.RC:$src1,
_.RC:$src2)))),
- itins.rr, IsCommutable>, AVX512BIBase, EVEX_4V,
+ NoItinerary, IsCommutable>, AVX512BIBase, EVEX_4V,
Sched<[itins.Sched]>;
let hasSideEffects = 0, mayLoad = 1 in
@@ -4755,8 +4749,8 @@ multiclass avx512_logic_rm<bits<8> opc,
(_.i64VT (OpNode (bitconvert (_.VT _.RC:$src1)),
(bitconvert (_.LdFrag addr:$src2)))),
(_.VT (bitconvert (_.i64VT (OpNodeMsk _.RC:$src1,
- (bitconvert (_.LdFrag addr:$src2)))))),
- itins.rm>, AVX512BIBase, EVEX_4V,
+ (bitconvert (_.LdFrag addr:$src2))))))>,
+ AVX512BIBase, EVEX_4V,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -4779,8 +4773,8 @@ multiclass avx512_logic_rmb<bits<8> opc,
(_.VT (bitconvert (_.i64VT (OpNodeMsk _.RC:$src1,
(bitconvert
(_.VT (X86VBroadcast
- (_.ScalarLdFrag addr:$src2)))))))),
- itins.rm>, AVX512BIBase, EVEX_4V, EVEX_B,
+ (_.ScalarLdFrag addr:$src2))))))))>,
+ AVX512BIBase, EVEX_4V, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -4828,29 +4822,29 @@ multiclass avx512_fp_scalar<bits<8> opc,
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (VecNode _.RC:$src1, _.RC:$src2,
- (i32 FROUND_CURRENT))),
- itins.rr>, Sched<[itins.Sched]>;
+ (i32 FROUND_CURRENT)))>,
+ Sched<[itins.Sched]>;
defm rm_Int : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (VecNode _.RC:$src1,
_.ScalarIntMemCPat:$src2,
- (i32 FROUND_CURRENT))),
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (i32 FROUND_CURRENT)))>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
let isCodeGenOnly = 1, Predicates = [HasAVX512] in {
def rr : I< opc, MRMSrcReg, (outs _.FRC:$dst),
(ins _.FRC:$src1, _.FRC:$src2),
OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
- [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2))],
- itins.rr>, Sched<[itins.Sched]> {
+ [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2))]>,
+ Sched<[itins.Sched]> {
let isCommutable = IsCommutable;
}
def rm : I< opc, MRMSrcMem, (outs _.FRC:$dst),
(ins _.FRC:$src1, _.ScalarMemOp:$src2),
OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
[(set _.FRC:$dst, (OpNode _.FRC:$src1,
- (_.ScalarLdFrag addr:$src2)))], itins.rm>,
+ (_.ScalarLdFrag addr:$src2)))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -4863,7 +4857,7 @@ multiclass avx512_fp_scalar_round<bits<8
(ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr,
"$rc, $src2, $src1", "$src1, $src2, $rc",
(VecNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
- (i32 imm:$rc)), itins.rr, IsCommutable>,
+ (i32 imm:$rc)), NoItinerary, IsCommutable>,
EVEX_B, EVEX_RC, Sched<[itins.Sched]>;
}
multiclass avx512_fp_scalar_sae<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
@@ -4873,29 +4867,29 @@ multiclass avx512_fp_scalar_sae<bits<8>
defm rr_Int : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
- (_.VT (VecNode _.RC:$src1, _.RC:$src2)),
- itins.rr>, Sched<[itins.Sched]>;
+ (_.VT (VecNode _.RC:$src1, _.RC:$src2))>,
+ Sched<[itins.Sched]>;
defm rm_Int : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (VecNode _.RC:$src1,
- _.ScalarIntMemCPat:$src2)),
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ _.ScalarIntMemCPat:$src2))>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
let isCodeGenOnly = 1, Predicates = [HasAVX512] in {
def rr : I< opc, MRMSrcReg, (outs _.FRC:$dst),
(ins _.FRC:$src1, _.FRC:$src2),
OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
- [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2))],
- itins.rr>, Sched<[itins.Sched]> {
+ [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2))]>,
+ Sched<[itins.Sched]> {
let isCommutable = IsCommutable;
}
def rm : I< opc, MRMSrcMem, (outs _.FRC:$dst),
(ins _.FRC:$src1, _.ScalarMemOp:$src2),
OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
[(set _.FRC:$dst, (OpNode _.FRC:$src1,
- (_.ScalarLdFrag addr:$src2)))], itins.rm>,
+ (_.ScalarLdFrag addr:$src2)))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -4903,7 +4897,7 @@ multiclass avx512_fp_scalar_sae<bits<8>
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"{sae}, $src2, $src1", "$src1, $src2, {sae}",
(SaeNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
- (i32 FROUND_NO_EXC)), itins.rr>, EVEX_B,
+ (i32 FROUND_NO_EXC))>, EVEX_B,
Sched<[itins.Sched]>;
}
}
@@ -4917,7 +4911,7 @@ multiclass avx512_binop_s_round<bits<8>
itins.s, IsCommutable>,
XS, EVEX_4V, VEX_LIG, EVEX_CD8<32, CD8VT1>;
defm SDZ : avx512_fp_scalar<opc, OpcodeStr#"sd", f64x_info, OpNode, VecNode,
- itins.d, IsCommutable>,
+ itins.d, IsCommutable>,
avx512_fp_scalar_round<opc, OpcodeStr#"sd", f64x_info, VecNode,
itins.d, IsCommutable>,
XD, VEX_W, EVEX_4V, VEX_LIG, EVEX_CD8<64, CD8VT1>;
@@ -4950,15 +4944,15 @@ multiclass avx512_comutable_binop_s<bits
def rr : I< opc, MRMSrcReg, (outs _.FRC:$dst),
(ins _.FRC:$src1, _.FRC:$src2),
OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
- [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2))],
- itins.rr>, Sched<[itins.Sched]> {
+ [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2))]>,
+ Sched<[itins.Sched]> {
let isCommutable = 1;
}
def rm : I< opc, MRMSrcMem, (outs _.FRC:$dst),
(ins _.FRC:$src1, _.ScalarMemOp:$src2),
OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
[(set _.FRC:$dst, (OpNode _.FRC:$src1,
- (_.ScalarLdFrag addr:$src2)))], itins.rm>,
+ (_.ScalarLdFrag addr:$src2)))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -4985,21 +4979,21 @@ multiclass avx512_fp_packed<bits<8> opc,
defm rr: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr##_.Suffix,
"$src2, $src1", "$src1, $src2",
- (_.VT (OpNode _.RC:$src1, _.RC:$src2)), itins.rr,
+ (_.VT (OpNode _.RC:$src1, _.RC:$src2)), NoItinerary,
IsCommutable>, EVEX_4V, Sched<[itins.Sched]>;
let mayLoad = 1 in {
defm rm: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.MemOp:$src2), OpcodeStr##_.Suffix,
"$src2, $src1", "$src1, $src2",
- (OpNode _.RC:$src1, (_.LdFrag addr:$src2)), itins.rm>,
+ (OpNode _.RC:$src1, (_.LdFrag addr:$src2))>,
EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr##_.Suffix,
"${src2}"##_.BroadcastStr##", $src1",
"$src1, ${src2}"##_.BroadcastStr,
(OpNode _.RC:$src1, (_.VT (X86VBroadcast
- (_.ScalarLdFrag addr:$src2)))),
- itins.rm>, EVEX_4V, EVEX_B,
+ (_.ScalarLdFrag addr:$src2))))>,
+ EVEX_4V, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -5011,7 +5005,7 @@ multiclass avx512_fp_round_packed<bits<8
defm rrb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr##_.Suffix,
"$rc, $src2, $src1", "$src1, $src2, $rc",
- (_.VT (OpNodeRnd _.RC:$src1, _.RC:$src2, (i32 imm:$rc))), itins.rr>,
+ (_.VT (OpNodeRnd _.RC:$src1, _.RC:$src2, (i32 imm:$rc)))>,
EVEX_4V, EVEX_B, EVEX_RC, Sched<[itins.Sched]>;
}
@@ -5021,7 +5015,7 @@ multiclass avx512_fp_sae_packed<bits<8>
defm rrb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr##_.Suffix,
"{sae}, $src2, $src1", "$src1, $src2, {sae}",
- (_.VT (OpNodeRnd _.RC:$src1, _.RC:$src2, (i32 FROUND_NO_EXC))), itins.rr>,
+ (_.VT (OpNodeRnd _.RC:$src1, _.RC:$src2, (i32 FROUND_NO_EXC)))>,
EVEX_4V, EVEX_B, Sched<[itins.Sched]>;
}
@@ -5211,20 +5205,20 @@ multiclass avx512_fp_scalef_p<bits<8> op
defm rr: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr##_.Suffix,
"$src2, $src1", "$src1, $src2",
- (_.VT (OpNode _.RC:$src1, _.RC:$src2, (i32 FROUND_CURRENT))),
- itins.rr>, EVEX_4V, Sched<[itins.Sched]>;
+ (_.VT (OpNode _.RC:$src1, _.RC:$src2, (i32 FROUND_CURRENT)))>,
+ EVEX_4V, Sched<[itins.Sched]>;
defm rm: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.MemOp:$src2), OpcodeStr##_.Suffix,
"$src2, $src1", "$src1, $src2",
- (OpNode _.RC:$src1, (_.LdFrag addr:$src2), (i32 FROUND_CURRENT)),
- itins.rm>, EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (OpNode _.RC:$src1, (_.LdFrag addr:$src2), (i32 FROUND_CURRENT))>,
+ EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr##_.Suffix,
"${src2}"##_.BroadcastStr##", $src1",
"$src1, ${src2}"##_.BroadcastStr,
(OpNode _.RC:$src1, (_.VT (X86VBroadcast
(_.ScalarLdFrag addr:$src2))),
- (i32 FROUND_CURRENT)), itins.rm>,
+ (i32 FROUND_CURRENT))>,
EVEX_4V, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -5235,13 +5229,13 @@ multiclass avx512_fp_scalef_scalar<bits<
defm rr: AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr##_.Suffix,
"$src2, $src1", "$src1, $src2",
- (_.VT (OpNode _.RC:$src1, _.RC:$src2, (i32 FROUND_CURRENT))), itins.rr>,
+ (_.VT (OpNode _.RC:$src1, _.RC:$src2, (i32 FROUND_CURRENT)))>,
Sched<[itins.Sched]>;
defm rm: AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr##_.Suffix,
"$src2, $src1", "$src1, $src2",
(OpNode _.RC:$src1, _.ScalarIntMemCPat:$src2,
- (i32 FROUND_CURRENT)), itins.rm>,
+ (i32 FROUND_CURRENT))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -5286,7 +5280,7 @@ multiclass avx512_vptest<bits<8> opc, st
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(OpNode (bitconvert (_.i64VT (and _.RC:$src1, _.RC:$src2))),
- _.ImmAllZerosV), itins.rr>,
+ _.ImmAllZerosV)>,
EVEX_4V, Sched<[itins.Sched]>;
defm rm : AVX512_maskable_cmp<opc, MRMSrcMem, _, (outs _.KRC:$dst),
(ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
@@ -5294,8 +5288,8 @@ multiclass avx512_vptest<bits<8> opc, st
(OpNode (bitconvert
(_.i64VT (and _.RC:$src1,
(bitconvert (_.LdFrag addr:$src2))))),
- _.ImmAllZerosV),
- itins.rm>, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
+ _.ImmAllZerosV)>,
+ EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -5319,8 +5313,8 @@ multiclass avx512_vptest_mb<bits<8> opc,
(OpNode (and _.RC:$src1,
(X86VBroadcast
(_.ScalarLdFrag addr:$src2))),
- _.ImmAllZerosV),
- itins.rm>, EVEX_B, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
+ _.ImmAllZerosV)>,
+ EVEX_B, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -5453,14 +5447,14 @@ multiclass avx512_shift_rmi<bits<8> opc,
defm ri : AVX512_maskable<opc, ImmFormR, _, (outs _.RC:$dst),
(ins _.RC:$src1, u8imm:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
- (_.VT (OpNode _.RC:$src1, (i8 imm:$src2))),
- itins.rr>, Sched<[itins.Sched]>;
+ (_.VT (OpNode _.RC:$src1, (i8 imm:$src2)))>,
+ Sched<[itins.Sched]>;
defm mi : AVX512_maskable<opc, ImmFormM, _, (outs _.RC:$dst),
(ins _.MemOp:$src1, u8imm:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (OpNode (_.VT (bitconvert (_.LdFrag addr:$src1))),
- (i8 imm:$src2))),
- itins.rm>, Sched<[itins.Sched.Folded]>;
+ (i8 imm:$src2)))>,
+ Sched<[itins.Sched.Folded]>;
}
}
@@ -5471,8 +5465,8 @@ multiclass avx512_shift_rmbi<bits<8> opc
defm mbi : AVX512_maskable<opc, ImmFormM, _, (outs _.RC:$dst),
(ins _.ScalarMemOp:$src1, u8imm:$src2), OpcodeStr,
"$src2, ${src1}"##_.BroadcastStr, "${src1}"##_.BroadcastStr##", $src2",
- (_.VT (OpNode (X86VBroadcast (_.ScalarLdFrag addr:$src1)), (i8 imm:$src2))),
- itins.rm>, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (_.VT (OpNode (X86VBroadcast (_.ScalarLdFrag addr:$src1)), (i8 imm:$src2)))>,
+ EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
multiclass avx512_shift_rrm<bits<8> opc, string OpcodeStr, SDNode OpNode,
@@ -5483,13 +5477,13 @@ multiclass avx512_shift_rrm<bits<8> opc,
defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, VR128X:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
- (_.VT (OpNode _.RC:$src1, (SrcVT VR128X:$src2))),
- itins.rr>, AVX512BIBase, EVEX_4V, Sched<[itins.Sched]>;
+ (_.VT (OpNode _.RC:$src1, (SrcVT VR128X:$src2)))>,
+ AVX512BIBase, EVEX_4V, Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, i128mem:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
- (_.VT (OpNode _.RC:$src1, (bc_frag (loadv2i64 addr:$src2)))),
- itins.rm>, AVX512BIBase,
+ (_.VT (OpNode _.RC:$src1, (bc_frag (loadv2i64 addr:$src2))))>,
+ AVX512BIBase,
EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -5626,16 +5620,14 @@ multiclass avx512_var_shift<bits<8> opc,
defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
- (_.VT (OpNode _.RC:$src1, (_.VT _.RC:$src2))),
- itins.rr>, AVX5128IBase, EVEX_4V,
- Sched<[itins.Sched]>;
+ (_.VT (OpNode _.RC:$src1, (_.VT _.RC:$src2)))>,
+ AVX5128IBase, EVEX_4V, Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (OpNode _.RC:$src1,
- (_.VT (bitconvert (_.LdFrag addr:$src2))))),
- itins.rm>, AVX5128IBase, EVEX_4V,
- EVEX_CD8<_.EltSize, CD8VF>,
+ (_.VT (bitconvert (_.LdFrag addr:$src2)))))>,
+ AVX5128IBase, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -5648,9 +5640,8 @@ multiclass avx512_var_shift_mb<bits<8> o
"${src2}"##_.BroadcastStr##", $src1",
"$src1, ${src2}"##_.BroadcastStr,
(_.VT (OpNode _.RC:$src1, (_.VT (X86VBroadcast
- (_.ScalarLdFrag addr:$src2))))),
- itins.rm>, AVX5128IBase, EVEX_B,
- EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
+ (_.ScalarLdFrag addr:$src2)))))>,
+ AVX5128IBase, EVEX_B, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -5974,15 +5965,15 @@ multiclass avx512_permil_vec<bits<8> Opc
(ins _.RC:$src1, Ctrl.RC:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (OpNode _.RC:$src1,
- (Ctrl.VT Ctrl.RC:$src2))), itins.rr>,
+ (Ctrl.VT Ctrl.RC:$src2)))>,
T8PD, EVEX_4V, Sched<[itins.Sched]>;
defm rm: AVX512_maskable<OpcVar, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, Ctrl.MemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (OpNode
_.RC:$src1,
- (Ctrl.VT (bitconvert(Ctrl.LdFrag addr:$src2))))),
- itins.rm>, T8PD, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
+ (Ctrl.VT (bitconvert(Ctrl.LdFrag addr:$src2)))))>,
+ T8PD, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmb: AVX512_maskable<OpcVar, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
@@ -5991,8 +5982,8 @@ multiclass avx512_permil_vec<bits<8> Opc
(_.VT (OpNode
_.RC:$src1,
(Ctrl.VT (X86VBroadcast
- (Ctrl.ScalarLdFrag addr:$src2))))),
- itins.rm>, T8PD, EVEX_4V, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
+ (Ctrl.ScalarLdFrag addr:$src2)))))>,
+ T8PD, EVEX_4V, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -6488,14 +6479,14 @@ multiclass avx512_pmadd52_rm<bits<8> opc
defm r: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.RC:$src3),
OpcodeStr, "$src3, $src2", "$src2, $src3",
- (_.VT (OpNode _.RC:$src2, _.RC:$src3, _.RC:$src1)), itins.rr, 1, 1>,
+ (_.VT (OpNode _.RC:$src2, _.RC:$src3, _.RC:$src1)), NoItinerary, 1, 1>,
AVX512FMA3Base, Sched<[itins.Sched]>;
defm m: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.MemOp:$src3),
OpcodeStr, "$src3, $src2", "$src2, $src3",
- (_.VT (OpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1)),
- itins.rm>, AVX512FMA3Base, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (_.VT (OpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1))>,
+ AVX512FMA3Base, Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.ScalarMemOp:$src3),
@@ -6503,7 +6494,7 @@ multiclass avx512_pmadd52_rm<bits<8> opc
!strconcat("$src2, ${src3}", _.BroadcastStr ),
(OpNode _.RC:$src2,
(_.VT (X86VBroadcast (_.ScalarLdFrag addr:$src3))),
- _.RC:$src1), itins.rm>,
+ _.RC:$src1)>,
AVX512FMA3Base, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -6538,13 +6529,13 @@ multiclass avx512_vcvtsi<bits<8> opc, SD
let hasSideEffects = 0 in {
def rr : SI<opc, MRMSrcReg, (outs DstVT.FRC:$dst),
(ins DstVT.FRC:$src1, SrcRC:$src),
- !strconcat(asm,"\t{$src, $src1, $dst|$dst, $src1, $src}"), [],
- itins.rr>, EVEX_4V, Sched<[itins.Sched]>;
+ !strconcat(asm,"\t{$src, $src1, $dst|$dst, $src1, $src}"), []>,
+ EVEX_4V, Sched<[itins.Sched]>;
let mayLoad = 1 in
def rm : SI<opc, MRMSrcMem, (outs DstVT.FRC:$dst),
(ins DstVT.FRC:$src1, x86memop:$src),
- !strconcat(asm,"\t{$src, $src1, $dst|$dst, $src1, $src}"), [],
- itins.rm>, EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ !strconcat(asm,"\t{$src, $src1, $dst|$dst, $src1, $src}"), []>,
+ EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
} // hasSideEffects = 0
let isCodeGenOnly = 1 in {
def rr_Int : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst),
@@ -6553,7 +6544,7 @@ multiclass avx512_vcvtsi<bits<8> opc, SD
[(set DstVT.RC:$dst,
(OpNode (DstVT.VT DstVT.RC:$src1),
SrcRC:$src2,
- (i32 FROUND_CURRENT)))], itins.rr>,
+ (i32 FROUND_CURRENT)))]>,
EVEX_4V, Sched<[itins.Sched]>;
def rm_Int : SI<opc, MRMSrcMem, (outs DstVT.RC:$dst),
@@ -6562,7 +6553,7 @@ multiclass avx512_vcvtsi<bits<8> opc, SD
[(set DstVT.RC:$dst,
(OpNode (DstVT.VT DstVT.RC:$src1),
(ld_frag addr:$src2),
- (i32 FROUND_CURRENT)))], itins.rm>,
+ (i32 FROUND_CURRENT)))]>,
EVEX_4V, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}//isCodeGenOnly = 1
}
@@ -6576,7 +6567,7 @@ multiclass avx512_vcvtsi_round<bits<8> o
[(set DstVT.RC:$dst,
(OpNode (DstVT.VT DstVT.RC:$src1),
SrcRC:$src2,
- (i32 imm:$rc)))], itins.rr>,
+ (i32 imm:$rc)))]>,
EVEX_4V, EVEX_B, EVEX_RC, Sched<[itins.Sched]>;
}
@@ -6674,19 +6665,19 @@ multiclass avx512_cvt_s_int_round<bits<8
let Predicates = [HasAVX512] in {
def rr_Int : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst), (ins SrcVT.RC:$src),
!strconcat(asm,"\t{$src, $dst|$dst, $src}"),
- [(set DstVT.RC:$dst, (OpNode (SrcVT.VT SrcVT.RC:$src),(i32 FROUND_CURRENT)))],
- itins.rr>, EVEX, VEX_LIG, Sched<[itins.Sched]>;
+ [(set DstVT.RC:$dst, (OpNode (SrcVT.VT SrcVT.RC:$src),(i32 FROUND_CURRENT)))]>,
+ EVEX, VEX_LIG, Sched<[itins.Sched]>;
def rrb_Int : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst), (ins SrcVT.RC:$src, AVX512RC:$rc),
!strconcat(asm,"\t{$rc, $src, $dst|$dst, $src, $rc}"),
- [(set DstVT.RC:$dst, (OpNode (SrcVT.VT SrcVT.RC:$src),(i32 imm:$rc)))],
- itins.rr>, EVEX, VEX_LIG, EVEX_B, EVEX_RC,
+ [(set DstVT.RC:$dst, (OpNode (SrcVT.VT SrcVT.RC:$src),(i32 imm:$rc)))]>,
+ EVEX, VEX_LIG, EVEX_B, EVEX_RC,
Sched<[itins.Sched]>;
let isCodeGenOnly = CodeGenOnly, ForceDisassemble = CodeGenOnly in
def rm_Int : SI<opc, MRMSrcMem, (outs DstVT.RC:$dst), (ins SrcVT.IntScalarMemOp:$src),
!strconcat(asm,"\t{$src, $dst|$dst, $src}"),
[(set DstVT.RC:$dst, (OpNode
(SrcVT.VT SrcVT.ScalarIntMemCPat:$src),
- (i32 FROUND_CURRENT)))], itins.rm>,
+ (i32 FROUND_CURRENT)))]>,
EVEX, VEX_LIG, Sched<[itins.Sched.Folded, ReadAfterLd]>;
def : InstAlias<"v" # asm # aliasStr # "\t{$src, $dst|$dst, $src}",
@@ -6811,23 +6802,23 @@ let Predicates = [HasAVX512] in {
let isCodeGenOnly = 1 in {
def rr : AVX512<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.FRC:$src),
!strconcat(asm,"\t{$src, $dst|$dst, $src}"),
- [(set _DstRC.RC:$dst, (OpNode _SrcRC.FRC:$src))], itins.rr>,
+ [(set _DstRC.RC:$dst, (OpNode _SrcRC.FRC:$src))]>,
EVEX, Sched<[itins.Sched]>;
def rm : AVX512<opc, MRMSrcMem, (outs _DstRC.RC:$dst), (ins _SrcRC.ScalarMemOp:$src),
!strconcat(asm,"\t{$src, $dst|$dst, $src}"),
- [(set _DstRC.RC:$dst, (OpNode (_SrcRC.ScalarLdFrag addr:$src)))],
- itins.rm>, EVEX, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ [(set _DstRC.RC:$dst, (OpNode (_SrcRC.ScalarLdFrag addr:$src)))]>,
+ EVEX, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
def rr_Int : AVX512<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.RC:$src),
!strconcat(asm,"\t{$src, $dst|$dst, $src}"),
[(set _DstRC.RC:$dst, (OpNodeRnd (_SrcRC.VT _SrcRC.RC:$src),
- (i32 FROUND_CURRENT)))], itins.rr>,
+ (i32 FROUND_CURRENT)))]>,
EVEX, VEX_LIG, Sched<[itins.Sched]>;
def rrb_Int : AVX512<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.RC:$src),
!strconcat(asm,"\t{{sae}, $src, $dst|$dst, $src, {sae}}"),
[(set _DstRC.RC:$dst, (OpNodeRnd (_SrcRC.VT _SrcRC.RC:$src),
- (i32 FROUND_NO_EXC)))], itins.rr>,
+ (i32 FROUND_NO_EXC)))]>,
EVEX,VEX_LIG , EVEX_B, Sched<[itins.Sched]>;
let isCodeGenOnly = CodeGenOnly, ForceDisassemble = CodeGenOnly in
def rm_Int : AVX512<opc, MRMSrcMem, (outs _DstRC.RC:$dst),
@@ -6835,7 +6826,7 @@ let Predicates = [HasAVX512] in {
!strconcat(asm,"\t{$src, $dst|$dst, $src}"),
[(set _DstRC.RC:$dst, (OpNodeRnd
(_SrcRC.VT _SrcRC.ScalarIntMemCPat:$src),
- (i32 FROUND_CURRENT)))], itins.rm>,
+ (i32 FROUND_CURRENT)))]>,
EVEX, VEX_LIG, Sched<[itins.Sched.Folded, ReadAfterLd]>;
def : InstAlias<asm # aliasStr # "\t{$src, $dst|$dst, $src}",
@@ -6915,28 +6906,27 @@ multiclass avx512_cvt_fp_scalar<bits<8>
"$src2, $src1", "$src1, $src2",
(_.VT (OpNode (_.VT _.RC:$src1),
(_Src.VT _Src.RC:$src2),
- (i32 FROUND_CURRENT))), itins.rr>,
+ (i32 FROUND_CURRENT)))>,
EVEX_4V, VEX_LIG, Sched<[itins.Sched]>;
defm rm_Int : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _Src.IntScalarMemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(_.VT (OpNode (_.VT _.RC:$src1),
(_Src.VT _Src.ScalarIntMemCPat:$src2),
- (i32 FROUND_CURRENT))), itins.rm>,
+ (i32 FROUND_CURRENT)))>,
EVEX_4V, VEX_LIG,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
let isCodeGenOnly = 1, hasSideEffects = 0 in {
def rr : I<opc, MRMSrcReg, (outs _.FRC:$dst),
(ins _.FRC:$src1, _Src.FRC:$src2),
- OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", [],
- itins.rr>, EVEX_4V, VEX_LIG, Sched<[itins.Sched]>;
+ OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
+ EVEX_4V, VEX_LIG, Sched<[itins.Sched]>;
let mayLoad = 1 in
def rm : I<opc, MRMSrcMem, (outs _.FRC:$dst),
(ins _.FRC:$src1, _Src.ScalarMemOp:$src2),
- OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", [],
- itins.rm>, EVEX_4V, VEX_LIG,
- Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
+ EVEX_4V, VEX_LIG, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -6948,7 +6938,7 @@ multiclass avx512_cvt_fp_sae_scalar<bits
"{sae}, $src2, $src1", "$src1, $src2, {sae}",
(_.VT (OpNodeRnd (_.VT _.RC:$src1),
(_Src.VT _Src.RC:$src2),
- (i32 FROUND_NO_EXC))), itins.rr>,
+ (i32 FROUND_NO_EXC)))>,
EVEX_4V, VEX_LIG, EVEX_B, Sched<[itins.Sched]>;
}
@@ -6959,8 +6949,7 @@ multiclass avx512_cvt_fp_rc_scalar<bits<
(ins _.RC:$src1, _Src.RC:$src2, AVX512RC:$rc), OpcodeStr,
"$rc, $src2, $src1", "$src1, $src2, $rc",
(_.VT (OpNodeRnd (_.VT _.RC:$src1),
- (_Src.VT _Src.RC:$src2), (i32 imm:$rc))),
- itins.rr>,
+ (_Src.VT _Src.RC:$src2), (i32 imm:$rc)))>,
EVEX_4V, VEX_LIG, Sched<[itins.Sched]>,
EVEX_B, EVEX_RC;
}
@@ -7035,13 +7024,13 @@ multiclass avx512_vcvt_fp<bits<8> opc, s
defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _Src.RC:$src), OpcodeStr, "$src", "$src",
- (_.VT (OpNode (_Src.VT _Src.RC:$src))), itins.rr>,
+ (_.VT (OpNode (_Src.VT _Src.RC:$src)))>,
EVEX, Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins MemOp:$src), OpcodeStr#Alias, "$src", "$src",
(_.VT (OpNode (_Src.VT
- (bitconvert (_Src.LdFrag addr:$src))))), itins.rm>,
+ (bitconvert (_Src.LdFrag addr:$src)))))>,
EVEX, Sched<[itins.Sched.Folded]>;
defm rmb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
@@ -7049,7 +7038,7 @@ multiclass avx512_vcvt_fp<bits<8> opc, s
"${src}"##Broadcast, "${src}"##Broadcast,
(_.VT (OpNode (_Src.VT
(X86VBroadcast (_Src.ScalarLdFrag addr:$src)))
- )), itins.rm>, EVEX, EVEX_B,
+ ))>, EVEX, EVEX_B,
Sched<[itins.Sched.Folded]>;
}
// Coversion with SAE - suppress all exceptions
@@ -7060,7 +7049,7 @@ multiclass avx512_vcvt_fp_sae<bits<8> op
(ins _Src.RC:$src), OpcodeStr,
"{sae}, $src", "$src, {sae}",
(_.VT (OpNodeRnd (_Src.VT _Src.RC:$src),
- (i32 FROUND_NO_EXC))), itins.rr>,
+ (i32 FROUND_NO_EXC)))>,
EVEX, EVEX_B, Sched<[itins.Sched]>;
}
@@ -7071,8 +7060,8 @@ multiclass avx512_vcvt_fp_rc<bits<8> opc
defm rrb : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _Src.RC:$src, AVX512RC:$rc), OpcodeStr,
"$rc, $src", "$src, $rc",
- (_.VT (OpNodeRnd (_Src.VT _Src.RC:$src), (i32 imm:$rc))),
- itins.rr>, EVEX, EVEX_B, EVEX_RC, Sched<[itins.Sched]>;
+ (_.VT (OpNodeRnd (_Src.VT _Src.RC:$src), (i32 imm:$rc)))>,
+ EVEX, EVEX_B, EVEX_RC, Sched<[itins.Sched]>;
}
// Extend Float to Double
@@ -7640,13 +7629,13 @@ multiclass avx512_cvtph2ps<X86VectorVTIn
OpndItins itins> {
defm rr : AVX512_maskable<0x13, MRMSrcReg, _dest ,(outs _dest.RC:$dst),
(ins _src.RC:$src), "vcvtph2ps", "$src", "$src",
- (X86cvtph2ps (_src.VT _src.RC:$src)),itins.rr>,
+ (X86cvtph2ps (_src.VT _src.RC:$src))>,
T8PD, Sched<[itins.Sched]>;
defm rm : AVX512_maskable<0x13, MRMSrcMem, _dest, (outs _dest.RC:$dst),
(ins x86memop:$src), "vcvtph2ps", "$src", "$src",
(X86cvtph2ps (_src.VT
(bitconvert
- (ld_frag addr:$src)))), itins.rm>,
+ (ld_frag addr:$src))))>,
T8PD, Sched<[itins.Sched.Folded]>;
}
@@ -7656,7 +7645,7 @@ multiclass avx512_cvtph2ps_sae<X86Vector
(ins _src.RC:$src), "vcvtph2ps",
"{sae}, $src", "$src, {sae}",
(X86cvtph2psRnd (_src.VT _src.RC:$src),
- (i32 FROUND_NO_EXC)), itins.rr>,
+ (i32 FROUND_NO_EXC))>,
T8PD, EVEX_B, Sched<[itins.Sched]>;
}
@@ -7691,16 +7680,16 @@ multiclass avx512_cvtps2ph<X86VectorVTIn
"vcvtps2ph", "$src2, $src1", "$src1, $src2",
(X86cvtps2ph (_src.VT _src.RC:$src1),
(i32 imm:$src2)),
- itins.rr, 0, 0>, AVX512AIi8Base, Sched<[itins.Sched]>;
+ NoItinerary, 0, 0>, AVX512AIi8Base, Sched<[itins.Sched]>;
let hasSideEffects = 0, mayStore = 1 in {
def mr : AVX512AIi8<0x1D, MRMDestMem, (outs),
(ins x86memop:$dst, _src.RC:$src1, i32u8imm:$src2),
- "vcvtps2ph\t{$src2, $src1, $dst|$dst, $src1, $src2}",
- [], itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ "vcvtps2ph\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
def mrk : AVX512AIi8<0x1D, MRMDestMem, (outs),
(ins x86memop:$dst, _dest.KRCWM:$mask, _src.RC:$src1, i32u8imm:$src2),
- "vcvtps2ph\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
- [], itins.rm>, EVEX_K, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ "vcvtps2ph\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}", []>,
+ EVEX_K, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -7710,8 +7699,8 @@ multiclass avx512_cvtps2ph_sae<X86Vector
defm rrb : AVX512_maskable_in_asm<0x1D, MRMDestReg, _dest,
(outs _dest.RC:$dst),
(ins _src.RC:$src1, i32u8imm:$src2),
- "vcvtps2ph", "$src2, {sae}, $src1", "$src1, {sae}, $src2",
- [], itins.rr>, EVEX_B, AVX512AIi8Base, Sched<[itins.Sched]>;
+ "vcvtps2ph", "$src2, {sae}, $src1", "$src1, {sae}, $src2", []>,
+ EVEX_B, AVX512AIi8Base, Sched<[itins.Sched]>;
}
let Predicates = [HasAVX512] in {
@@ -7768,9 +7757,8 @@ multiclass avx512_ord_cmp_sae<bits<8> op
string OpcodeStr, OpndItins itins> {
let hasSideEffects = 0 in
def rrb: AVX512<opc, MRMSrcReg, (outs), (ins _.RC:$src1, _.RC:$src2),
- !strconcat(OpcodeStr, "\t{{sae}, $src2, $src1|$src1, $src2, {sae}}"),
- [], itins.rr>, EVEX, EVEX_B, VEX_LIG, EVEX_V128,
- Sched<[itins.Sched]>;
+ !strconcat(OpcodeStr, "\t{{sae}, $src2, $src1|$src1, $src2, {sae}}"), []>,
+ EVEX, EVEX_B, VEX_LIG, EVEX_V128, Sched<[itins.Sched]>;
}
let Defs = [EFLAGS], Predicates = [HasAVX512] in {
@@ -7823,13 +7811,13 @@ multiclass avx512_fp14_s<bits<8> opc, st
defm rr : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
- (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2)), itins.rr>,
+ (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))>,
EVEX_4V, Sched<[itins.Sched]>;
defm rm : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(OpNode (_.VT _.RC:$src1),
- _.ScalarIntMemCPat:$src2), itins.rm>, EVEX_4V,
+ _.ScalarIntMemCPat:$src2)>, EVEX_4V,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -7849,18 +7837,18 @@ multiclass avx512_fp14_p<bits<8> opc, st
let ExeDomain = _.ExeDomain in {
defm r: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src), OpcodeStr, "$src", "$src",
- (_.FloatVT (OpNode _.RC:$src)), itins.rr>, EVEX, T8PD,
+ (_.FloatVT (OpNode _.RC:$src))>, EVEX, T8PD,
Sched<[itins.Sched]>;
defm m: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.MemOp:$src), OpcodeStr, "$src", "$src",
(OpNode (_.FloatVT
- (bitconvert (_.LdFrag addr:$src)))), itins.rm>, EVEX, T8PD,
+ (bitconvert (_.LdFrag addr:$src))))>, EVEX, T8PD,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm mb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.ScalarMemOp:$src), OpcodeStr,
"${src}"##_.BroadcastStr, "${src}"##_.BroadcastStr,
(OpNode (_.FloatVT
- (X86VBroadcast (_.ScalarLdFrag addr:$src)))), itins.rm>,
+ (X86VBroadcast (_.ScalarLdFrag addr:$src))))>,
EVEX, T8PD, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -7900,21 +7888,21 @@ multiclass avx512_fp28_s<bits<8> opc, st
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
- (i32 FROUND_CURRENT)), itins.rr>,
+ (i32 FROUND_CURRENT))>,
Sched<[itins.Sched]>;
defm rb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr,
"{sae}, $src2, $src1", "$src1, $src2, {sae}",
(OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
- (i32 FROUND_NO_EXC)), itins.rm>, EVEX_B,
+ (i32 FROUND_NO_EXC))>, EVEX_B,
Sched<[itins.Sched]>;
defm m : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(OpNode (_.VT _.RC:$src1), _.ScalarIntMemCPat:$src2,
- (i32 FROUND_CURRENT)), itins.rm>,
+ (i32 FROUND_CURRENT))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -7943,14 +7931,14 @@ multiclass avx512_fp28_p<bits<8> opc, st
let ExeDomain = _.ExeDomain in {
defm r : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src), OpcodeStr, "$src", "$src",
- (OpNode (_.VT _.RC:$src), (i32 FROUND_CURRENT)),
- itins.rr>, Sched<[itins.Sched]>;
+ (OpNode (_.VT _.RC:$src), (i32 FROUND_CURRENT))>,
+ Sched<[itins.Sched]>;
defm m : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.MemOp:$src), OpcodeStr, "$src", "$src",
(OpNode (_.FloatVT
(bitconvert (_.LdFrag addr:$src))),
- (i32 FROUND_CURRENT)), itins.rm>,
+ (i32 FROUND_CURRENT))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm mb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
@@ -7958,7 +7946,7 @@ multiclass avx512_fp28_p<bits<8> opc, st
"${src}"##_.BroadcastStr, "${src}"##_.BroadcastStr,
(OpNode (_.FloatVT
(X86VBroadcast (_.ScalarLdFrag addr:$src))),
- (i32 FROUND_CURRENT)), itins.rm>, EVEX_B,
+ (i32 FROUND_CURRENT))>, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -7968,8 +7956,8 @@ multiclass avx512_fp28_p_round<bits<8> o
defm rb : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src), OpcodeStr,
"{sae}, $src", "$src, {sae}",
- (OpNode (_.VT _.RC:$src), (i32 FROUND_NO_EXC)),
- itins.rr>, EVEX_B, Sched<[itins.Sched]>;
+ (OpNode (_.VT _.RC:$src), (i32 FROUND_NO_EXC))>,
+ EVEX_B, Sched<[itins.Sched]>;
}
multiclass avx512_eri<bits<8> opc, string OpcodeStr, SDNode OpNode,
@@ -8011,7 +7999,7 @@ multiclass avx512_sqrt_packed_round<bits
let ExeDomain = _.ExeDomain in
defm rb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src, AVX512RC:$rc), OpcodeStr, "$rc, $src", "$src, $rc",
- (_.VT (X86fsqrtRnd _.RC:$src, (i32 imm:$rc))), itins.rr>,
+ (_.VT (X86fsqrtRnd _.RC:$src, (i32 imm:$rc)))>,
EVEX, EVEX_B, EVEX_RC, Sched<[itins.Sched]>;
}
@@ -8020,18 +8008,18 @@ multiclass avx512_sqrt_packed<bits<8> op
let ExeDomain = _.ExeDomain in {
defm r: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src), OpcodeStr, "$src", "$src",
- (_.FloatVT (fsqrt _.RC:$src)), itins.rr>, EVEX,
+ (_.FloatVT (fsqrt _.RC:$src))>, EVEX,
Sched<[itins.Sched]>;
defm m: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.MemOp:$src), OpcodeStr, "$src", "$src",
(fsqrt (_.FloatVT
- (bitconvert (_.LdFrag addr:$src)))), itins.rm>, EVEX,
+ (bitconvert (_.LdFrag addr:$src))))>, EVEX,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm mb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.ScalarMemOp:$src), OpcodeStr,
"${src}"##_.BroadcastStr, "${src}"##_.BroadcastStr,
(fsqrt (_.FloatVT
- (X86VBroadcast (_.ScalarLdFrag addr:$src)))), itins.rm>,
+ (X86VBroadcast (_.ScalarLdFrag addr:$src))))>,
EVEX, EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -8073,33 +8061,33 @@ multiclass avx512_sqrt_scalar<bits<8> op
"$src2, $src1", "$src1, $src2",
(X86fsqrtRnds (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
- (i32 FROUND_CURRENT)), itins.rr>,
+ (i32 FROUND_CURRENT))>,
Sched<[itins.Sched]>;
defm m_Int : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
"$src2, $src1", "$src1, $src2",
(X86fsqrtRnds (_.VT _.RC:$src1),
_.ScalarIntMemCPat:$src2,
- (i32 FROUND_CURRENT)), itins.rm>,
+ (i32 FROUND_CURRENT))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rb_Int : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr,
"$rc, $src2, $src1", "$src1, $src2, $rc",
(X86fsqrtRnds (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
- (i32 imm:$rc)), itins.rr>,
+ (i32 imm:$rc))>,
EVEX_B, EVEX_RC, Sched<[itins.Sched]>;
let isCodeGenOnly = 1, hasSideEffects = 0, Predicates=[HasAVX512] in {
def r : I<opc, MRMSrcReg, (outs _.FRC:$dst),
- (ins _.FRC:$src1, _.FRC:$src2),
- OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", [],
- itins.rr>, Sched<[itins.Sched]>;
+ (ins _.FRC:$src1, _.FRC:$src2),
+ OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
+ Sched<[itins.Sched]>;
let mayLoad = 1 in
def m : I<opc, MRMSrcMem, (outs _.FRC:$dst),
- (ins _.FRC:$src1, _.ScalarMemOp:$src2),
- OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", [],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (ins _.FRC:$src1, _.ScalarMemOp:$src2),
+ OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -8146,14 +8134,14 @@ multiclass avx512_rndscale_scalar<bits<8
(ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3), OpcodeStr,
"$src3, $src2, $src1", "$src1, $src2, $src3",
(_.VT (X86RndScales (_.VT _.RC:$src1), (_.VT _.RC:$src2),
- (i32 imm:$src3))), itins.rr>,
+ (i32 imm:$src3)))>,
Sched<[itins.Sched]>;
defm rb_Int : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3), OpcodeStr,
"$src3, {sae}, $src2, $src1", "$src1, $src2, {sae}, $src3",
(_.VT (X86RndScalesRnd (_.VT _.RC:$src1), (_.VT _.RC:$src2),
- (i32 imm:$src3), (i32 FROUND_NO_EXC))), itins.rr>, EVEX_B,
+ (i32 imm:$src3), (i32 FROUND_NO_EXC)))>, EVEX_B,
Sched<[itins.Sched]>;
defm m_Int : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
@@ -8161,20 +8149,20 @@ multiclass avx512_rndscale_scalar<bits<8
OpcodeStr,
"$src3, $src2, $src1", "$src1, $src2, $src3",
(_.VT (X86RndScales _.RC:$src1,
- _.ScalarIntMemCPat:$src2, (i32 imm:$src3))), itins.rm>,
+ _.ScalarIntMemCPat:$src2, (i32 imm:$src3)))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
let isCodeGenOnly = 1, hasSideEffects = 0, Predicates = [HasAVX512] in {
def r : I<opc, MRMSrcReg, (outs _.FRC:$dst),
(ins _.FRC:$src1, _.FRC:$src2, i32u8imm:$src3),
OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
- [], itins.rr>, Sched<[itins.Sched]>;
+ []>, Sched<[itins.Sched]>;
let mayLoad = 1 in
def m : I<opc, MRMSrcMem, (outs _.FRC:$dst),
(ins _.FRC:$src1, _.ScalarMemOp:$src2, i32u8imm:$src3),
OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
- [], itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ []>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -8242,20 +8230,20 @@ multiclass avx512_trunc_common<bits<8> o
let ExeDomain = DestInfo.ExeDomain in
defm rr : AVX512_maskable<opc, MRMDestReg, DestInfo, (outs DestInfo.RC:$dst),
(ins SrcInfo.RC:$src1), OpcodeStr ,"$src1", "$src1",
- (DestInfo.VT (OpNode (SrcInfo.VT SrcInfo.RC:$src1))),
- itins.rr>, EVEX, T8XS, Sched<[itins.Sched]>;
+ (DestInfo.VT (OpNode (SrcInfo.VT SrcInfo.RC:$src1)))>,
+ EVEX, T8XS, Sched<[itins.Sched]>;
let mayStore = 1, mayLoad = 1, hasSideEffects = 0,
ExeDomain = DestInfo.ExeDomain in {
def mr : AVX512XS8I<opc, MRMDestMem, (outs),
(ins x86memop:$dst, SrcInfo.RC:$src),
- OpcodeStr # "\t{$src, $dst|$dst, $src}",
- [], itins.rm>, EVEX, Sched<[itins.Sched.Folded]>;
+ OpcodeStr # "\t{$src, $dst|$dst, $src}", []>,
+ EVEX, Sched<[itins.Sched.Folded]>;
def mrk : AVX512XS8I<opc, MRMDestMem, (outs),
(ins x86memop:$dst, SrcInfo.KRCWM:$mask, SrcInfo.RC:$src),
- OpcodeStr # "\t{$src, $dst {${mask}}|$dst {${mask}}, $src}",
- [], itins.rm>, EVEX, EVEX_K, Sched<[itins.Sched.Folded]>;
+ OpcodeStr # "\t{$src, $dst {${mask}}|$dst {${mask}}, $src}", []>,
+ EVEX, EVEX_K, Sched<[itins.Sched.Folded]>;
}//mayStore = 1, mayLoad = 1, hasSideEffects = 0
}
@@ -8419,12 +8407,12 @@ multiclass avx512_extend_common<bits<8>
let ExeDomain = DestInfo.ExeDomain in {
defm rr : AVX512_maskable<opc, MRMSrcReg, DestInfo, (outs DestInfo.RC:$dst),
(ins SrcInfo.RC:$src), OpcodeStr ,"$src", "$src",
- (DestInfo.VT (OpNode (SrcInfo.VT SrcInfo.RC:$src))), itins.rr>,
+ (DestInfo.VT (OpNode (SrcInfo.VT SrcInfo.RC:$src)))>,
EVEX, Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, DestInfo, (outs DestInfo.RC:$dst),
(ins x86memop:$src), OpcodeStr ,"$src", "$src",
- (DestInfo.VT (LdFrag addr:$src)), itins.rm>,
+ (DestInfo.VT (LdFrag addr:$src))>,
EVEX, Sched<[itins.Sched.Folded]>;
}
}
@@ -8979,7 +8967,7 @@ multiclass compress_by_vec_width_common<
string OpcodeStr, OpndItins itins> {
defm rr : AVX512_maskable<opc, MRMDestReg, _, (outs _.RC:$dst),
(ins _.RC:$src1), OpcodeStr, "$src1", "$src1",
- (_.VT (X86compress _.RC:$src1)), itins.rr>, AVX5128IBase,
+ (_.VT (X86compress _.RC:$src1))>, AVX5128IBase,
Sched<[itins.Sched]>;
let mayStore = 1, hasSideEffects = 0 in
@@ -9034,13 +9022,13 @@ multiclass expand_by_vec_width<bits<8> o
string OpcodeStr, OpndItins itins> {
defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1), OpcodeStr, "$src1", "$src1",
- (_.VT (X86expand _.RC:$src1)), itins.rr>, AVX5128IBase,
+ (_.VT (X86expand _.RC:$src1))>, AVX5128IBase,
Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.MemOp:$src1), OpcodeStr, "$src1", "$src1",
(_.VT (X86expand (_.VT (bitconvert
- (_.LdFrag addr:$src1))))), itins.rm>,
+ (_.LdFrag addr:$src1)))))>,
AVX5128IBase, EVEX_CD8<_.EltSize, CD8VT1>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -9093,19 +9081,19 @@ multiclass avx512_unary_fp_packed_imm<bi
(ins _.RC:$src1, i32u8imm:$src2),
OpcodeStr##_.Suffix, "$src2, $src1", "$src1, $src2",
(OpNode (_.VT _.RC:$src1),
- (i32 imm:$src2)), itins.rr>, Sched<[itins.Sched]>;
+ (i32 imm:$src2))>, Sched<[itins.Sched]>;
defm rmi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.MemOp:$src1, i32u8imm:$src2),
OpcodeStr##_.Suffix, "$src2, $src1", "$src1, $src2",
(OpNode (_.VT (bitconvert (_.LdFrag addr:$src1))),
- (i32 imm:$src2)), itins.rm>,
+ (i32 imm:$src2))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmbi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.ScalarMemOp:$src1, i32u8imm:$src2),
OpcodeStr##_.Suffix, "$src2, ${src1}"##_.BroadcastStr,
"${src1}"##_.BroadcastStr##", $src2",
(OpNode (_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src1))),
- (i32 imm:$src2)), itins.rm>, EVEX_B,
+ (i32 imm:$src2))>, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -9121,7 +9109,7 @@ multiclass avx512_unary_fp_sae_packed_im
"$src1, {sae}, $src2",
(OpNode (_.VT _.RC:$src1),
(i32 imm:$src2),
- (i32 FROUND_NO_EXC)), itins.rr>,
+ (i32 FROUND_NO_EXC))>,
EVEX_B, Sched<[itins.Sched]>;
}
@@ -9154,14 +9142,14 @@ multiclass avx512_fp_packed_imm<bits<8>
OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
(OpNode (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
- (i32 imm:$src3)), itins.rr>,
+ (i32 imm:$src3))>,
Sched<[itins.Sched]>;
defm rmi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.MemOp:$src2, i32u8imm:$src3),
OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
(OpNode (_.VT _.RC:$src1),
(_.VT (bitconvert (_.LdFrag addr:$src2))),
- (i32 imm:$src3)), itins.rm>,
+ (i32 imm:$src3))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmbi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2, i32u8imm:$src3),
@@ -9169,7 +9157,7 @@ multiclass avx512_fp_packed_imm<bits<8>
"$src1, ${src2}"##_.BroadcastStr##", $src3",
(OpNode (_.VT _.RC:$src1),
(_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src2))),
- (i32 imm:$src3)), itins.rm>, EVEX_B,
+ (i32 imm:$src3))>, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -9185,7 +9173,7 @@ multiclass avx512_3Op_rm_imm8<bits<8> op
OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
(DestInfo.VT (OpNode (SrcInfo.VT SrcInfo.RC:$src1),
(SrcInfo.VT SrcInfo.RC:$src2),
- (i8 imm:$src3))), itins.rr>,
+ (i8 imm:$src3)))>,
Sched<[itins.Sched]>;
defm rmi : AVX512_maskable<opc, MRMSrcMem, DestInfo, (outs DestInfo.RC:$dst),
(ins SrcInfo.RC:$src1, SrcInfo.MemOp:$src2, u8imm:$src3),
@@ -9193,7 +9181,7 @@ multiclass avx512_3Op_rm_imm8<bits<8> op
(DestInfo.VT (OpNode (SrcInfo.VT SrcInfo.RC:$src1),
(SrcInfo.VT (bitconvert
(SrcInfo.LdFrag addr:$src2))),
- (i8 imm:$src3))), itins.rm>,
+ (i8 imm:$src3)))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -9212,7 +9200,7 @@ multiclass avx512_3Op_imm8<bits<8> opc,
"$src1, ${src2}"##_.BroadcastStr##", $src3",
(OpNode (_.VT _.RC:$src1),
(_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src2))),
- (i8 imm:$src3)), itins.rm>, EVEX_B,
+ (i8 imm:$src3))>, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -9226,7 +9214,7 @@ multiclass avx512_fp_scalar_imm<bits<8>
OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
(OpNode (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
- (i32 imm:$src3)), itins.rr>,
+ (i32 imm:$src3))>,
Sched<[itins.Sched]>;
defm rmi : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2, i32u8imm:$src3),
@@ -9234,7 +9222,7 @@ multiclass avx512_fp_scalar_imm<bits<8>
(OpNode (_.VT _.RC:$src1),
(_.VT (scalar_to_vector
(_.ScalarLdFrag addr:$src2))),
- (i32 imm:$src3)), itins.rm>,
+ (i32 imm:$src3))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -9251,7 +9239,7 @@ multiclass avx512_fp_sae_packed_imm<bits
(OpNode (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
(i32 imm:$src3),
- (i32 FROUND_NO_EXC)), itins.rr>,
+ (i32 FROUND_NO_EXC))>,
EVEX_B, Sched<[itins.Sched]>;
}
@@ -9266,7 +9254,7 @@ multiclass avx512_fp_sae_scalar_imm<bits
(OpNode (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
(i32 imm:$src3),
- (i32 FROUND_NO_EXC)), itins.rr>,
+ (i32 FROUND_NO_EXC))>,
EVEX_B, Sched<[itins.Sched]>;
}
@@ -9453,8 +9441,8 @@ multiclass avx512_shuff_packed_128_commo
OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
(_.VT (bitconvert
(CastInfo.VT (X86Shuf128 _.RC:$src1, _.RC:$src2,
- (i8 imm:$src3))))),
- itins.rr>, Sched<[itins.Sched]>;
+ (i8 imm:$src3)))))>,
+ Sched<[itins.Sched]>;
defm rmi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.MemOp:$src2, u8imm:$src3),
OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
@@ -9462,7 +9450,7 @@ multiclass avx512_shuff_packed_128_commo
(bitconvert
(CastInfo.VT (X86Shuf128 _.RC:$src1,
(bitconvert (_.LdFrag addr:$src2)),
- (i8 imm:$src3))))), itins.rm>,
+ (i8 imm:$src3)))))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmbi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$src3),
@@ -9473,7 +9461,7 @@ multiclass avx512_shuff_packed_128_commo
(CastInfo.VT
(X86Shuf128 _.RC:$src1,
(X86VBroadcast (_.ScalarLdFrag addr:$src2)),
- (i8 imm:$src3))))), itins.rm>, EVEX_B,
+ (i8 imm:$src3)))))>, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -9674,13 +9662,13 @@ multiclass avx512_unary_rm<bits<8> opc,
defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1), OpcodeStr,
"$src1", "$src1",
- (_.VT (OpNode _.RC:$src1)), itins.rr>, EVEX, AVX5128IBase,
+ (_.VT (OpNode _.RC:$src1))>, EVEX, AVX5128IBase,
Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.MemOp:$src1), OpcodeStr,
"$src1", "$src1",
- (_.VT (OpNode (bitconvert (_.LdFrag addr:$src1)))), itins.rm>,
+ (_.VT (OpNode (bitconvert (_.LdFrag addr:$src1))))>,
EVEX, AVX5128IBase, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded]>;
}
@@ -9694,7 +9682,7 @@ multiclass avx512_unary_rmb<bits<8> opc,
"${src1}"##_.BroadcastStr,
"${src1}"##_.BroadcastStr,
(_.VT (OpNode (X86VBroadcast
- (_.ScalarLdFrag addr:$src1)))), itins.rm>,
+ (_.ScalarLdFrag addr:$src1))))>,
EVEX, AVX5128IBase, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded]>;
}
@@ -9837,13 +9825,13 @@ multiclass avx512_movddup_128<bits<8> op
let ExeDomain = _.ExeDomain in {
defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src), OpcodeStr, "$src", "$src",
- (_.VT (OpNode (_.VT _.RC:$src))), itins.rr>, EVEX,
+ (_.VT (OpNode (_.VT _.RC:$src)))>, EVEX,
Sched<[itins.Sched]>;
defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.ScalarMemOp:$src), OpcodeStr, "$src", "$src",
(_.VT (OpNode (_.VT (scalar_to_vector
- (_.ScalarLdFrag addr:$src))))),
- itins.rm>, EVEX, EVEX_CD8<_.EltSize, CD8VH>,
+ (_.ScalarLdFrag addr:$src)))))>,
+ EVEX, EVEX_CD8<_.EltSize, CD8VH>,
Sched<[itins.Sched.Folded]>;
}
}
@@ -10073,14 +10061,14 @@ multiclass avx512_shift_packed<bits<8> o
def rr : AVX512<opc, MRMr,
(outs _.RC:$dst), (ins _.RC:$src1, u8imm:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [(set _.RC:$dst,(_.VT (OpNode _.RC:$src1, (i8 imm:$src2))))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set _.RC:$dst,(_.VT (OpNode _.RC:$src1, (i8 imm:$src2))))]>,
+ Sched<[itins.Sched]>;
def rm : AVX512<opc, MRMm,
(outs _.RC:$dst), (ins _.MemOp:$src1, u8imm:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set _.RC:$dst,(_.VT (OpNode
(_.VT (bitconvert (_.LdFrag addr:$src1))),
- (i8 imm:$src2))))], itins.rm>,
+ (i8 imm:$src2))))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -10113,7 +10101,7 @@ multiclass avx512_psadbw_packed<bits<8>
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set _dst.RC:$dst,(_dst.VT
(OpNode (_src.VT _src.RC:$src1),
- (_src.VT _src.RC:$src2))))], itins.rr>,
+ (_src.VT _src.RC:$src2))))]>,
Sched<[itins.Sched]>;
def rm : AVX512BI<opc, MRMSrcMem,
(outs _dst.RC:$dst), (ins _src.RC:$src1, _src.MemOp:$src2),
@@ -10121,7 +10109,7 @@ multiclass avx512_psadbw_packed<bits<8>
[(set _dst.RC:$dst,(_dst.VT
(OpNode (_src.VT _src.RC:$src1),
(_src.VT (bitconvert
- (_src.LdFrag addr:$src2))))))], itins.rm>,
+ (_src.LdFrag addr:$src2))))))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -10213,7 +10201,7 @@ multiclass avx512_ternlog<bits<8> opc, s
(OpNode (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
(_.VT _.RC:$src3),
- (i8 imm:$src4)), itins.rr, 1, 1>,
+ (i8 imm:$src4)), NoItinerary, 1, 1>,
AVX512AIi8Base, EVEX_4V, Sched<[itins.Sched]>;
defm rmi : AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.MemOp:$src3, u8imm:$src4),
@@ -10221,7 +10209,7 @@ multiclass avx512_ternlog<bits<8> opc, s
(OpNode (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
(_.VT (bitconvert (_.LdFrag addr:$src3))),
- (i8 imm:$src4)), itins.rm, 1, 0>,
+ (i8 imm:$src4)), NoItinerary, 1, 0>,
AVX512AIi8Base, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmbi : AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
@@ -10231,7 +10219,7 @@ multiclass avx512_ternlog<bits<8> opc, s
(OpNode (_.VT _.RC:$src1),
(_.VT _.RC:$src2),
(_.VT (X86VBroadcast(_.ScalarLdFrag addr:$src3))),
- (i8 imm:$src4)), itins.rm, 1, 0>, EVEX_B,
+ (i8 imm:$src4)), NoItinerary, 1, 0>, EVEX_B,
AVX512AIi8Base, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}// Constraints = "$src1 = $dst"
@@ -10437,7 +10425,7 @@ multiclass avx512_fixupimm_packed<bits<8
(_.VT _.RC:$src2),
(_.IntVT _.RC:$src3),
(i32 imm:$src4),
- (i32 FROUND_CURRENT)), itins.rr>, Sched<[itins.Sched]>;
+ (i32 FROUND_CURRENT))>, Sched<[itins.Sched]>;
defm rmi : AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.MemOp:$src3, i32u8imm:$src4),
OpcodeStr##_.Suffix, "$src4, $src3, $src2", "$src2, $src3, $src4",
@@ -10445,7 +10433,7 @@ multiclass avx512_fixupimm_packed<bits<8
(_.VT _.RC:$src2),
(_.IntVT (bitconvert (_.LdFrag addr:$src3))),
(i32 imm:$src4),
- (i32 FROUND_CURRENT)), itins.rm>,
+ (i32 FROUND_CURRENT))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmbi : AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.ScalarMemOp:$src3, i32u8imm:$src4),
@@ -10455,7 +10443,7 @@ multiclass avx512_fixupimm_packed<bits<8
(_.VT _.RC:$src2),
(_.IntVT (X86VBroadcast(_.ScalarLdFrag addr:$src3))),
(i32 imm:$src4),
- (i32 FROUND_CURRENT)), itins.rm>,
+ (i32 FROUND_CURRENT))>,
EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
} // Constraints = "$src1 = $dst"
}
@@ -10472,7 +10460,7 @@ let Constraints = "$src1 = $dst", ExeDom
(_.VT _.RC:$src2),
(_.IntVT _.RC:$src3),
(i32 imm:$src4),
- (i32 FROUND_NO_EXC)), itins.rr>,
+ (i32 FROUND_NO_EXC))>,
EVEX_B, Sched<[itins.Sched]>;
}
}
@@ -10489,7 +10477,7 @@ multiclass avx512_fixupimm_scalar<bits<8
(_.VT _.RC:$src2),
(_src3VT.VT _src3VT.RC:$src3),
(i32 imm:$src4),
- (i32 FROUND_CURRENT)), itins.rr>, Sched<[itins.Sched]>;
+ (i32 FROUND_CURRENT))>, Sched<[itins.Sched]>;
defm rrib : AVX512_maskable_3src_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.RC:$src3, i32u8imm:$src4),
OpcodeStr##_.Suffix, "$src4, {sae}, $src3, $src2",
@@ -10498,7 +10486,7 @@ multiclass avx512_fixupimm_scalar<bits<8
(_.VT _.RC:$src2),
(_src3VT.VT _src3VT.RC:$src3),
(i32 imm:$src4),
- (i32 FROUND_NO_EXC)), itins.rm>,
+ (i32 FROUND_NO_EXC))>,
EVEX_B, Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm rmi : AVX512_maskable_3src_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
(ins _.RC:$src2, _.ScalarMemOp:$src3, i32u8imm:$src4),
@@ -10508,7 +10496,7 @@ multiclass avx512_fixupimm_scalar<bits<8
(_src3VT.VT (scalar_to_vector
(_src3VT.ScalarLdFrag addr:$src3))),
(i32 imm:$src4),
- (i32 FROUND_CURRENT)), itins.rm>,
+ (i32 FROUND_CURRENT))>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -10706,14 +10694,14 @@ multiclass VBMI2_shift_var_rm<bits<8> Op
defm r: AVX512_maskable_3src<Op, MRMSrcReg, VTI, (outs VTI.RC:$dst),
(ins VTI.RC:$src2, VTI.RC:$src3), OpStr,
"$src3, $src2", "$src2, $src3",
- (VTI.VT (OpNode VTI.RC:$src1, VTI.RC:$src2, VTI.RC:$src3)),
- itins.rr>, AVX512FMA3Base, Sched<[itins.Sched]>;
+ (VTI.VT (OpNode VTI.RC:$src1, VTI.RC:$src2, VTI.RC:$src3))>,
+ AVX512FMA3Base, Sched<[itins.Sched]>;
defm m: AVX512_maskable_3src<Op, MRMSrcMem, VTI, (outs VTI.RC:$dst),
(ins VTI.RC:$src2, VTI.MemOp:$src3), OpStr,
"$src3, $src2", "$src2, $src3",
(VTI.VT (OpNode VTI.RC:$src1, VTI.RC:$src2,
- (VTI.VT (bitconvert (VTI.LdFrag addr:$src3))))),
- itins.rm>, AVX512FMA3Base,
+ (VTI.VT (bitconvert (VTI.LdFrag addr:$src3)))))>,
+ AVX512FMA3Base,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -10728,8 +10716,8 @@ multiclass VBMI2_shift_var_rmb<bits<8> O
"${src3}"##VTI.BroadcastStr##", $src2",
"$src2, ${src3}"##VTI.BroadcastStr,
(OpNode VTI.RC:$src1, VTI.RC:$src2,
- (VTI.VT (X86VBroadcast (VTI.ScalarLdFrag addr:$src3)))),
- itins.rm>, AVX512FMA3Base, EVEX_B,
+ (VTI.VT (X86VBroadcast (VTI.ScalarLdFrag addr:$src3))))>,
+ AVX512FMA3Base, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -10801,15 +10789,15 @@ multiclass VNNI_rmb<bits<8> Op, string O
(ins VTI.RC:$src2, VTI.RC:$src3), OpStr,
"$src3, $src2", "$src2, $src3",
(VTI.VT (OpNode VTI.RC:$src1,
- VTI.RC:$src2, VTI.RC:$src3)),
- itins.rr>, EVEX_4V, T8PD, Sched<[itins.Sched]>;
+ VTI.RC:$src2, VTI.RC:$src3))>,
+ EVEX_4V, T8PD, Sched<[itins.Sched]>;
defm m : AVX512_maskable_3src<Op, MRMSrcMem, VTI, (outs VTI.RC:$dst),
(ins VTI.RC:$src2, VTI.MemOp:$src3), OpStr,
"$src3, $src2", "$src2, $src3",
(VTI.VT (OpNode VTI.RC:$src1, VTI.RC:$src2,
(VTI.VT (bitconvert
- (VTI.LdFrag addr:$src3))))),
- itins.rm>, EVEX_4V, EVEX_CD8<32, CD8VF>, T8PD,
+ (VTI.LdFrag addr:$src3)))))>,
+ EVEX_4V, EVEX_CD8<32, CD8VF>, T8PD,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
defm mb : AVX512_maskable_3src<Op, MRMSrcMem, VTI, (outs VTI.RC:$dst),
(ins VTI.RC:$src2, VTI.ScalarMemOp:$src3),
@@ -10817,8 +10805,8 @@ multiclass VNNI_rmb<bits<8> Op, string O
"$src2, ${src3}"##VTI.BroadcastStr,
(OpNode VTI.RC:$src1, VTI.RC:$src2,
(VTI.VT (X86VBroadcast
- (VTI.ScalarLdFrag addr:$src3)))),
- itins.rm>, EVEX_4V, EVEX_CD8<32, CD8VF>, EVEX_B,
+ (VTI.ScalarLdFrag addr:$src3))))>,
+ EVEX_4V, EVEX_CD8<32, CD8VF>, EVEX_B,
T8PD, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -10856,15 +10844,15 @@ multiclass VPSHUFBITQMB_rm<OpndItins iti
"vpshufbitqmb",
"$src2, $src1", "$src1, $src2",
(X86Vpshufbitqmb (VTI.VT VTI.RC:$src1),
- (VTI.VT VTI.RC:$src2)), itins.rr>, EVEX_4V, T8PD,
+ (VTI.VT VTI.RC:$src2))>, EVEX_4V, T8PD,
Sched<[itins.Sched]>;
defm rm : AVX512_maskable_cmp<0x8F, MRMSrcMem, VTI, (outs VTI.KRC:$dst),
(ins VTI.RC:$src1, VTI.MemOp:$src2),
"vpshufbitqmb",
"$src2, $src1", "$src1, $src2",
(X86Vpshufbitqmb (VTI.VT VTI.RC:$src1),
- (VTI.VT (bitconvert (VTI.LdFrag addr:$src2)))),
- itins.rm>, EVEX_4V, EVEX_CD8<8, CD8VF>, T8PD,
+ (VTI.VT (bitconvert (VTI.LdFrag addr:$src2))))>,
+ EVEX_4V, EVEX_CD8<8, CD8VF>, T8PD,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -10910,7 +10898,7 @@ multiclass GF2P8AFFINE_avx512_rmb_imm<bi
"$src1, ${src2}"##BcstVTI.BroadcastStr##", $src3",
(OpNode (VTI.VT VTI.RC:$src1),
(bitconvert (BcstVTI.VT (X86VBroadcast (loadi64 addr:$src2)))),
- (i8 imm:$src3)), itins.rm>, EVEX_B,
+ (i8 imm:$src3))>, EVEX_B,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
Modified: llvm/trunk/lib/Target/X86/X86InstrSSE.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSSE.td?rev=329945&r1=329944&r2=329945&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrSSE.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrSSE.td Thu Apr 12 12:59:35 2018
@@ -257,14 +257,14 @@ multiclass sse12_fp_scalar<bits<8> opc,
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (OpNode RC:$src1, RC:$src2))], itins.rr, d>,
+ [(set RC:$dst, (OpNode RC:$src1, RC:$src2))], NoItinerary, d>,
Sched<[itins.Sched]>;
}
def rm : SI<opc, MRMSrcMem, (outs RC:$dst), (ins RC:$src1, x86memop:$src2),
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (OpNode RC:$src1, (load addr:$src2)))], itins.rm, d>,
+ [(set RC:$dst, (OpNode RC:$src1, (load addr:$src2)))], NoItinerary, d>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -279,14 +279,14 @@ let isCodeGenOnly = 1, hasSideEffects =
!if(Is2Addr,
!strconcat(asm, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(asm, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (VT (OpNode RC:$src1, RC:$src2)))], itins.rr, d>,
+ [(set RC:$dst, (VT (OpNode RC:$src1, RC:$src2)))], NoItinerary, d>,
Sched<[itins.Sched]>;
let mayLoad = 1 in
def rm_Int : SI_Int<opc, MRMSrcMem, (outs RC:$dst), (ins RC:$src1, memopr:$src2),
!if(Is2Addr,
!strconcat(asm, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(asm, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (VT (OpNode RC:$src1, mem_cpat:$src2)))], itins.rm, d>,
+ [(set RC:$dst, (VT (OpNode RC:$src1, mem_cpat:$src2)))], NoItinerary, d>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -301,7 +301,7 @@ multiclass sse12_fp_packed<bits<8> opc,
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (vt (OpNode RC:$src1, RC:$src2)))], itins.rr, d>,
+ [(set RC:$dst, (vt (OpNode RC:$src1, RC:$src2)))], NoItinerary, d>,
Sched<[itins.Sched]>;
let mayLoad = 1 in
def rm : PI<opc, MRMSrcMem, (outs RC:$dst), (ins RC:$src1, x86memop:$src2),
@@ -309,7 +309,7 @@ multiclass sse12_fp_packed<bits<8> opc,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst, (OpNode RC:$src1, (mem_frag addr:$src2)))],
- itins.rm, d>,
+ NoItinerary, d>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -638,12 +638,12 @@ multiclass sse12_mov_packed<bits<8> opc,
OpndItins itins> {
let hasSideEffects = 0 in
def rr : PI<opc, MRMSrcReg, (outs RC:$dst), (ins RC:$src),
- !strconcat(asm, "\t{$src, $dst|$dst, $src}"), [], itins.rr, d>,
+ !strconcat(asm, "\t{$src, $dst|$dst, $src}"), [], NoItinerary, d>,
Sched<[WriteFMove]>;
let canFoldAsLoad = 1, isReMaterializable = 1 in
def rm : PI<opc, MRMSrcMem, (outs RC:$dst), (ins x86memop:$src),
!strconcat(asm, "\t{$src, $dst|$dst, $src}"),
- [(set RC:$dst, (ld_frag addr:$src))], itins.rm, d>,
+ [(set RC:$dst, (ld_frag addr:$src))], NoItinerary, d>,
Sched<[WriteFLoad]>;
}
@@ -1190,11 +1190,11 @@ multiclass sse12_cvt_s<bits<8> opc, Regi
SDNode OpNode, X86MemOperand x86memop, PatFrag ld_frag,
string asm, OpndItins itins> {
def rr : SI<opc, MRMSrcReg, (outs DstRC:$dst), (ins SrcRC:$src), asm,
- [(set DstRC:$dst, (OpNode SrcRC:$src))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set DstRC:$dst, (OpNode SrcRC:$src))]>,
+ Sched<[itins.Sched]>;
def rm : SI<opc, MRMSrcMem, (outs DstRC:$dst), (ins x86memop:$src), asm,
- [(set DstRC:$dst, (OpNode (ld_frag addr:$src)))],
- itins.rm>, Sched<[itins.Sched.Folded]>;
+ [(set DstRC:$dst, (OpNode (ld_frag addr:$src)))]>,
+ Sched<[itins.Sched.Folded]>;
}
multiclass sse12_cvt_p<bits<8> opc, RegisterClass RC, X86MemOperand x86memop,
@@ -1203,12 +1203,12 @@ multiclass sse12_cvt_p<bits<8> opc, Regi
let hasSideEffects = 0 in {
def rr : I<opc, MRMSrcReg, (outs RC:$dst), (ins RC:$src), asm,
[(set RC:$dst, (DstTy (sint_to_fp (SrcTy RC:$src))))],
- itins.rr, d>, Sched<[itins.Sched]>;
+ NoItinerary, d>, Sched<[itins.Sched]>;
let mayLoad = 1 in
def rm : I<opc, MRMSrcMem, (outs RC:$dst), (ins x86memop:$src), asm,
[(set RC:$dst, (DstTy (sint_to_fp
(SrcTy (bitconvert (ld_frag addr:$src))))))],
- itins.rm, d>, Sched<[itins.Sched.Folded]>;
+ NoItinerary, d>, Sched<[itins.Sched.Folded]>;
}
}
@@ -1218,8 +1218,8 @@ multiclass sse12_vcvt_avx<bits<8> opc, R
X86MemOperand x86memop, string asm, OpndItins itins> {
let hasSideEffects = 0, Predicates = [UseAVX] in {
def rr : SI<opc, MRMSrcReg, (outs DstRC:$dst), (ins DstRC:$src1, SrcRC:$src),
- !strconcat(asm,"\t{$src, $src1, $dst|$dst, $src1, $src}"), [],
- itins.rr>, Sched<[itins.Sched]>;
+ !strconcat(asm,"\t{$src, $src1, $dst|$dst, $src1, $src}"), []>,
+ Sched<[itins.Sched]>;
let mayLoad = 1 in
def rm : SI<opc, MRMSrcMem, (outs DstRC:$dst),
(ins DstRC:$src1, x86memop:$src),
@@ -1358,11 +1358,11 @@ multiclass sse12_cvt_sint<bits<8> opc, R
string asm, OpndItins itins> {
def rr_Int : SI<opc, MRMSrcReg, (outs DstRC:$dst), (ins SrcRC:$src),
!strconcat(asm, "\t{$src, $dst|$dst, $src}"),
- [(set DstRC:$dst, (Int SrcRC:$src))], itins.rr>,
+ [(set DstRC:$dst, (Int SrcRC:$src))]>,
Sched<[itins.Sched]>;
def rm_Int : SI<opc, MRMSrcMem, (outs DstRC:$dst), (ins memop:$src),
!strconcat(asm, "\t{$src, $dst|$dst, $src}"),
- [(set DstRC:$dst, (Int mem_cpat:$src))], itins.rm>,
+ [(set DstRC:$dst, (Int mem_cpat:$src))]>,
Sched<[itins.Sched.Folded]>;
}
@@ -1374,15 +1374,15 @@ multiclass sse12_cvt_sint_3addr<bits<8>
!if(Is2Addr,
!strconcat(asm, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(asm, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set DstRC:$dst, (Int DstRC:$src1, SrcRC:$src2))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set DstRC:$dst, (Int DstRC:$src1, SrcRC:$src2))]>,
+ Sched<[itins.Sched]>;
def rm_Int : SI<opc, MRMSrcMem, (outs DstRC:$dst),
(ins DstRC:$src1, x86memop:$src2),
!if(Is2Addr,
!strconcat(asm, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(asm, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set DstRC:$dst, (Int DstRC:$src1, (ld_frag addr:$src2)))],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ [(set DstRC:$dst, (Int DstRC:$src1, (ld_frag addr:$src2)))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
let Predicates = [UseAVX] in {
@@ -2131,14 +2131,13 @@ multiclass sse12_cmp_scalar<RegisterClas
let isCommutable = 1 in
def rr : SIi8<0xC2, MRMSrcReg,
(outs RC:$dst), (ins RC:$src1, RC:$src2, CC:$cc), asm,
- [(set RC:$dst, (OpNode (VT RC:$src1), RC:$src2, imm:$cc))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set RC:$dst, (OpNode (VT RC:$src1), RC:$src2, imm:$cc))]>,
+ Sched<[itins.Sched]>;
def rm : SIi8<0xC2, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, CC:$cc), asm,
[(set RC:$dst, (OpNode (VT RC:$src1),
- (ld_frag addr:$src2), imm:$cc))],
- itins.rm>,
- Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (ld_frag addr:$src2), imm:$cc))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0 in {
@@ -2183,15 +2182,13 @@ multiclass sse12_cmp_scalar_int<Operand
def rr_Int : SIi8<0xC2, MRMSrcReg, (outs VR128:$dst),
(ins VR128:$src1, VR128:$src, CC:$cc), asm,
[(set VR128:$dst, (Int VR128:$src1,
- VR128:$src, imm:$cc))],
- itins.rr>,
+ VR128:$src, imm:$cc))]>,
Sched<[itins.Sched]>;
let mayLoad = 1 in
def rm_Int : SIi8<0xC2, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, memop:$src, CC:$cc), asm,
[(set VR128:$dst, (Int VR128:$src1,
- mem_cpat:$src, imm:$cc))],
- itins.rm>,
+ mem_cpat:$src, imm:$cc))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -2227,15 +2224,13 @@ multiclass sse12_ord_cmp<bits<8> opc, Re
let hasSideEffects = 0 in {
def rr: SI<opc, MRMSrcReg, (outs), (ins RC:$src1, RC:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
- [(set EFLAGS, (OpNode (vt RC:$src1), RC:$src2))],
- itins.rr>,
+ [(set EFLAGS, (OpNode (vt RC:$src1), RC:$src2))]>,
Sched<[itins.Sched]>;
let mayLoad = 1 in
def rm: SI<opc, MRMSrcMem, (outs), (ins RC:$src1, x86memop:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
[(set EFLAGS, (OpNode (vt RC:$src1),
- (ld_frag addr:$src2)))],
- itins.rm>,
+ (ld_frag addr:$src2)))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -2247,15 +2242,13 @@ multiclass sse12_ord_cmp_int<bits<8> opc
OpndItins itins> {
def rr_Int: SI<opc, MRMSrcReg, (outs), (ins RC:$src1, RC:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
- [(set EFLAGS, (OpNode (vt RC:$src1), RC:$src2))],
- itins.rr>,
+ [(set EFLAGS, (OpNode (vt RC:$src1), RC:$src2))]>,
Sched<[itins.Sched]>;
let mayLoad = 1 in
def rm_Int: SI<opc, MRMSrcMem, (outs), (ins RC:$src1, memop:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
[(set EFLAGS, (OpNode (vt RC:$src1),
- mem_cpat:$src2))],
- itins.rm>,
+ mem_cpat:$src2))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -2316,24 +2309,24 @@ multiclass sse12_cmp_packed<RegisterClas
def rri : PIi8<0xC2, MRMSrcReg,
(outs RC:$dst), (ins RC:$src1, RC:$src2, CC:$cc), asm,
[(set RC:$dst, (VT (X86cmpp RC:$src1, RC:$src2, imm:$cc)))],
- itins.rr, d>,
+ NoItinerary, d>,
Sched<[WriteFAdd]>;
def rmi : PIi8<0xC2, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, CC:$cc), asm,
[(set RC:$dst,
(VT (X86cmpp RC:$src1, (ld_frag addr:$src2), imm:$cc)))],
- itins.rm, d>,
+ NoItinerary, d>,
Sched<[WriteFAddLd, ReadAfterLd]>;
// Accept explicit immediate argument form instead of comparison code.
let isAsmParserOnly = 1, hasSideEffects = 0 in {
def rri_alt : PIi8<0xC2, MRMSrcReg,
(outs RC:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc),
- asm_alt, [], itins.rr, d>, Sched<[WriteFAdd]>;
+ asm_alt, [], NoItinerary, d>, Sched<[WriteFAdd]>;
let mayLoad = 1 in
def rmi_alt : PIi8<0xC2, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc),
- asm_alt, [], itins.rm, d>,
+ asm_alt, [], NoItinerary, d>,
Sched<[WriteFAddLd, ReadAfterLd]>;
}
}
@@ -2433,12 +2426,12 @@ multiclass sse12_shuffle<RegisterClass R
def rmi : PIi8<0xC6, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2, u8imm:$src3), asm,
[(set RC:$dst, (vt (X86Shufp RC:$src1, (mem_frag addr:$src2),
- (i8 imm:$src3))))], itins.rm, d>,
+ (i8 imm:$src3))))], NoItinerary, d>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
def rri : PIi8<0xC6, MRMSrcReg, (outs RC:$dst),
(ins RC:$src1, RC:$src2, u8imm:$src3), asm,
[(set RC:$dst, (vt (X86Shufp RC:$src1, RC:$src2,
- (i8 imm:$src3))))], itins.rr, d>,
+ (i8 imm:$src3))))], NoItinerary, d>,
Sched<[itins.Sched]>;
}
@@ -2484,13 +2477,13 @@ multiclass sse12_unpack_interleave<bits<
(outs RC:$dst), (ins RC:$src1, RC:$src2),
asm, [(set RC:$dst,
(vt (OpNode RC:$src1, RC:$src2)))],
- itins.rr, d>, Sched<[itins.Sched]>;
+ NoItinerary, d>, Sched<[itins.Sched]>;
def rm : PI<opc, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2),
asm, [(set RC:$dst,
(vt (OpNode RC:$src1,
(mem_frag addr:$src2))))],
- itins.rm, d>,
+ NoItinerary, d>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -2603,7 +2596,7 @@ multiclass PDI_binop_rm<bits<8> opc, str
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2)))], itins.rr>,
+ [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2)))]>,
Sched<[itins.Sched]>;
def rm : PDI<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2),
@@ -2611,8 +2604,7 @@ multiclass PDI_binop_rm<bits<8> opc, str
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst, (OpVT (OpNode RC:$src1,
- (bitconvert (memop_frag addr:$src2)))))],
- itins.rm>,
+ (bitconvert (memop_frag addr:$src2)))))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
} // ExeDomain = SSEPackedInt
@@ -3111,23 +3103,23 @@ multiclass sse_fp_unop_s<bits<8> opc, st
let hasSideEffects = 0 in {
def r : I<opc, MRMSrcReg, (outs RC:$dst), (ins RC:$src1),
!strconcat(OpcodeStr, "\t{$src1, $dst|$dst, $src1}"),
- [(set RC:$dst, (OpNode RC:$src1))], itins.rr, d>, Sched<[itins.Sched]>,
+ [(set RC:$dst, (OpNode RC:$src1))], NoItinerary, d>, Sched<[itins.Sched]>,
Requires<[target]>;
let mayLoad = 1 in
def m : I<opc, MRMSrcMem, (outs RC:$dst), (ins x86memop:$src1),
!strconcat(OpcodeStr, "\t{$src1, $dst|$dst, $src1}"),
- [(set RC:$dst, (OpNode (load addr:$src1)))], itins.rm, d>,
+ [(set RC:$dst, (OpNode (load addr:$src1)))], NoItinerary, d>,
Sched<[itins.Sched.Folded, ReadAfterLd]>,
Requires<[target, OptForSize]>;
let isCodeGenOnly = 1, Constraints = "$src1 = $dst", ExeDomain = d in {
def r_Int : I<opc, MRMSrcReg, (outs VR128:$dst), (ins VR128:$src1, VR128:$src2),
- !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
- [], itins.rr>, Sched<[itins.Sched]>;
+ !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"), []>,
+ Sched<[itins.Sched]>;
let mayLoad = 1 in
def m_Int : I<opc, MRMSrcMem, (outs VR128:$dst), (ins VR128:$src1, intmemop:$src2),
- !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
- [], itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ !strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"), []>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -3160,21 +3152,21 @@ multiclass avx_fp_unop_s<bits<8> opc, st
let hasSideEffects = 0 in {
def r : I<opc, MRMSrcReg, (outs RC:$dst), (ins RC:$src1, RC:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [], itins.rr, d>, Sched<[itins.Sched]>;
+ [], NoItinerary, d>, Sched<[itins.Sched]>;
let mayLoad = 1 in
def m : I<opc, MRMSrcMem, (outs RC:$dst), (ins RC:$src1, x86memop:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [], itins.rm, d>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ [], NoItinerary, d>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
let isCodeGenOnly = 1, ExeDomain = d in {
def r_Int : I<opc, MRMSrcReg, (outs VR128:$dst),
(ins VR128:$src1, VR128:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [], itins.rr>, Sched<[itins.Sched]>;
+ []>, Sched<[itins.Sched]>;
let mayLoad = 1 in
def m_Int : I<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, intmemop:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [], itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ []>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -3211,33 +3203,33 @@ let Predicates = prds in {
def V#NAME#PSr : PSI<opc, MRMSrcReg, (outs VR128:$dst), (ins VR128:$src),
!strconcat("v", OpcodeStr,
"ps\t{$src, $dst|$dst, $src}"),
- [(set VR128:$dst, (v4f32 (OpNode VR128:$src)))],
- itins.rr>, VEX, Sched<[itins.Sched]>, VEX_WIG;
+ [(set VR128:$dst, (v4f32 (OpNode VR128:$src)))]>,
+ VEX, Sched<[itins.Sched]>, VEX_WIG;
def V#NAME#PSm : PSI<opc, MRMSrcMem, (outs VR128:$dst), (ins f128mem:$src),
!strconcat("v", OpcodeStr,
"ps\t{$src, $dst|$dst, $src}"),
- [(set VR128:$dst, (OpNode (loadv4f32 addr:$src)))],
- itins.rm>, VEX, Sched<[itins.Sched.Folded]>, VEX_WIG;
+ [(set VR128:$dst, (OpNode (loadv4f32 addr:$src)))]>,
+ VEX, Sched<[itins.Sched.Folded]>, VEX_WIG;
def V#NAME#PSYr : PSI<opc, MRMSrcReg, (outs VR256:$dst), (ins VR256:$src),
!strconcat("v", OpcodeStr,
"ps\t{$src, $dst|$dst, $src}"),
- [(set VR256:$dst, (v8f32 (OpNode VR256:$src)))],
- itins.rr>, VEX, VEX_L, Sched<[itins.Sched]>, VEX_WIG;
+ [(set VR256:$dst, (v8f32 (OpNode VR256:$src)))]>,
+ VEX, VEX_L, Sched<[itins.Sched]>, VEX_WIG;
def V#NAME#PSYm : PSI<opc, MRMSrcMem, (outs VR256:$dst), (ins f256mem:$src),
!strconcat("v", OpcodeStr,
"ps\t{$src, $dst|$dst, $src}"),
- [(set VR256:$dst, (OpNode (loadv8f32 addr:$src)))],
- itins.rm>, VEX, VEX_L, Sched<[itins.Sched.Folded]>, VEX_WIG;
+ [(set VR256:$dst, (OpNode (loadv8f32 addr:$src)))]>,
+ VEX, VEX_L, Sched<[itins.Sched.Folded]>, VEX_WIG;
}
def PSr : PSI<opc, MRMSrcReg, (outs VR128:$dst), (ins VR128:$src),
!strconcat(OpcodeStr, "ps\t{$src, $dst|$dst, $src}"),
- [(set VR128:$dst, (v4f32 (OpNode VR128:$src)))], itins.rr>,
- Sched<[itins.Sched]>;
+ [(set VR128:$dst, (v4f32 (OpNode VR128:$src)))]>,
+ Sched<[itins.Sched]>;
def PSm : PSI<opc, MRMSrcMem, (outs VR128:$dst), (ins f128mem:$src),
!strconcat(OpcodeStr, "ps\t{$src, $dst|$dst, $src}"),
- [(set VR128:$dst, (OpNode (memopv4f32 addr:$src)))], itins.rm>,
- Sched<[itins.Sched.Folded]>;
+ [(set VR128:$dst, (OpNode (memopv4f32 addr:$src)))]>,
+ Sched<[itins.Sched.Folded]>;
}
/// sse2_fp_unop_p - SSE2 unops in vector forms.
@@ -3247,33 +3239,33 @@ let Predicates = [HasAVX, NoVLX] in {
def V#NAME#PDr : PDI<opc, MRMSrcReg, (outs VR128:$dst), (ins VR128:$src),
!strconcat("v", OpcodeStr,
"pd\t{$src, $dst|$dst, $src}"),
- [(set VR128:$dst, (v2f64 (OpNode VR128:$src)))],
- itins.rr>, VEX, Sched<[itins.Sched]>, VEX_WIG;
+ [(set VR128:$dst, (v2f64 (OpNode VR128:$src)))]>,
+ VEX, Sched<[itins.Sched]>, VEX_WIG;
def V#NAME#PDm : PDI<opc, MRMSrcMem, (outs VR128:$dst), (ins f128mem:$src),
!strconcat("v", OpcodeStr,
"pd\t{$src, $dst|$dst, $src}"),
- [(set VR128:$dst, (OpNode (loadv2f64 addr:$src)))],
- itins.rm>, VEX, Sched<[itins.Sched.Folded]>, VEX_WIG;
+ [(set VR128:$dst, (OpNode (loadv2f64 addr:$src)))]>,
+ VEX, Sched<[itins.Sched.Folded]>, VEX_WIG;
def V#NAME#PDYr : PDI<opc, MRMSrcReg, (outs VR256:$dst), (ins VR256:$src),
!strconcat("v", OpcodeStr,
"pd\t{$src, $dst|$dst, $src}"),
- [(set VR256:$dst, (v4f64 (OpNode VR256:$src)))],
- itins.rr>, VEX, VEX_L, Sched<[itins.Sched]>, VEX_WIG;
+ [(set VR256:$dst, (v4f64 (OpNode VR256:$src)))]>,
+ VEX, VEX_L, Sched<[itins.Sched]>, VEX_WIG;
def V#NAME#PDYm : PDI<opc, MRMSrcMem, (outs VR256:$dst), (ins f256mem:$src),
!strconcat("v", OpcodeStr,
"pd\t{$src, $dst|$dst, $src}"),
- [(set VR256:$dst, (OpNode (loadv4f64 addr:$src)))],
- itins.rm>, VEX, VEX_L, Sched<[itins.Sched.Folded]>, VEX_WIG;
+ [(set VR256:$dst, (OpNode (loadv4f64 addr:$src)))]>,
+ VEX, VEX_L, Sched<[itins.Sched.Folded]>, VEX_WIG;
}
def PDr : PDI<opc, MRMSrcReg, (outs VR128:$dst), (ins VR128:$src),
- !strconcat(OpcodeStr, "pd\t{$src, $dst|$dst, $src}"),
- [(set VR128:$dst, (v2f64 (OpNode VR128:$src)))], itins.rr>,
- Sched<[itins.Sched]>;
+ !strconcat(OpcodeStr, "pd\t{$src, $dst|$dst, $src}"),
+ [(set VR128:$dst, (v2f64 (OpNode VR128:$src)))]>,
+ Sched<[itins.Sched]>;
def PDm : PDI<opc, MRMSrcMem, (outs VR128:$dst), (ins f128mem:$src),
!strconcat(OpcodeStr, "pd\t{$src, $dst|$dst, $src}"),
- [(set VR128:$dst, (OpNode (memopv2f64 addr:$src)))], itins.rm>,
- Sched<[itins.Sched.Folded]>;
+ [(set VR128:$dst, (OpNode (memopv2f64 addr:$src)))]>,
+ Sched<[itins.Sched.Folded]>;
}
multiclass sse1_fp_unop_s<bits<8> opc, string OpcodeStr, SDNode OpNode,
@@ -3672,7 +3664,7 @@ multiclass PDI_binop_rm2<bits<8> opc, st
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (DstVT (OpNode (SrcVT RC:$src1), RC:$src2)))], itins.rr>,
+ [(set RC:$dst, (DstVT (OpNode (SrcVT RC:$src1), RC:$src2)))]>,
Sched<[itins.Sched]>;
def rm : PDI<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2),
@@ -3680,8 +3672,8 @@ multiclass PDI_binop_rm2<bits<8> opc, st
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst, (DstVT (OpNode (SrcVT RC:$src1),
- (bitconvert (memop_frag addr:$src2)))))],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (bitconvert (memop_frag addr:$src2)))))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
} // ExeDomain = SSEPackedInt
@@ -3897,15 +3889,15 @@ let Predicates = [HasAVX, prd] in {
!strconcat("v", OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set VR128:$dst,
- (vt128 (OpNode VR128:$src1, (i8 imm:$src2))))],
- itins.rr>, VEX, Sched<[itins.Sched]>, VEX_WIG;
+ (vt128 (OpNode VR128:$src1, (i8 imm:$src2))))]>,
+ VEX, Sched<[itins.Sched]>, VEX_WIG;
def V#NAME#mi : Ii8<0x70, MRMSrcMem, (outs VR128:$dst),
(ins i128mem:$src1, u8imm:$src2),
!strconcat("v", OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set VR128:$dst,
(vt128 (OpNode (bitconvert (loadv2i64 addr:$src1)),
- (i8 imm:$src2))))], itins.rm>, VEX,
+ (i8 imm:$src2))))]>, VEX,
Sched<[itins.Sched.Folded]>, VEX_WIG;
}
@@ -3915,15 +3907,15 @@ let Predicates = [HasAVX2, prd] in {
!strconcat("v", OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set VR256:$dst,
- (vt256 (OpNode VR256:$src1, (i8 imm:$src2))))],
- itins.rr>, VEX, VEX_L, Sched<[itins.Sched]>, VEX_WIG;
+ (vt256 (OpNode VR256:$src1, (i8 imm:$src2))))]>,
+ VEX, VEX_L, Sched<[itins.Sched]>, VEX_WIG;
def V#NAME#Ymi : Ii8<0x70, MRMSrcMem, (outs VR256:$dst),
(ins i256mem:$src1, u8imm:$src2),
!strconcat("v", OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set VR256:$dst,
(vt256 (OpNode (bitconvert (loadv4i64 addr:$src1)),
- (i8 imm:$src2))))], itins.rm>, VEX, VEX_L,
+ (i8 imm:$src2))))]>, VEX, VEX_L,
Sched<[itins.Sched.Folded]>, VEX_WIG;
}
@@ -3932,17 +3924,17 @@ let Predicates = [UseSSE2] in {
(outs VR128:$dst), (ins VR128:$src1, u8imm:$src2),
!strconcat(OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [(set VR128:$dst,
- (vt128 (OpNode VR128:$src1, (i8 imm:$src2))))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set VR128:$dst,
+ (vt128 (OpNode VR128:$src1, (i8 imm:$src2))))]>,
+ Sched<[itins.Sched]>;
def mi : Ii8<0x70, MRMSrcMem,
(outs VR128:$dst), (ins i128mem:$src1, u8imm:$src2),
!strconcat(OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [(set VR128:$dst,
- (vt128 (OpNode (bitconvert (memopv2i64 addr:$src1)),
- (i8 imm:$src2))))], itins.rm>,
- Sched<[itins.Sched.Folded]>;
+ [(set VR128:$dst,
+ (vt128 (OpNode (bitconvert (memopv2i64 addr:$src1)),
+ (i8 imm:$src2))))]>,
+ Sched<[itins.Sched.Folded]>;
}
}
} // ExeDomain = SSEPackedInt
@@ -3970,8 +3962,8 @@ multiclass sse2_pack<bits<8> opc, string
!strconcat(OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst,
- (OutVT (OpNode (ArgVT RC:$src1), RC:$src2)))],
- itins.rr>, Sched<[itins.Sched]>;
+ (OutVT (OpNode (ArgVT RC:$src1), RC:$src2)))]>,
+ Sched<[itins.Sched]>;
def rm : PDI<opc, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2),
!if(Is2Addr,
@@ -3980,8 +3972,8 @@ multiclass sse2_pack<bits<8> opc, string
"\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst,
(OutVT (OpNode (ArgVT RC:$src1),
- (bitconvert (ld_frag addr:$src2)))))],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (bitconvert (ld_frag addr:$src2)))))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
multiclass sse4_pack<bits<8> opc, string OpcodeStr, ValueType OutVT,
@@ -3995,8 +3987,8 @@ multiclass sse4_pack<bits<8> opc, string
!strconcat(OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst,
- (OutVT (OpNode (ArgVT RC:$src1), RC:$src2)))],
- itins.rr>, Sched<[itins.Sched]>;
+ (OutVT (OpNode (ArgVT RC:$src1), RC:$src2)))]>,
+ Sched<[itins.Sched]>;
def rm : SS48I<opc, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2),
!if(Is2Addr,
@@ -4005,8 +3997,8 @@ multiclass sse4_pack<bits<8> opc, string
"\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst,
(OutVT (OpNode (ArgVT RC:$src1),
- (bitconvert (ld_frag addr:$src2)))))],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (bitconvert (ld_frag addr:$src2)))))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
let Predicates = [HasAVX, NoVLX_Or_NoBWI] in {
@@ -4069,16 +4061,15 @@ multiclass sse2_unpack<bits<8> opc, stri
!if(Is2Addr,
!strconcat(OpcodeStr,"\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr,"\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (vt (OpNode RC:$src1, RC:$src2)))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set RC:$dst, (vt (OpNode RC:$src1, RC:$src2)))]>,
+ Sched<[itins.Sched]>;
def rm : PDI<opc, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2),
!if(Is2Addr,
!strconcat(OpcodeStr,"\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr,"\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst, (vt (OpNode RC:$src1,
- (bitconvert (ld_frag addr:$src2)))))],
- itins.rm>,
+ (bitconvert (ld_frag addr:$src2)))))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -4782,15 +4773,15 @@ multiclass sse3_addsub<string OpcodeStr,
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (vt (X86Addsub RC:$src1, RC:$src2)))], itins.rr>,
+ [(set RC:$dst, (vt (X86Addsub RC:$src1, RC:$src2)))]>,
Sched<[itins.Sched]>;
def rm : I<0xD0, MRMSrcMem,
(outs RC:$dst), (ins RC:$src1, x86memop:$src2),
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (vt (X86Addsub RC:$src1, (ld_frag addr:$src2))))],
- itins.rr>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ [(set RC:$dst, (vt (X86Addsub RC:$src1, (ld_frag addr:$src2))))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
let Predicates = [HasAVX] in {
@@ -4837,15 +4828,15 @@ multiclass S3D_Int<bits<8> o, string Opc
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (vt (OpNode RC:$src1, RC:$src2)))], itins.rr>,
+ [(set RC:$dst, (vt (OpNode RC:$src1, RC:$src2)))]>,
Sched<[itins.Sched]>;
def rm : S3DI<o, MRMSrcMem, (outs RC:$dst), (ins RC:$src1, x86memop:$src2),
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (vt (OpNode RC:$src1, (ld_frag addr:$src2))))],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ [(set RC:$dst, (vt (OpNode RC:$src1, (ld_frag addr:$src2))))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
multiclass S3_Int<bits<8> o, string OpcodeStr, ValueType vt, RegisterClass RC,
X86MemOperand x86memop, SDNode OpNode, OpndItins itins,
@@ -4854,15 +4845,15 @@ multiclass S3_Int<bits<8> o, string Opco
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (vt (OpNode RC:$src1, RC:$src2)))], itins.rr>,
- Sched<[itins.Sched]>;
+ [(set RC:$dst, (vt (OpNode RC:$src1, RC:$src2)))]>,
+ Sched<[itins.Sched]>;
def rm : S3I<o, MRMSrcMem, (outs RC:$dst), (ins RC:$src1, x86memop:$src2),
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (vt (OpNode RC:$src1, (ld_frag addr:$src2))))],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ [(set RC:$dst, (vt (OpNode RC:$src1, (ld_frag addr:$src2))))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
let Predicates = [HasAVX] in {
@@ -4918,15 +4909,15 @@ multiclass SS3I_unop_rm<bits<8> opc, str
def rr : SS38I<opc, MRMSrcReg, (outs VR128:$dst),
(ins VR128:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
- [(set VR128:$dst, (vt (OpNode VR128:$src)))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set VR128:$dst, (vt (OpNode VR128:$src)))]>,
+ Sched<[itins.Sched]>;
def rm : SS38I<opc, MRMSrcMem, (outs VR128:$dst),
(ins i128mem:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
[(set VR128:$dst,
- (vt (OpNode (bitconvert (ld_frag addr:$src)))))],
- itins.rm>, Sched<[itins.Sched.Folded]>;
+ (vt (OpNode (bitconvert (ld_frag addr:$src)))))]>,
+ Sched<[itins.Sched.Folded]>;
}
/// SS3I_unop_rm_int_y - Simple SSSE3 unary op whose type can be v*{i8,i16,i32}.
@@ -4935,14 +4926,14 @@ multiclass SS3I_unop_rm_y<bits<8> opc, s
def Yrr : SS38I<opc, MRMSrcReg, (outs VR256:$dst),
(ins VR256:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
- [(set VR256:$dst, (vt (OpNode VR256:$src)))], itins.rr>,
+ [(set VR256:$dst, (vt (OpNode VR256:$src)))]>,
Sched<[itins.Sched]>;
def Yrm : SS38I<opc, MRMSrcMem, (outs VR256:$dst),
(ins i256mem:$src),
!strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
[(set VR256:$dst,
- (vt (OpNode (bitconvert (loadv4i64 addr:$src)))))], itins.rm>,
+ (vt (OpNode (bitconvert (loadv4i64 addr:$src)))))]>,
Sched<[itins.Sched.Folded]>;
}
@@ -5004,7 +4995,7 @@ multiclass SS3I_binop_rm<bits<8> opc, st
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (DstVT (OpNode (OpVT RC:$src1), RC:$src2)))], itins.rr>,
+ [(set RC:$dst, (DstVT (OpNode (OpVT RC:$src1), RC:$src2)))]>,
Sched<[itins.Sched]>;
def rm : SS38I<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2),
@@ -5013,7 +5004,7 @@ multiclass SS3I_binop_rm<bits<8> opc, st
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst,
(DstVT (OpNode (OpVT RC:$src1),
- (bitconvert (memop_frag addr:$src2)))))], itins.rm>,
+ (bitconvert (memop_frag addr:$src2)))))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -5027,7 +5018,7 @@ multiclass SS3I_binop_rm_int<bits<8> opc
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set VR128:$dst, (IntId128 VR128:$src1, VR128:$src2))], itins.rr>,
+ [(set VR128:$dst, (IntId128 VR128:$src1, VR128:$src2))]>,
Sched<[itins.Sched]>;
def rm : SS38I<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, i128mem:$src2),
@@ -5036,7 +5027,7 @@ multiclass SS3I_binop_rm_int<bits<8> opc
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set VR128:$dst,
(IntId128 VR128:$src1,
- (bitconvert (ld_frag addr:$src2))))], itins.rm>,
+ (bitconvert (ld_frag addr:$src2))))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -5198,8 +5189,8 @@ multiclass ssse3_palignr<string asm, Val
!strconcat(asm, "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
!strconcat(asm,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
- [(set RC:$dst, (VT (X86PAlignr RC:$src1, RC:$src2, (i8 imm:$src3))))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set RC:$dst, (VT (X86PAlignr RC:$src1, RC:$src2, (i8 imm:$src3))))]>,
+ Sched<[itins.Sched]>;
let mayLoad = 1 in
def rmi : SS3AI<0x0F, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2, u8imm:$src3),
@@ -5209,8 +5200,8 @@ multiclass ssse3_palignr<string asm, Val
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
[(set RC:$dst, (VT (X86PAlignr RC:$src1,
(bitconvert (memop_frag addr:$src2)),
- (i8 imm:$src3))))],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (i8 imm:$src3))))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -5260,14 +5251,12 @@ multiclass SS41I_pmovx_rrrm<bits<8> opc,
RegisterClass OutRC, RegisterClass InRC,
OpndItins itins> {
def rr : SS48I<opc, MRMSrcReg, (outs OutRC:$dst), (ins InRC:$src),
- !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
- [], itins.rr>,
+ !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), []>,
Sched<[itins.Sched]>;
def rm : SS48I<opc, MRMSrcMem, (outs OutRC:$dst), (ins MemOp:$src),
- !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
- [],
- itins.rm>, Sched<[itins.Sched.Folded]>;
+ !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"), []>,
+ Sched<[itins.Sched.Folded]>;
}
multiclass SS41I_pmovx_rm_all<bits<8> opc, string OpcodeStr,
@@ -5616,19 +5605,19 @@ defm PEXTRQ : SS41I_extract64<0x16,
multiclass SS41I_extractf32<bits<8> opc, string OpcodeStr,
OpndItins itins = SSE_EXTRACT_ITINS> {
def rr : SS4AIi8<opc, MRMDestReg, (outs GR32orGR64:$dst),
- (ins VR128:$src1, u8imm:$src2),
- !strconcat(OpcodeStr,
- "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [(set GR32orGR64:$dst,
- (extractelt (bc_v4i32 (v4f32 VR128:$src1)), imm:$src2))],
- itins.rr>, Sched<[WriteFBlend]>;
+ (ins VR128:$src1, u8imm:$src2),
+ !strconcat(OpcodeStr,
+ "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
+ [(set GR32orGR64:$dst,
+ (extractelt (bc_v4i32 (v4f32 VR128:$src1)), imm:$src2))]>,
+ Sched<[WriteFBlend]>;
let SchedRW = [WriteFBlendLd, WriteRMW] in
def mr : SS4AIi8<opc, MRMDestMem, (outs),
- (ins f32mem:$dst, VR128:$src1, u8imm:$src2),
- !strconcat(OpcodeStr,
- "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [(store (extractelt (bc_v4i32 (v4f32 VR128:$src1)), imm:$src2),
- addr:$dst)], itins.rm>;
+ (ins f32mem:$dst, VR128:$src1, u8imm:$src2),
+ !strconcat(OpcodeStr,
+ "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
+ [(store (extractelt (bc_v4i32 (v4f32 VR128:$src1)), imm:$src2),
+ addr:$dst)]>;
}
let ExeDomain = SSEPackedSingle in {
@@ -5744,7 +5733,7 @@ multiclass SS41I_insertf32<bits<8> opc,
!strconcat(asm,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
[(set VR128:$dst,
- (X86insertps VR128:$src1, VR128:$src2, imm:$src3))], itins.rr>,
+ (X86insertps VR128:$src1, VR128:$src2, imm:$src3))]>,
Sched<[WriteFShuffle]>;
def rm : SS4AIi8<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, f32mem:$src2, u8imm:$src3),
@@ -5755,7 +5744,7 @@ multiclass SS41I_insertf32<bits<8> opc,
[(set VR128:$dst,
(X86insertps VR128:$src1,
(v4f32 (scalar_to_vector (loadf32 addr:$src2))),
- imm:$src3))], itins.rm>,
+ imm:$src3))]>,
Sched<[WriteFShuffleLd, ReadAfterLd]>;
}
@@ -5800,8 +5789,8 @@ multiclass sse41_fp_unop_p<bits<8> opc,
(outs RC:$dst), (ins RC:$src1, i32u8imm:$src2),
!strconcat(OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
- [(set RC:$dst, (VT (OpNode RC:$src1, imm:$src2)))],
- itins.rr>, Sched<[WriteFAdd]>;
+ [(set RC:$dst, (VT (OpNode RC:$src1, imm:$src2)))]>,
+ Sched<[WriteFAdd]>;
// Vector intrinsic operation, mem
def m : SS4AIi8<opc, MRMSrcMem,
@@ -5809,8 +5798,8 @@ multiclass sse41_fp_unop_p<bits<8> opc,
!strconcat(OpcodeStr,
"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set RC:$dst,
- (VT (OpNode (mem_frag addr:$src1),imm:$src2)))],
- itins.rm>, Sched<[WriteFAddLd]>;
+ (VT (OpNode (mem_frag addr:$src1),imm:$src2)))]>,
+ Sched<[WriteFAddLd]>;
}
multiclass avx_fp_unop_rm<bits<8> opcss, bits<8> opcsd,
@@ -6225,7 +6214,7 @@ multiclass SS48I_binop_rm<bits<8> opc, s
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2)))], itins.rr>,
+ [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2)))]>,
Sched<[itins.Sched]>;
def rm : SS48I<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2),
@@ -6233,8 +6222,8 @@ multiclass SS48I_binop_rm<bits<8> opc, s
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst,
- (OpVT (OpNode RC:$src1, (bitconvert (memop_frag addr:$src2)))))],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (OpVT (OpNode RC:$src1, (bitconvert (memop_frag addr:$src2)))))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
let Predicates = [HasAVX, NoVLX] in {
@@ -6360,7 +6349,7 @@ multiclass SS41I_binop_rmi_int<bits<8> o
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
- [(set RC:$dst, (IntId RC:$src1, RC:$src2, imm:$src3))], itins.rr>,
+ [(set RC:$dst, (IntId RC:$src1, RC:$src2, imm:$src3))]>,
Sched<[itins.Sched]>;
def rmi : SS4AIi8<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2, u8imm:$src3),
@@ -6371,7 +6360,7 @@ multiclass SS41I_binop_rmi_int<bits<8> o
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
[(set RC:$dst,
(IntId RC:$src1,
- (bitconvert (memop_frag addr:$src2)), imm:$src3))], itins.rm>,
+ (bitconvert (memop_frag addr:$src2)), imm:$src3))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -6388,8 +6377,8 @@ multiclass SS41I_binop_rmi<bits<8> opc,
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
- [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2, imm:$src3)))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2, imm:$src3)))]>,
+ Sched<[itins.Sched]>;
def rmi : SS4AIi8<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2, u8imm:$src3),
!if(Is2Addr,
@@ -6399,7 +6388,7 @@ multiclass SS41I_binop_rmi<bits<8> opc,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
[(set RC:$dst,
(OpVT (OpNode RC:$src1,
- (bitconvert (memop_frag addr:$src2)), imm:$src3)))], itins.rm>,
+ (bitconvert (memop_frag addr:$src2)), imm:$src3)))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -6478,8 +6467,8 @@ let ExeDomain = d, Constraints = !if(Is2
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
- [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2, imm:$src3)))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2, imm:$src3)))]>,
+ Sched<[itins.Sched]>;
def rmi : SS4AIi8<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2, u8imm:$src3),
!if(Is2Addr,
@@ -6489,7 +6478,7 @@ let ExeDomain = d, Constraints = !if(Is2
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}")),
[(set RC:$dst,
(OpVT (OpNode RC:$src1,
- (bitconvert (memop_frag addr:$src2)), imm:$src3)))], itins.rm>,
+ (bitconvert (memop_frag addr:$src2)), imm:$src3)))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
@@ -6563,7 +6552,7 @@ multiclass SS41I_quaternary_int_avx<bits
!strconcat(OpcodeStr,
"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}"),
[(set RC:$dst, (IntId RC:$src1, RC:$src2, RC:$src3))],
- itins.rr, SSEPackedInt>, TAPD, VEX_4V,
+ NoItinerary, SSEPackedInt>, TAPD, VEX_4V,
Sched<[itins.Sched]>;
def rm : Ii8Reg<opc, MRMSrcMem, (outs RC:$dst),
@@ -6573,7 +6562,7 @@ multiclass SS41I_quaternary_int_avx<bits
[(set RC:$dst,
(IntId RC:$src1, (bitconvert (mem_frag addr:$src2)),
RC:$src3))],
- itins.rm, SSEPackedInt>, TAPD, VEX_4V,
+ NoItinerary, SSEPackedInt>, TAPD, VEX_4V,
Sched<[itins.Sched.Folded, ReadAfterLd,
// x86memop:$src2
ReadDefault, ReadDefault, ReadDefault, ReadDefault,
@@ -6700,8 +6689,8 @@ let Uses = [XMM0], Constraints = "$src1
(ins VR128:$src1, VR128:$src2),
!strconcat(OpcodeStr,
"\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
- [(set VR128:$dst, (IntId VR128:$src1, VR128:$src2, XMM0))],
- itins.rr>, Sched<[itins.Sched]>;
+ [(set VR128:$dst, (IntId VR128:$src1, VR128:$src2, XMM0))]>,
+ Sched<[itins.Sched]>;
def rm0 : SS48I<opc, MRMSrcMem, (outs VR128:$dst),
(ins VR128:$src1, x86memop:$src2),
@@ -6709,8 +6698,8 @@ let Uses = [XMM0], Constraints = "$src1
"\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
[(set VR128:$dst,
(IntId VR128:$src1,
- (bitconvert (mem_frag addr:$src2)), XMM0))],
- itins.rm>, Sched<[itins.Sched.Folded, ReadAfterLd]>;
+ (bitconvert (mem_frag addr:$src2)), XMM0))]>,
+ Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
}
@@ -6815,7 +6804,7 @@ multiclass SS42I_binop_rm<bits<8> opc, s
!if(Is2Addr,
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
- [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2)))], itins.rr>,
+ [(set RC:$dst, (OpVT (OpNode RC:$src1, RC:$src2)))]>,
Sched<[itins.Sched]>;
def rm : SS428I<opc, MRMSrcMem, (outs RC:$dst),
(ins RC:$src1, x86memop:$src2),
@@ -6823,7 +6812,7 @@ multiclass SS42I_binop_rm<bits<8> opc, s
!strconcat(OpcodeStr, "\t{$src2, $dst|$dst, $src2}"),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}")),
[(set RC:$dst,
- (OpVT (OpNode RC:$src1, (memop_frag addr:$src2))))], itins.rm>,
+ (OpVT (OpNode RC:$src1, (memop_frag addr:$src2))))]>,
Sched<[itins.Sched.Folded, ReadAfterLd]>;
}
More information about the llvm-commits
mailing list