Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
elpa
elpa
Commits
8c56f6f9
Unverified
Commit
8c56f6f9
authored
May 19, 2016
by
Andreas Marek
Browse files
Auto-generated interfaces for assembly kernels
parent
4b7c1292
Changes
2
Hide whitespace changes
Inline
Side-by-side
generated_headers.am
View file @
8c56f6f9
define extract_interface
@echo "Generating $@...";
@grep -h "^ *$1" $^ | sed 's/^ *$1//;' > $@ || { rm $@; exit 1; }
@grep -h "^ *$1" $^ | sed 's/^ *$1//;' >
>
$@ || { rm $@; exit 1; }
endef
elpa test:
...
...
@@ -19,8 +19,9 @@ elpa/elpa_generated.h: $(top_srcdir)/src/elpa_c_interface.F90 | elpa
test/shared_sources/generated.h: $(wildcard $(top_srcdir)/test/shared_sources/*.F90) | test/shared_sources
$(call extract_interface,!c>)
elpa/elpa_generated_fortran_interfaces.h: $(wildcard $(top_srcdir)/src/elpa2_kernels/*.c) | elpa
elpa/elpa_generated_fortran_interfaces.h: $(wildcard $(top_srcdir)/src/elpa2_kernels/*.c)
$(wildcard $(top_srcdir)/src/elpa2_kernels/*.s)
| elpa
$(call extract_interface,!f>)
$(call extract_interface,#!f>)
generated_headers= config-f90.h elpa/elpa_generated.h test/shared_sources/generated.h elpa/elpa_generated_fortran_interfaces.h
generated-headers: $(generated_headers)
src/elpa2_kernels/elpa2_kernels_asm_x86_64.s
View file @
8c56f6f9
...
...
@@ -54,8 +54,8 @@
#
distributed
along
with
the
original
code
in
the
file
"COPYING"
.
#
#
--------------------------------------------------------------------------------------------------
.
globl
double_hh_trafo
_
.
globl
single_hh_trafo_complex
_
.
globl
double_hh_trafo
.
globl
single_hh_trafo_complex
.
text
#-------------------------------------------------------------------------------
...
...
@@ -382,8 +382,19 @@
#
parameter
6
:
%
r9
:
ldh
#
#-------------------------------------------------------------------------------
#!
f
>#
ifdef
WITH_REAL_SSE_ASSEMBLY_KERNEL
#!
f
>
interface
#!
f
>
subroutine
double_hh_trafo
(
q
,
hh
,
nb
,
nq
,
ldq
,
ldh
)
bind
(
C
,
name
=
"double_hh_trafo"
)
#!
f
>
use
,
intrinsic
::
iso_c_binding
#!
f
>
integer
(
kind
=
c_int
)
::
nb
,
nq
,
ldq
,
ldh
#!
f
>
real
(
kind
=
c_double
)
::
q
(*)
#!
f
>
real
(
kind
=
c_double
)
::
hh
(
nb
,
6
)
#!
f
>
end
subroutine
#!
f
>
end
interface
#!
f
>#
endif
.
align
16
,
0x90
double_hh_trafo
_
:
double_hh_trafo
:
#
Get
integer
parameters
into
corresponding
registers
...
...
@@ -698,8 +709,18 @@ return1:
#
parameter
5
:
%
r8
:
ldq
#
#-------------------------------------------------------------------------------
#!
f
>#
ifdef
WITH_COMPLEX_SSE_ASSEMBLY_KERNEL
#!
f
>
interface
#!
f
>
subroutine
single_hh_trafo_complex
(
q
,
hh
,
nb
,
nq
,
ldq
)
bind
(
C
,
name
=
"single_hh_trafo_complex"
)
#!
f
>
use
,
intrinsic
::
iso_c_binding
#!
f
>
integer
(
kind
=
c_int
)
::
nb
,
nq
,
ldq
#!
f
>
complex
(
kind
=
c_double
)
::
q
(*)
#!
f
>
complex
(
kind
=
c_double
)
::
hh
(
nb
,
2
)
#!
f
>
end
subroutine
#!
f
>
end
interface
#!
f
>#
endif
.
align
16
,
0x90
single_hh_trafo_complex
_
:
single_hh_trafo_complex
:
#
Get
integer
parameters
into
corresponding
registers
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment