mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
AMDGPU: Remove VOP3Mods0Clamp0OMod
Now that overridable default operands work, there's no reason to use complex patterns to just produce 0s.
This commit is contained in:
parent
7940691f1f
commit
b1381cb95e
@ -34,10 +34,6 @@ def gi_vop3omods :
|
||||
GIComplexOperandMatcher<s32, "selectVOP3OMods">,
|
||||
GIComplexPatternEquiv<VOP3OMods>;
|
||||
|
||||
def gi_vop3omods0clamp0omod :
|
||||
GIComplexOperandMatcher<s32, "selectVOP3Mods0Clamp0OMod">,
|
||||
GIComplexPatternEquiv<VOP3Mods0Clamp0OMod>;
|
||||
|
||||
def gi_vop3opselmods0 :
|
||||
GIComplexOperandMatcher<s32, "selectVOP3OpSelMods0">,
|
||||
GIComplexPatternEquiv<VOP3OpSelMods0>;
|
||||
|
@ -261,10 +261,6 @@ private:
|
||||
bool SelectVOP3NoMods0(SDValue In, SDValue &Src, SDValue &SrcMods,
|
||||
SDValue &Clamp, SDValue &Omod) const;
|
||||
|
||||
bool SelectVOP3Mods0Clamp0OMod(SDValue In, SDValue &Src, SDValue &SrcMods,
|
||||
SDValue &Clamp,
|
||||
SDValue &Omod) const;
|
||||
|
||||
bool SelectVOP3OMods(SDValue In, SDValue &Src,
|
||||
SDValue &Clamp, SDValue &Omod) const;
|
||||
|
||||
@ -2459,14 +2455,6 @@ bool AMDGPUDAGToDAGISel::SelectVOP3Mods0(SDValue In, SDValue &Src,
|
||||
return SelectVOP3Mods(In, Src, SrcMods);
|
||||
}
|
||||
|
||||
bool AMDGPUDAGToDAGISel::SelectVOP3Mods0Clamp0OMod(SDValue In, SDValue &Src,
|
||||
SDValue &SrcMods,
|
||||
SDValue &Clamp,
|
||||
SDValue &Omod) const {
|
||||
Clamp = Omod = CurDAG->getTargetConstant(0, SDLoc(In), MVT::i32);
|
||||
return SelectVOP3Mods(In, Src, SrcMods);
|
||||
}
|
||||
|
||||
bool AMDGPUDAGToDAGISel::SelectVOP3OMods(SDValue In, SDValue &Src,
|
||||
SDValue &Clamp, SDValue &Omod) const {
|
||||
Src = In;
|
||||
|
@ -1749,20 +1749,6 @@ AMDGPUInstructionSelector::selectVOP3Mods0(MachineOperand &Root) const {
|
||||
}};
|
||||
}
|
||||
|
||||
InstructionSelector::ComplexRendererFns
|
||||
AMDGPUInstructionSelector::selectVOP3Mods0Clamp0OMod(MachineOperand &Root) const {
|
||||
Register Src;
|
||||
unsigned Mods;
|
||||
std::tie(Src, Mods) = selectVOP3ModsImpl(Root.getReg());
|
||||
|
||||
return {{
|
||||
[=](MachineInstrBuilder &MIB) { MIB.addReg(Src); },
|
||||
[=](MachineInstrBuilder &MIB) { MIB.addImm(Mods); }, // src0_mods
|
||||
[=](MachineInstrBuilder &MIB) { MIB.addImm(0); }, // clamp
|
||||
[=](MachineInstrBuilder &MIB) { MIB.addImm(0); } // omod
|
||||
}};
|
||||
}
|
||||
|
||||
InstructionSelector::ComplexRendererFns
|
||||
AMDGPUInstructionSelector::selectVOP3OMods(MachineOperand &Root) const {
|
||||
return {{
|
||||
|
@ -129,8 +129,6 @@ private:
|
||||
InstructionSelector::ComplexRendererFns
|
||||
selectVOP3Mods0(MachineOperand &Root) const;
|
||||
InstructionSelector::ComplexRendererFns
|
||||
selectVOP3Mods0Clamp0OMod(MachineOperand &Root) const;
|
||||
InstructionSelector::ComplexRendererFns
|
||||
selectVOP3OMods(MachineOperand &Root) const;
|
||||
InstructionSelector::ComplexRendererFns
|
||||
selectVOP3Mods(MachineOperand &Root) const;
|
||||
|
@ -1275,7 +1275,6 @@ def MOVRELOffset : ComplexPattern<i32, 2, "SelectMOVRELOffset">;
|
||||
|
||||
def VOP3Mods0 : ComplexPattern<untyped, 4, "SelectVOP3Mods0">;
|
||||
def VOP3Mods0Clamp : ComplexPattern<untyped, 3, "SelectVOP3Mods0Clamp">;
|
||||
def VOP3Mods0Clamp0OMod : ComplexPattern<untyped, 4, "SelectVOP3Mods0Clamp0OMod">;
|
||||
def VOP3Mods : ComplexPattern<untyped, 2, "SelectVOP3Mods">;
|
||||
def VOP3NoMods : ComplexPattern<untyped, 1, "SelectVOP3NoMods">;
|
||||
// VOP3Mods, but the input source is known to never be NaN.
|
||||
|
@ -650,7 +650,7 @@ class getVOPCClassPat64 <VOPProfile P> {
|
||||
list<dag> ret =
|
||||
[(set i1:$sdst,
|
||||
(AMDGPUfp_class
|
||||
(P.Src0VT (VOP3Mods0Clamp0OMod P.Src0VT:$src0, i32:$src0_modifiers)),
|
||||
(P.Src0VT (VOP3Mods P.Src0VT:$src0, i32:$src0_modifiers)),
|
||||
P.Src1VT:$src1))];
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user