[clfft] 95/107: fixing imaginary part sign issues

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Thu Jul 30 18:06:41 UTC 2015


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch master
in repository clfft.

commit 49fbb5bda821aa6969ecd92a55b1a4adc59ccf5c
Author: bragadeesh <bragadeesh.natarajan at amd>
Date:   Mon Jun 22 16:01:00 2015 -0500

    fixing imaginary part sign issues
---
 src/library/generator.stockham.cpp | 69 ++++++++++++++++++++++++++++++++------
 1 file changed, 58 insertions(+), 11 deletions(-)

diff --git a/src/library/generator.stockham.cpp b/src/library/generator.stockham.cpp
index b14ca8c..4016acc 100644
--- a/src/library/generator.stockham.cpp
+++ b/src/library/generator.stockham.cpp
@@ -956,19 +956,62 @@ namespace StockhamGenerator
 							}
 
 							passStr += rType; passStr += " TR, TI;\n\t\t";
-							if(fwd)
+
+							if(realSpecial)
 							{
-								passStr += "TR = (W.x * "; passStr += regRealIndex; passStr += ") - (W.y * ";
-								passStr += regImagIndex; passStr += ");\n\t\t";
-								passStr += "TI = (W.y * "; passStr += regRealIndex; passStr += ") + (W.x * ";
-								passStr += regImagIndex; passStr += ");\n\t\t";
+								if(fwd)
+								{
+									passStr += "if(t==0)\n\t\t{\n\t\t";
+
+									passStr += "TR = (W.x * "; passStr += regRealIndex; passStr += ") - (W.y * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+									passStr += "TI = (W.y * "; passStr += regRealIndex; passStr += ") + (W.x * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+
+									passStr += "}\n\t\telse\n\t\t{\n\t\t";
+
+									passStr += "TR =  (W.x * "; passStr += regRealIndex; passStr += ") + (W.y * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+									passStr += "TI = -(W.y * "; passStr += regRealIndex; passStr += ") + (W.x * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+
+									passStr += "}\n\t\t";
+								}
+								else
+								{
+									passStr += "if(t==0)\n\t\t{\n\t\t";
+
+									passStr += "TR =  (W.x * "; passStr += regRealIndex; passStr += ") + (W.y * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+									passStr += "TI = -(W.y * "; passStr += regRealIndex; passStr += ") + (W.x * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+
+									passStr += "}\n\t\telse\n\t\t{\n\t\t";
+
+									passStr += "TR = (W.x * "; passStr += regRealIndex; passStr += ") - (W.y * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+									passStr += "TI = (W.y * "; passStr += regRealIndex; passStr += ") + (W.x * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+
+									passStr += "}\n\t\t";
+								}
 							}
 							else
 							{
-								passStr += "TR =  (W.x * "; passStr += regRealIndex; passStr += ") + (W.y * ";
-								passStr += regImagIndex; passStr += ");\n\t\t";
-								passStr += "TI = -(W.y * "; passStr += regRealIndex; passStr += ") + (W.x * ";
-								passStr += regImagIndex; passStr += ");\n\t\t";
+								if(fwd)
+								{
+									passStr += "TR = (W.x * "; passStr += regRealIndex; passStr += ") - (W.y * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+									passStr += "TI = (W.y * "; passStr += regRealIndex; passStr += ") + (W.x * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+								}
+								else
+								{
+									passStr += "TR =  (W.x * "; passStr += regRealIndex; passStr += ") + (W.y * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+									passStr += "TI = -(W.y * "; passStr += regRealIndex; passStr += ") + (W.x * ";
+									passStr += regImagIndex; passStr += ");\n\t\t";
+								}
 							}
 
 							passStr += regRealIndex; passStr += " = TR;\n\t\t";
@@ -1526,7 +1569,9 @@ namespace StockhamGenerator
 
 			// Function arguments
 			passStr += "(";
-			passStr += "uint rw, uint b, uint me, uint inOffset, uint outOffset, ";
+			passStr += "uint rw, uint b, ";
+			if(realSpecial) passStr += "uint t, ";
+			passStr += "uint me, uint inOffset, uint outOffset, ";
 
 			if(r2c || c2r)
 			{
@@ -3180,7 +3225,9 @@ namespace StockhamGenerator
 						else		{	if(ldsInterleaved) { ldsArgs += "lds"; }
 										else { ldsArgs += "lds, lds + "; ldsArgs += SztToStr(length*numTrans); } }
 
-						str += rw; str += me;
+						str += rw;
+						if(params.fft_realSpecial) str += "t, ";
+						str += me;
 						if(p == passes.begin()) // beginning pass
 						{
 							str += blockCompute ? ldsOff : "0";

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/clfft.git



More information about the debian-science-commits mailing list