diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2016-03-30 17:32:13 +0200 |
---|---|---|
committer | cnugteren <web@cedricnugteren.nl> | 2016-03-30 16:13:37 -0700 |
commit | c1df78676471a8a26ea8ec5a092734566d490db4 (patch) | |
tree | 272bd2cda6a54929f83e4d2c6c7a0652384f88ec /scripts | |
parent | 6ecc0d089c80296cce3089734771279a30783f81 (diff) |
Added prototypes for the xROTM and xROTMG routines
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/generator/generator.py | 6 | ||||
-rw-r--r-- | scripts/generator/routine.py | 42 |
2 files changed, 31 insertions, 17 deletions
diff --git a/scripts/generator/generator.py b/scripts/generator/generator.py index 7191cba1..1eada753 100644 --- a/scripts/generator/generator.py +++ b/scripts/generator/generator.py @@ -52,8 +52,10 @@ TU = DataType("typename T, typename U", "T,U", ["T", "U", "T", "U"], "T") # for # Populates a list of routines routines = [ [ # Level 1: vector-vector - Routine(False, "1", "rotg", T, [S,D], [], [], [], ["SA","SB","C","S"], [], False, "Generate plane rotation"), - Routine(False, "1", "rot", T, [S,D], ["n"], [], [], ["x","y"], ["C","S"], False, "Apply plane rotation"), + Routine(False, "1", "rotg", T, [S,D], [], [], [], ["sa","sb","sc","ss"], [], False, "Generate givens plane rotation"), + Routine(False, "1", "rotmg", T, [S,D], [], [], [], ["sd1","sd2","sx1","sy1","sparam"], [], False, "Generate modified givens plane rotation"), + Routine(False, "1", "rot", T, [S,D], ["n"], [], [], ["x","y"], ["cos","sin"], False, "Apply givens plane rotation"), + Routine(False, "1", "rotm", T, [S,D], ["n"], [], [], ["x","y","sparam"], [], False, "Apply modified givens plane rotation"), Routine(True, "1", "swap", T, [S,D,C,Z], ["n"], [], [], ["x","y"], [], False, "Swap two vectors"), Routine(True, "1", "scal", T, [S,D,C,Z], ["n"], [], [], ["x"], ["alpha"], False, "Vector scaling"), Routine(True, "1", "copy", T, [S,D,C,Z], ["n"], [], ["x"], ["y"], [], False, "Vector copy"), diff --git a/scripts/generator/routine.py b/scripts/generator/routine.py index d74def25..0a61490b 100644 --- a/scripts/generator/routine.py +++ b/scripts/generator/routine.py @@ -59,12 +59,18 @@ class Routine(): self.description = description # List of scalar buffers - def ScalarBuffers(self): - return ["SA","SB","C","S","dot"] + def ScalarBuffersFirst(self): + return ["dot"] + def ScalarBuffersSecond(self): + return ["sa","sb","sc","ss","sd1","sd2","sx1","sy1","sparam"] + + # List of scalars other than alpha and beta + def OtherScalars(self): + return ["cos","sin"] # List of buffers without 'inc' or 'ld' def BuffersWithoutLdInc(self): - return self.ScalarBuffers() + ["ap"] + return self.ScalarBuffersFirst() + self.ScalarBuffersSecond() + ["ap"] # Retrieves the number of characters in the routine's name def Length(self): @@ -258,62 +264,68 @@ class Routine(): # Retrieves a combination of all the argument names, with Claduc casts def ArgumentsCladuc(self, flavour, indent): return (self.Options() + self.Sizes() + - list(chain(*[self.BufferCladuc(b) for b in self.ScalarBuffers()])) + + list(chain(*[self.BufferCladuc(b) for b in self.ScalarBuffersFirst()])) + self.Scalar("alpha") + list(chain(*[self.BufferCladuc(b) for b in self.BuffersFirst()])) + self.Scalar("beta") + list(chain(*[self.BufferCladuc(b) for b in self.BuffersSecond()])) + - list(chain(*[self.Scalar(s) for s in ["C","S"]]))) + list(chain(*[self.BufferCladuc(b) for b in self.ScalarBuffersSecond()])) + + list(chain(*[self.Scalar(s) for s in self.OtherScalars()]))) # Retrieves a combination of all the argument names, with CLBlast casts def ArgumentsCast(self, flavour, indent): return (self.OptionsCast(indent) + self.Sizes() + - list(chain(*[self.Buffer(b) for b in self.ScalarBuffers()])) + + list(chain(*[self.Buffer(b) for b in self.ScalarBuffersFirst()])) + self.ScalarUse("alpha", flavour) + list(chain(*[self.Buffer(b) for b in self.BuffersFirst()])) + self.ScalarUse("beta", flavour) + list(chain(*[self.Buffer(b) for b in self.BuffersSecond()])) + - list(chain(*[self.ScalarUse(s, flavour) for s in ["C","S"]]))) + list(chain(*[self.Buffer(b) for b in self.ScalarBuffersSecond()])) + + list(chain(*[self.ScalarUse(s, flavour) for s in self.OtherScalars()]))) # As above, but for the clBLAS wrapper def ArgumentsWrapper(self, flavour): return (self.Options() + self.Sizes() + - list(chain(*[self.BufferWrapper(b) for b in self.ScalarBuffers()])) + + list(chain(*[self.BufferWrapper(b) for b in self.ScalarBuffersFirst()])) + self.ScalarUseWrapper("alpha", flavour) + list(chain(*[self.BufferWrapper(b) for b in self.BuffersFirst()])) + self.ScalarUseWrapper("beta", flavour) + list(chain(*[self.BufferWrapper(b) for b in self.BuffersSecond()])) + - list(chain(*[self.ScalarUseWrapper(s, flavour) for s in ["C","S"]]))) + list(chain(*[self.BufferWrapper(b) for b in self.ScalarBuffersSecond()])) + + list(chain(*[self.ScalarUseWrapper(s, flavour) for s in self.OtherScalars()]))) # Retrieves a combination of all the argument definitions def ArgumentsDef(self, flavour): return (self.OptionsDef() + self.SizesDef() + - list(chain(*[self.BufferDef(b) for b in self.ScalarBuffers()])) + + list(chain(*[self.BufferDef(b) for b in self.ScalarBuffersFirst()])) + self.ScalarDef("alpha", flavour) + list(chain(*[self.BufferDef(b) for b in self.BuffersFirst()])) + self.ScalarDef("beta", flavour) + list(chain(*[self.BufferDef(b) for b in self.BuffersSecond()])) + - list(chain(*[self.ScalarDef(s, flavour) for s in ["C","S"]]))) + list(chain(*[self.BufferDef(b) for b in self.ScalarBuffersSecond()])) + + list(chain(*[self.ScalarDef(s, flavour) for s in self.OtherScalars()]))) # As above, but clBLAS wrapper plain datatypes def ArgumentsDefWrapper(self, flavour): return (self.OptionsDefWrapper() + self.SizesDef() + - list(chain(*[self.BufferDef(b) for b in self.ScalarBuffers()])) + + list(chain(*[self.BufferDef(b) for b in self.ScalarBuffersFirst()])) + self.ScalarDefPlain("alpha", flavour) + list(chain(*[self.BufferDef(b) for b in self.BuffersFirst()])) + self.ScalarDefPlain("beta", flavour) + list(chain(*[self.BufferDef(b) for b in self.BuffersSecond()])) + - list(chain(*[self.ScalarDefPlain(s, flavour) for s in ["C","S"]]))) + list(chain(*[self.BufferDef(b) for b in self.ScalarBuffersSecond()])) + + list(chain(*[self.ScalarDefPlain(s, flavour) for s in self.OtherScalars()]))) # Retrieves a combination of all the argument types def ArgumentsType(self, flavour): return (self.OptionsType() + self.SizesType() + - list(chain(*[self.BufferType(b) for b in self.ScalarBuffers()])) + + list(chain(*[self.BufferType(b) for b in self.ScalarBuffersFirst()])) + self.ScalarType("alpha", flavour) + list(chain(*[self.BufferType(b) for b in self.BuffersFirst()])) + self.ScalarType("beta", flavour) + list(chain(*[self.BufferType(b) for b in self.BuffersSecond()])) + - list(chain(*[self.ScalarType(s, flavour) for s in ["C","S"]]))) + list(chain(*[self.BufferType(b) for b in self.ScalarBuffersSecond()])) + + list(chain(*[self.ScalarType(s, flavour) for s in self.OtherScalars()]))) # ============================================================================================== |