#/*
#==============================================================================
#
# cg_d2_sc.h
#
#------------------------------------------------------------------------------
#
# Copyright (C) 2016 Hinnerk Stueben
#
# This file is part of BQCD -- Berlin Quantum ChromoDynamics program
#
# BQCD is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# BQCD is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with BQCD.  If not, see <http://www.gnu.org/licenses/>.
#
#------------------------------------------------------------------------------
#*/

# define SpincolIN Spincol_sc422
# define SpincolOUT Spincol_sc422
# define a_fwd a
# define a_bwd a

#ifdef LANGUAGE_FORTRAN
subroutine NAME(b, a, u_fwd, u_bwd, nn_fwd, nn_bwd, varsBLOCK)

   use module_simd
   implicit none
   integer, intent(in) :: varsBLOCK
   sc422_FLD, intent(inout) :: b
   sc422_FLD, intent(in) :: a
   g1_FLD, intent(in) :: u_fwd, u_bwd
   INTEGER, dimension(*), intent(in) :: nn_fwd, nn_bwd

# define ASSUME_ALIGNMENT assume_alignment4(b, a, u_fwd, u_bwd)
#endif

#ifdef LANGUAGE_C
void NAME(
    sc422_FLD b,
    sc422_FLD a,
    g1_FLD u_fwd,
    g1_FLD u_bwd,
    INTEGER nn_fwd[], 
    INTEGER nn_bwd[],
    varsBLOCK
    )

#define DEFINE_ADDITIONAL_POINTERS
#define SHIFT_POINTERS shift_6pointers(b, a, u_fwd, u_bwd, nn_fwd, nn_bwd)

#endif
