mirror of
https://github.com/gonum/gonum.git
synced 2025-10-20 21:59:25 +08:00
157 lines
5.9 KiB
Bash
Executable File
157 lines
5.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Copyright ©2015 The gonum Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style
|
|
# license that can be found in the LICENSE file.
|
|
|
|
WARNING='//\
|
|
// Float32 implementations are autogenerated and not directly tested.\
|
|
'
|
|
|
|
# Level1 routines.
|
|
|
|
echo Generating level1single.go
|
|
echo -e '// Code generated by "go generate gonum.org/v1/gonum/blas/native"; DO NOT EDIT.\n' > level1single.go
|
|
cat level1double.go \
|
|
| gofmt -r 'blas.Float64Level1 -> blas.Float32Level1' \
|
|
\
|
|
| gofmt -r 'float64 -> float32' \
|
|
| gofmt -r 'blas.DrotmParams -> blas.SrotmParams' \
|
|
\
|
|
| gofmt -r 'f64.AxpyInc -> f32.AxpyInc' \
|
|
| gofmt -r 'f64.AxpyIncTo -> f32.AxpyIncTo' \
|
|
| gofmt -r 'f64.AxpyUnitaryTo -> f32.AxpyUnitaryTo' \
|
|
| gofmt -r 'f64.DotUnitary -> f32.DotUnitary' \
|
|
| gofmt -r 'f64.ScalUnitary -> f32.ScalUnitary' \
|
|
\
|
|
| sed -e "s_^\(func (Implementation) \)D\(.*\)\$_$WARNING\1S\2_" \
|
|
-e 's_^// D_// S_' \
|
|
-e "s_^\(func (Implementation) \)Id\(.*\)\$_$WARNING\1Is\2_" \
|
|
-e 's_^// Id_// Is_' \
|
|
-e 's_"gonum.org/v1/gonum/internal/asm/f64"_"gonum.org/v1/gonum/internal/asm/f32"_' \
|
|
-e 's_"math"_math "gonum.org/v1/gonum/blas/native/internal/math32"_' \
|
|
>> level1single.go
|
|
|
|
echo Generating level1single_sdot.go
|
|
echo -e '// Code generated by "go generate gonum.org/v1/gonum/blas/native"; DO NOT EDIT.\n' > level1single_sdot.go
|
|
cat level1double_ddot.go \
|
|
| gofmt -r 'float64 -> float32' \
|
|
\
|
|
| gofmt -r 'f64.DotInc -> f32.DotInc' \
|
|
| gofmt -r 'f64.DotUnitary -> f32.DotUnitary' \
|
|
\
|
|
| sed -e "s_^\(func (Implementation) \)D\(.*\)\$_$WARNING\1S\2_" \
|
|
-e 's_^// D_// S_' \
|
|
-e 's_"gonum.org/v1/gonum/internal/asm/f64"_"gonum.org/v1/gonum/internal/asm/f32"_' \
|
|
>> level1single_sdot.go
|
|
|
|
echo Generating level1single_dsdot.go
|
|
echo -e '// Code generated by "go generate gonum.org/v1/gonum/blas/native"; DO NOT EDIT.\n' > level1single_dsdot.go
|
|
cat level1double_ddot.go \
|
|
| gofmt -r '[]float64 -> []float32' \
|
|
\
|
|
| gofmt -r 'f64.DotInc -> f32.DdotInc' \
|
|
| gofmt -r 'f64.DotUnitary -> f32.DdotUnitary' \
|
|
\
|
|
| sed -e "s_^\(func (Implementation) \)D\(.*\)\$_$WARNING\1Ds\2_" \
|
|
-e 's_^// D_// Ds_' \
|
|
-e 's_"gonum.org/v1/gonum/internal/asm/f64"_"gonum.org/v1/gonum/internal/asm/f32"_' \
|
|
>> level1single_dsdot.go
|
|
|
|
echo Generating level1single_sdsdot.go
|
|
echo -e '// Code generated by "go generate gonum.org/v1/gonum/blas/native"; DO NOT EDIT.\n' > level1single_sdsdot.go
|
|
cat level1double_ddot.go \
|
|
| gofmt -r 'float64 -> float32' \
|
|
\
|
|
| gofmt -r 'f64.DotInc(x, y, f(n), f(incX), f(incY), f(ix), f(iy)) -> alpha + float32(f32.DdotInc(x, y, f(n), f(incX), f(incY), f(ix), f(iy)))' \
|
|
| gofmt -r 'f64.DotUnitary(a, b) -> alpha + float32(f32.DdotUnitary(a, b))' \
|
|
\
|
|
| sed -e "s_^\(func (Implementation) \)D\(.*\)\$_$WARNING\1Sds\2_" \
|
|
-e 's_^// D\(.*\)$_// Sds\1 plus a constant_' \
|
|
-e 's_\\sum_alpha + \\sum_' \
|
|
-e 's/n int/n int, alpha float32/' \
|
|
-e 's_"gonum.org/v1/gonum/internal/asm/f64"_"gonum.org/v1/gonum/internal/asm/f32"_' \
|
|
>> level1single_sdsdot.go
|
|
|
|
|
|
# Level2 routines.
|
|
|
|
echo Generating level2single.go
|
|
echo -e '// Code generated by "go generate gonum.org/v1/gonum/blas/native"; DO NOT EDIT.\n' > level2single.go
|
|
cat level2double.go \
|
|
| gofmt -r 'blas.Float64Level2 -> blas.Float32Level2' \
|
|
\
|
|
| gofmt -r 'float64 -> float32' \
|
|
\
|
|
| gofmt -r 'Dscal -> Sscal' \
|
|
\
|
|
| gofmt -r 'f64.AxpyInc -> f32.AxpyInc' \
|
|
| gofmt -r 'f64.AxpyIncTo -> f32.AxpyIncTo' \
|
|
| gofmt -r 'f64.AxpyUnitary -> f32.AxpyUnitary' \
|
|
| gofmt -r 'f64.AxpyUnitaryTo -> f32.AxpyUnitaryTo' \
|
|
| gofmt -r 'f64.DotInc -> f32.DotInc' \
|
|
| gofmt -r 'f64.DotUnitary -> f32.DotUnitary' \
|
|
\
|
|
| sed -e "s_^\(func (Implementation) \)D\(.*\)\$_$WARNING\1S\2_" \
|
|
-e 's_^// D_// S_' \
|
|
-e 's_"gonum.org/v1/gonum/internal/asm/f64"_"gonum.org/v1/gonum/internal/asm/f32"_' \
|
|
>> level2single.go
|
|
|
|
|
|
# Level3 routines.
|
|
|
|
echo Generating level3single.go
|
|
echo -e '// Code generated by "go generate gonum.org/v1/gonum/blas/native"; DO NOT EDIT.\n' > level3single.go
|
|
cat level3double.go \
|
|
| gofmt -r 'blas.Float64Level3 -> blas.Float32Level3' \
|
|
\
|
|
| gofmt -r 'float64 -> float32' \
|
|
\
|
|
| gofmt -r 'f64.AxpyUnitaryTo -> f32.AxpyUnitaryTo' \
|
|
| gofmt -r 'f64.DotUnitary -> f32.DotUnitary' \
|
|
\
|
|
| sed -e "s_^\(func (Implementation) \)D\(.*\)\$_$WARNING\1S\2_" \
|
|
-e 's_^// D_// S_' \
|
|
-e 's_"gonum.org/v1/gonum/internal/asm/f64"_"gonum.org/v1/gonum/internal/asm/f32"_' \
|
|
>> level3single.go
|
|
|
|
echo Generating general_single.go
|
|
echo -e '// Code generated by "go generate gonum.org/v1/gonum/blas/native"; DO NOT EDIT.\n' > general_single.go
|
|
cat general_double.go \
|
|
| gofmt -r 'float64 -> float32' \
|
|
\
|
|
| gofmt -r 'general64 -> general32' \
|
|
| gofmt -r 'newGeneral64 -> newGeneral32' \
|
|
\
|
|
| sed -e 's/(g general64) print()/(g general32) print()/' \
|
|
-e 's_"math"_math "gonum.org/v1/gonum/blas/native/internal/math32"_' \
|
|
-e 's_"gonum.org/v1/gonum/internal/asm/f64"_"gonum.org/v1/gonum/internal/asm/f32"_' \
|
|
>> general_single.go
|
|
|
|
echo Generating sgemm.go
|
|
echo -e '// Code generated by "go generate gonum.org/v1/gonum/blas/native"; DO NOT EDIT.\n' > sgemm.go
|
|
cat dgemm.go \
|
|
| gofmt -r 'float64 -> float32' \
|
|
| gofmt -r 'general64 -> general32' \
|
|
| gofmt -r 'sliceView64 -> sliceView32' \
|
|
| gofmt -r 'checkMatrix64 -> checkMatrix32' \
|
|
\
|
|
| gofmt -r 'dgemmParallel -> sgemmParallel' \
|
|
| gofmt -r 'computeNumBlocks64 -> computeNumBlocks32' \
|
|
| gofmt -r 'dgemmSerial -> sgemmSerial' \
|
|
| gofmt -r 'dgemmSerialNotNot -> sgemmSerialNotNot' \
|
|
| gofmt -r 'dgemmSerialTransNot -> sgemmSerialTransNot' \
|
|
| gofmt -r 'dgemmSerialNotTrans -> sgemmSerialNotTrans' \
|
|
| gofmt -r 'dgemmSerialTransTrans -> sgemmSerialTransTrans' \
|
|
\
|
|
| gofmt -r 'f64.AxpyInc -> f32.AxpyInc' \
|
|
| gofmt -r 'f64.AxpyIncTo -> f32.AxpyIncTo' \
|
|
| gofmt -r 'f64.AxpyUnitaryTo -> f32.AxpyUnitaryTo' \
|
|
| gofmt -r 'f64.DotUnitary -> f32.DotUnitary' \
|
|
\
|
|
| sed -e "s_^\(func (Implementation) \)D\(.*\)\$_$WARNING\1S\2_" \
|
|
-e 's_^// D_// S_' \
|
|
-e 's_^// d_// s_' \
|
|
-e 's_"gonum.org/v1/gonum/internal/asm/f64"_"gonum.org/v1/gonum/internal/asm/f32"_' \
|
|
>> sgemm.go
|