Replace several POWER8/9 C kernels with their gcc7-generated assembly versions (...
authorMartin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Sun, 22 Sep 2019 20:35:22 +0000 (22:35 +0200)
committerGitHub <noreply@github.com>
Sun, 22 Sep 2019 20:35:22 +0000 (22:35 +0200)
commit673e5a049585f307fec09f38e8774d3ef902d239
treee6f898f87d049b869bbf8801787104000f5387e4
parentbfa2cc7d6411f16e1889bb7541159086949448c6
Replace several POWER8/9 C kernels with their gcc7-generated assembly versions (#2263)

* Add gcc7-generated assembly files for POWER8/9 isa/ica-min/max and POWER9 caxpy

To work around internal compiler errors encountered when compiling the original C source with gcc 4 and 5, and wrong code generated by gcc 8.3.0

* Use gcc-generated assembly instead of original C sources

to work around internal compiler errors encountered with gcc 4.8/5.4 and wrong code generation by gcc 8.3

* Use gcc-generated assembly instead of the original C source

to work around internal compiler errors encountered with gcc 4.8 and 5.4, and wrong code generation by gcc 8.3

* Add gcc7-generated assembler version of caxpy for power8

to work around wrong code generated by gcc 8.3

* Handle CONJ define for caxpyc

* Handle CONJ define for caxpyc

* Add gcc7-generated assembly cdot for POWER9

* Use prebuilt assembly for POWER9 cdot

created with gcc 7.3.1 to work around ICE in older gcc versions

* Exclude POWER9 from DYNAMIC_ARCH when gcc versions is lower than 6

* Update Makefile.system

* Use PROLOGUE macro to ensure correct function name for DYNAMIC_ARCH

* Disable POWER9 with old gcc versions
15 files changed:
Makefile.system
driver/others/dynamic_power.c
kernel/power/KERNEL.POWER8
kernel/power/KERNEL.POWER9
kernel/power/caxpy_power8.S [new file with mode: 0644]
kernel/power/caxpy_power9.S [new file with mode: 0644]
kernel/power/cdot_power9.S [new file with mode: 0644]
kernel/power/icamax_power8.S [new file with mode: 0644]
kernel/power/icamax_power9.S [new file with mode: 0644]
kernel/power/icamin_power8.S [new file with mode: 0644]
kernel/power/icamin_power9.S [new file with mode: 0644]
kernel/power/isamax_power8.S [new file with mode: 0644]
kernel/power/isamax_power9.S [new file with mode: 0644]
kernel/power/isamin_power8.S [new file with mode: 0644]
kernel/power/isamin_power9.S [new file with mode: 0644]