Am 21.02.2013 09:26, schrieb Michel Dänzer:
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.
Good question, I don't see any advantage right now. I just wanted to
make sure that it's working as expected by doing a full piglit test run.
Going to change my folding to use V_MUL instead and dropping this patch
from the patchset.
Do I have your Rb for the rest? If yes I really want to commit this,
cause patch 12 is fixing 40 piglit tests for me.
Christian.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev