On Mit, 2013-02-20 at 18:46 +0100, Christian König wrote: > > diff --git a/lib/Target/R600/SIInstructions.td > b/lib/Target/R600/SIInstructions.td > index 833e6cd..7c157e9 100644 > --- a/lib/Target/R600/SIInstructions.td > +++ b/lib/Target/R600/SIInstructions.td > @@ -1232,6 +1232,24 @@ def : Pat < > 0 /* ABS */, 0 /* CLAMP */, 0 /* OMOD */, 1 /* NEG */) > >; > > +def : Pat < > + (fmul VReg_32:$src, (f32 FP_0_5)), > + (V_ADD_F32_e64 VReg_32:$src, (i32 0x80 /* SRC1 */), > + 0 /* ABS */, 0 /* CLAMP */, 3 /* OMOD */, 0 /* NEG */) > +>; > + > +def : Pat < > + (fmul VReg_32:$src, (f32 FP_TWO)), > + (V_ADD_F32_e64 VReg_32:$src, (i32 0x80 /* SRC1 */), > + 0 /* ABS */, 0 /* CLAMP */, 1 /* OMOD */, 0 /* NEG */) > +>; > + > +def : Pat < > + (fmul VReg_32:$src, (f32 FP_FOUR)), > + (V_ADD_F32_e64 VReg_32:$src, (i32 0x80 /* SRC1 */), > + 0 /* ABS */, 0 /* CLAMP */, 2 /* OMOD */, 0 /* NEG */) > +>;
Is there any advantage to doing it like this as opposed to using V_MUL_F32_e32 with the corresponding inline constant source operands? I guess it could work for SGPRs as the source as well, if the patterns used VSrc instead of VReg, but otherwise MUL would result in more compact code. -- Earthling Michel Dänzer | http://www.amd.com Libre software enthusiast | Debian, X and DRI developer _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev