forked from OSchip/llvm-project
[RISCV] Don't create LMUL=8 pseudo instructions for ternary widening arithmetic instructions
These instructions produce 2*SEW result so the input can't have an LMUL=8 or the result would need a non-existant LMUL=16. So only create pseudos for LMUL up to 4. Differential Revision: https://reviews.llvm.org/D95189
This commit is contained in:
parent
3dedad475d
commit
f8f1b20e6b
|
@ -1581,13 +1581,13 @@ multiclass VPseudoTernaryV_VX_AAXA<bit IsFloat, string Constraint = ""> {
|
||||||
|
|
||||||
multiclass VPseudoTernaryW_VV {
|
multiclass VPseudoTernaryW_VV {
|
||||||
defvar constraint = "@earlyclobber $rd";
|
defvar constraint = "@earlyclobber $rd";
|
||||||
foreach m = MxList.m in
|
foreach m = MxList.m[0-5] in
|
||||||
defm _VV : VPseudoTernary<m.wvrclass, m.vrclass, m.vrclass, m, constraint>;
|
defm _VV : VPseudoTernary<m.wvrclass, m.vrclass, m.vrclass, m, constraint>;
|
||||||
}
|
}
|
||||||
|
|
||||||
multiclass VPseudoTernaryW_VX<bit IsFloat> {
|
multiclass VPseudoTernaryW_VX<bit IsFloat> {
|
||||||
defvar constraint = "@earlyclobber $rd";
|
defvar constraint = "@earlyclobber $rd";
|
||||||
foreach m = MxList.m in
|
foreach m = MxList.m[0-5] in
|
||||||
defm !if(IsFloat, "_VF", "_VX") : VPseudoTernary<m.wvrclass,
|
defm !if(IsFloat, "_VF", "_VX") : VPseudoTernary<m.wvrclass,
|
||||||
!if(IsFloat, FPR32, GPR), m.vrclass, m, constraint>;
|
!if(IsFloat, FPR32, GPR), m.vrclass, m, constraint>;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue