This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

"Fast-Regs" GCC extensions proposal: part #1 [missing attachments!]



Ooops!
Sorry,
here are two attachments missing in the first mail!
;)

bye
bp
// dirac_qphi.cc  --  phi[j] = Q phi[k]
//
// where Q is gamma_5 times Wilson-Dirac opeartor with boundary phases
//
// hs 12/98
//
// $Id: $
// ---------------------------------------------------------

#include "dirac_qphi.h"


void  dirac_qphi2(int k,int j) 
{

  int ipx, ipy, ipz, imx, imy, imz;
  int is, ix, it;

#ifdef GCC_COMPLEX
  COMPLEX_TYPE  rc0,rk0,rk1,rk2;
#else
  FLOAT_TYPE  rc0,rk0,rk1,rk2;
#endif
  su3*        pu;
  su3_spinor  *pp, *pres;
  su3_vector  psi_a, psi_b, chi_a, chi_b;


#define P1 (*pp).v1
#define P2 (*pp).v2
#define P3 (*pp).v3
#define P4 (*pp).v4

#define R1 (*pres).v1
#define R2 (*pres).v2
#define R3 (*pres).v3
#define R4 (*pres).v4

#define CHI_A chi_a
#define CHI_B chi_b
#define PSI_A psi_a
#define PSI_B psi_b

  for (ix=0; ix < vol3-1; ix++ ) 
    {
      ipx = next_px[ix];
      ipy = next_py[ix];
      ipz = next_pz[ix];
      imx = next_mx[ix];
      imy = next_my[ix];
      imz = next_mz[ix];
       
      for (it = 0; it < time_size-1; it++ ) 
	{ // it=1 ... for SFBC
	  rk2 = dirac_k2;
	  rk1 = dirac_k1;
	  rc0 = dirac_c0;  // rk0 = dirac_k0   //!! was for SFBC
	 
	  // contribution of the direction +1 (+x):
	  // --------------------------------------
	  pp = &phi[k][it][ipx];
	  pu = &u[it][ix][1];
	  pres = &phi[j][it][ix];
	  *(pres) = phi[k][it][ix]; 
#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, +I , P4 );
	  V_M_V( CHI_A, (*pu), PSI_A );

	  V_V_F_R_V( PSI_A, = CHI_A, +IR, rk2, CHI_A );
	  V_V (     R1, -=      rk1 * PSI_A );

	  V_F_R_V ( R4, +=  IR, rk1 , PSI_A );

	  V_V_F_V( PSI_B, = P2, +I , P3 );
	  V_M_V( CHI_B, (*pu), PSI_B );
	  V_V_F_R_V( PSI_B, = CHI_B, +IR, rk2, CHI_B );

	  V_V (     R2, -=      rk1 * PSI_B );
	  V_F_R_V ( R3, +=  IR, rk1 , PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, +I , P4 );
	  V_V_F_V( PSI_B, = P2, +I , P3 );

	  V_M_V( CHI_A, (*pu), PSI_A );
	  V_M_V( CHI_B, (*pu), PSI_B );

	  V_V_F_R_V( PSI_A, = CHI_A, +IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, +IR, rk2, CHI_B );

	  V_V (     R1, -=      rk1 * PSI_A );
	  V_V (     R2, -=      rk1 * PSI_B );
	  V_F_R_V ( R3, +=  IR, rk1 , PSI_B );
	  V_F_R_V ( R4, +=  IR, rk1 , PSI_A );
#endif

	  // contribution of the direction -1 (-x):
	  // --------------------------------------
	       
	  pp = &phi[k][it][imx];
	  pu   = &u[it][imx][1];
	       
#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, -I, P4 );
	  V_MC_V( CHI_A, (*pu), PSI_A );
	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );
	  V_V (     R1, -=     rk1* PSI_A );

	  V_F_R_V ( R4, -= IR, rk1, PSI_A );

	  V_V_F_V( PSI_B, = P2, -I, P3 );
	  V_MC_V( CHI_B, (*pu), PSI_B );
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V (     R2, -=     rk1* PSI_B );
	  V_F_R_V ( R3, -= IR, rk1, PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, -I, P4 );
	  V_V_F_V( PSI_B, = P2, -I, P3 );

	  V_MC_V( CHI_A, (*pu), PSI_A );
	  V_MC_V( CHI_B, (*pu), PSI_B );

	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V (     R1, -=     rk1* PSI_A );
	  V_V (     R2, -=     rk1* PSI_B );
	  V_F_R_V ( R3, -= IR, rk1, PSI_B );
	  V_F_R_V ( R4, -= IR, rk1, PSI_A );
#endif	      

	  // contribution of the direction +2 (+y):
	  // --------------------------------------

	  pp = &phi[k][it][ipy];
	  pu   = &u[it][ix][2];

#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, +, P4);
	  V_M_V( CHI_A, (*pu), PSI_A );
	  V_V_F_R_V( PSI_A, = CHI_A, + IR, rk2, CHI_A );

	  V_V ( R1, -= rk1 * PSI_A );
	  V_V ( R4, -= rk1 * PSI_A );

	  V_V_F_V( PSI_B, = P2, -, P3);
	  V_M_V( CHI_B, (*pu), PSI_B );
	  V_V_F_R_V( PSI_B, = CHI_B, + IR, rk2, CHI_B );

	  V_V ( R2, -= rk1 * PSI_B );
	  V_V ( R3, += rk1 * PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, +, P4);
	  V_V_F_V( PSI_B, = P2, -, P3);

	  V_M_V( CHI_A, (*pu), PSI_A );
	  V_M_V( CHI_B, (*pu), PSI_B );

	  V_V_F_R_V( PSI_A, = CHI_A, + IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, + IR, rk2, CHI_B );

	  V_V ( R1, -= rk1 * PSI_A );
	  V_V ( R2, -= rk1 * PSI_B );
	  V_V ( R3, += rk1 * PSI_B );
	  V_V ( R4, -= rk1 * PSI_A );
#endif

	  // contribution of the direction  -2 (-y):
	  // ---------------------------------------
	  pp = &phi[k][it][imy];
	  pu   = &u[it][imy][2];

#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, -, P4 );
	  V_MC_V( CHI_A, (*pu), PSI_A );
	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );

	  V_V ( R1, -= rk1*PSI_A );
	  V_V ( R4, += rk1*PSI_A );

	  V_V_F_V( PSI_B, = P2, +, P3 );
	  V_MC_V( CHI_B, (*pu), PSI_B );
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V ( R2, -= rk1*PSI_B );
	  V_V ( R3, -= rk1*PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, -, P4 );
	  V_V_F_V( PSI_B, = P2, +, P3 );

	  V_MC_V( CHI_A, (*pu), PSI_A );
	  V_MC_V( CHI_B, (*pu), PSI_B );

	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V ( R1, -= rk1*PSI_A );
	  V_V ( R2, -= rk1*PSI_B );
	  V_V ( R3, -= rk1*PSI_B );
	  V_V ( R4, += rk1*PSI_A );
#endif

	  // contribution of the direction +3 (+z):
	  // --------------------------------------
	  pp = &phi[k][it][ipz];
	  pu   = &u[it][ix][3];

#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, +I, P3 );
	  V_M_V( CHI_A, (*pu), PSI_A );
	  V_V_F_R_V( PSI_A, = CHI_A, + IR, rk2, CHI_A );

	  V_V (     R1, -=     rk1 * PSI_A );
	  V_F_R_V ( R3, += IR, rk1 , PSI_A );

	  V_V_F_V( PSI_B, = P2, -I, P4 );
	  V_M_V( CHI_B, (*pu), PSI_B );
	  V_V_F_R_V( PSI_B, = CHI_B, + IR, rk2, CHI_B );

	  V_V (     R2, -=     rk1 * PSI_B );
	  V_F_R_V ( R4, -= IR, rk1 , PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, +I, P3 );
	  V_V_F_V( PSI_B, = P2, -I, P4 );

	  V_M_V( CHI_A, (*pu), PSI_A );
	  V_M_V( CHI_B, (*pu), PSI_B );

	  V_V_F_R_V( PSI_A, = CHI_A, + IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, + IR, rk2, CHI_B );

	  V_V (     R1, -=     rk1 * PSI_A );
	  V_V (     R2, -=     rk1 * PSI_B );
	  V_F_R_V ( R3, += IR, rk1 , PSI_A );
	  V_F_R_V ( R4, -= IR, rk1 , PSI_B );
#endif
	  // contribution of the direction  -3 (-z):
	  // ---------------------------------------
	  pp = &phi[k][it][imz];
	  pu   = &u[it][imz][3];

#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, -I, P3 );
	  V_MC_V( CHI_A, (*pu), PSI_A );
	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );

	  V_V (     R1, -=     rk1 * PSI_A );
	  V_F_R_V ( R3, -= IR, rk1 , PSI_A );

	  V_V_F_V( PSI_B, = P2, +I, P4 );
	  V_MC_V( CHI_B, (*pu), PSI_B );
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V (     R2, -=     rk1 * PSI_B );
	  V_F_R_V ( R4, += IR, rk1 , PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, -I, P3 );
	  V_V_F_V( PSI_B, = P2, +I, P4 );

	  V_MC_V( CHI_A, (*pu), PSI_A );
	  V_MC_V( CHI_B, (*pu), PSI_B );

	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V (     R1, -=     rk1 * PSI_A );
	  V_V (     R2, -=     rk1 * PSI_B );
	  V_F_R_V ( R3, -= IR, rk1 , PSI_A );
	  V_F_R_V ( R4, += IR, rk1 , PSI_B );
#endif

	  // contribution of the direction +0 (+t):
	  // --------------------------------------
	  rk0 = dirac_k0*dirac_apbcp[it];
	  is  = next_pt[it];

	  pp = &phi[k][is][ix];
	  pu = &u[it][ix][0];

#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, +, P3 );
	  V_M_V( CHI_A, (*pu), PSI_A );

	  V_V ( R1, -= rk0*CHI_A );
	  V_V ( R3, -= rk0*CHI_A );
	  V_V_F_V( PSI_B, = P2, +, P4 );
	  V_M_V( CHI_B, (*pu), PSI_B );

	  V_V ( R2, -= rk0*CHI_B );
	  V_V ( R4, -= rk0*CHI_B );
#else
	  V_V_F_V( PSI_A, = P1, +, P3 );
	  V_V_F_V( PSI_B, = P2, +, P4 );

	  V_M_V( CHI_A, (*pu), PSI_A );
	  V_M_V( CHI_B, (*pu), PSI_B );

	  V_V ( R1, -= rk0*CHI_A );
	  V_V ( R2, -= rk0*CHI_B );
	  V_V ( R3, -= rk0*CHI_A );
	  V_V ( R4, -= rk0*CHI_B );
#endif

	  // contribution of the direction -0 (-t):
	  // --------------------------------------
	  rk0 = dirac_k0*dirac_apbcm[it];
	  is = next_mt[it];

	  pp = &phi[k][is][ix];
	  pu = &u[is][ix][0];
	       
#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, -, P3 );
	  V_MC_V( CHI_A, (*pu), PSI_A );
	       
	  V_V ( R1, -= rk0*CHI_A );
	  V_V ( R3, += rk0*CHI_A );
	       
	  V_V_F_V( PSI_B, = P2, -, P4 ); // ca
	  V_MC_V( CHI_B, (*pu), PSI_B );

	  V_V ( R2, -= rk0*CHI_B );
	  V_V ( R4, += rk0*CHI_B ); 
#else
	  V_V_F_V( PSI_A, = P1, -, P3 );
	  V_V_F_V( PSI_B, = P2, -, P4 );

	  V_MC_V( CHI_A, (*pu), PSI_A );
	  V_MC_V( CHI_B, (*pu), PSI_B );

	  V_V ( R1, -= rk0*CHI_A );
	  V_V ( R2, -= rk0*CHI_B );
	  V_V ( R3, += rk0*CHI_A );
	  V_V ( R4, += rk0*CHI_B ); 
#endif
	  // multiplication with prefactor and gamma_5:
	  // ------------------------------------------
	  V_V ( R1,  =   rc0 * R1 );
	  V_V ( R2,  =   rc0 * R2 );
	  V_V ( R3,  = - rc0 * R3 );
	  V_V ( R4,  = - rc0 * R4 );  

	  phi[j][it][ix] = *pres;
	}
    }        
}
// ------------------------------ EOF ---------------------------------


// dirac_qphi.cc  --  phi[j] = Q phi[k]
//
// where Q is gamma_5 times Wilson-Dirac opeartor with boundary phases
//
// hs 12/98
//
// $Id: $       With "register struct"
// ---------------------------------------------------------
#include "global.h"
#include "dirac_qphi.h"
complex ciccio;

void dirac_qphi2(int k,int j) 
{
  register int ipx, ipy, ipz, imx, imy, imz;
  register int is, ix, it;

#ifdef GCC_COMPLEX
  register complex  rc0,rk0,rk1,rk2;
#else
  register FLOAT_TYPE  rc0,rk0,rk1,rk2;
#endif
  register su3         pu;
  register su3_spinor  pp, pres;
  register su3_vector  psi_a, psi_b, chi_a, chi_b;

#define P1 pp.v1
#define P2 pp.v2
#define P3 pp.v3
#define P4 pp.v4
#define R1 pres.v1
#define R2 pres.v2
#define R3 pres.v3
#define R4 pres.v4

#define CHI_A chi_a
#define CHI_B chi_b
#define PSI_A psi_a
#define PSI_B psi_b

  for (ix=0; ix < vol3-1; ix++ ) 
    {
      ipx = next_px[ix];
      ipy = next_py[ix];
      ipz = next_pz[ix];
      imx = next_mx[ix];
      imy = next_my[ix];
      imz = next_mz[ix];

      for (it = 0 ; it < time_size-1; it++ ) 
	{ // it=1 ... for SFBC
	  rk2 = dirac_k2;
	  rk1 = dirac_k1;
	  rc0 = dirac_c0;  // rk0 = dirac_k0   //!! was for SFBC

	  // contribution of the direction +1 (+x):
	  // --------------------------------------
	  pp = phi[k][it][ipx];    //load pp
	  pu = u[it][ix][1];       //load pu

	  pres = phi[k][it][ix];  //load pres 
#ifdef SWAP
	  V_V_F_V(PSI_A,= P1,+I,P4);
	  V_M_V( CHI_A, pu, PSI_A );
	  V_V_F_R_V( PSI_A, = CHI_A, +IR, rk2, CHI_A );
	  V_V (     R1, -=      rk1 * PSI_A );
	  V_F_R_V ( R4, +=  IR, rk1 , PSI_A );

	  V_V_F_V( PSI_B, = P2, +I , P3 );
	  V_M_V( CHI_B, (pu), PSI_B );
	  V_V_F_R_V( PSI_B, = CHI_B, +IR, rk2, CHI_B );
	  V_V (     R2, -=      rk1 * PSI_B );
	  V_F_R_V ( R3, +=  IR, rk1 , PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, +I , P4 );
	  V_V_F_V( PSI_B, = P2, +I , P3 );

	  V_M_V( CHI_A, (pu), PSI_A );
	  V_M_V( CHI_B, (pu), PSI_B );

	  V_V_F_R_V( PSI_A, = CHI_A, +IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, +IR, rk2, CHI_B );

	  V_V (     R1, -=      rk1 * PSI_A );
	  V_V (     R2, -=      rk1 * PSI_B );
	  V_F_R_V ( R3, +=  IR, rk1 , PSI_B );
	  V_F_R_V ( R4, +=  IR, rk1 , PSI_A );
#endif
	  
	  // contribution of the direction -1 (-x):
	  // --------------------------------------
	       
	  pp = phi[k][it][imx];
	  pu = u[it][imx][1];	       
#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, -I, P4 );
	  V_MC_V( CHI_A, (pu), PSI_A );               
	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );
	  V_V (     R1, -=     rk1* PSI_A );

	  V_F_R_V ( R4, -= IR, rk1, PSI_A );

	  V_V_F_V( PSI_B, = P2, -I, P3 );
	  V_MC_V( CHI_B, (pu), PSI_B );           
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V (     R2, -=     rk1* PSI_B );
	  V_F_R_V ( R3, -= IR, rk1, PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, -I, P4 );
	  V_V_F_V( PSI_B, = P2, -I, P3 );

	  V_MC_V( CHI_A, (pu), PSI_A );         
	  V_MC_V( CHI_B, (pu), PSI_B );         

	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V (     R1, -=     rk1* PSI_A );
	  V_V (     R2, -=     rk1* PSI_B );
	  V_F_R_V ( R3, -= IR, rk1, PSI_B );
	  V_F_R_V ( R4, -= IR, rk1, PSI_A );
#endif	      

	  // contribution of the direction +2 (+y):
	  // --------------------------------------

	  pp = phi[k][it][ipy];
	  pu = u[it][ix][2];

#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, +, P4);
	  V_M_V( CHI_A, (pu), PSI_A );
	  V_V_F_R_V( PSI_A, = CHI_A, + IR, rk2, CHI_A );

	  V_V ( R1, -= rk1 * PSI_A );
	  V_V ( R4, -= rk1 * PSI_A );

	  V_V_F_V( PSI_B, = P2, -, P3);
	  V_M_V( CHI_B, (pu), PSI_B );
	  V_V_F_R_V( PSI_B, = CHI_B, + IR, rk2, CHI_B );

	  V_V ( R2, -= rk1 * PSI_B );
	  V_V ( R3, += rk1 * PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, +, P4);
	  V_V_F_V( PSI_B, = P2, -, P3);

	  V_M_V( CHI_A, (pu), PSI_A );
	  V_M_V( CHI_B, (pu), PSI_B );

	  V_V_F_R_V( PSI_A, = CHI_A, + IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, + IR, rk2, CHI_B );

	  V_V ( R1, -= rk1 * PSI_A );
	  V_V ( R2, -= rk1 * PSI_B );
	  V_V ( R3, += rk1 * PSI_B );
	  V_V ( R4, -= rk1 * PSI_A );
#endif

	  // contribution of the direction  -2 (-y):
	  // ---------------------------------------
	  pp = phi[k][it][imy];
	  pu = u[it][imy][2];
#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, -, P4 );
	  V_MC_V( CHI_A, (pu), PSI_A );                        
	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );

	  V_V ( R1, -= rk1*PSI_A );
	  V_V ( R4, += rk1*PSI_A );

	  V_V_F_V( PSI_B, = P2, +, P3 );
	  V_MC_V( CHI_B, (pu), PSI_B );                   
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V ( R2, -= rk1*PSI_B );
	  V_V ( R3, -= rk1*PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, -, P4 );
	  V_V_F_V( PSI_B, = P2, +, P3 );

	  V_MC_V( CHI_A, (pu), PSI_A );                   
	  V_MC_V( CHI_B, (pu), PSI_B );                   

	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V ( R1, -= rk1*PSI_A );
	  V_V ( R2, -= rk1*PSI_B );
	  V_V ( R3, -= rk1*PSI_B );
	  V_V ( R4, += rk1*PSI_A );
#endif

	  // contribution of the direction +3 (+z):
	  // --------------------------------------
	  pp = phi[k][it][ipz];
	  pu = u[it][ix][3];

#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, +I, P3 );
	  V_M_V( CHI_A, (pu), PSI_A );
	  V_V_F_R_V( PSI_A, = CHI_A, + IR, rk2, CHI_A );

	  V_V (     R1, -=     rk1 * PSI_A );
	  V_F_R_V ( R3, += IR, rk1 , PSI_A );

	  V_V_F_V( PSI_B, = P2, -I, P4 );
	  V_M_V( CHI_B, (pu), PSI_B );
	  V_V_F_R_V( PSI_B, = CHI_B, + IR, rk2, CHI_B );

	  V_V (     R2, -=     rk1 * PSI_B );
	  V_F_R_V ( R4, -= IR, rk1 , PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, +I, P3 );
	  V_V_F_V( PSI_B, = P2, -I, P4 );

	  V_M_V( CHI_A, (pu), PSI_A );
	  V_M_V( CHI_B, (pu), PSI_B );

	  V_V_F_R_V( PSI_A, = CHI_A, + IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, + IR, rk2, CHI_B );

	  V_V (     R1, -=     rk1 * PSI_A );
	  V_V (     R2, -=     rk1 * PSI_B );
	  V_F_R_V ( R3, += IR, rk1 , PSI_A );
	  V_F_R_V ( R4, -= IR, rk1 , PSI_B );
#endif

	  // contribution of the direction  -3 (-z):
	  // ---------------------------------------
	  pp = phi[k][it][imz];
	  pu = u[it][imz][3];

#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, -I, P3 );
	  V_MC_V( CHI_A, (pu), PSI_A );           
	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );

	  V_V (     R1, -=     rk1 * PSI_A );
	  V_F_R_V ( R3, -= IR, rk1 , PSI_A );

	  V_V_F_V( PSI_B, = P2, +I, P4 );
	  V_MC_V( CHI_B, (pu), PSI_B );            
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V (     R2, -=     rk1 * PSI_B );
	  V_F_R_V ( R4, += IR, rk1 , PSI_B );
#else
	  V_V_F_V( PSI_A, = P1, -I, P3 );
	  V_V_F_V( PSI_B, = P2, +I, P4 );

	  V_MC_V( CHI_A, (pu), PSI_A );           
	  V_MC_V( CHI_B, (pu), PSI_B );            

	  V_V_F_R_V( PSI_A, = CHI_A, - IR, rk2, CHI_A );
	  V_V_F_R_V( PSI_B, = CHI_B, - IR, rk2, CHI_B );

	  V_V (     R1, -=     rk1 * PSI_A );
	  V_V (     R2, -=     rk1 * PSI_B );
	  V_F_R_V ( R3, -= IR, rk1 , PSI_A );
	  V_F_R_V ( R4, += IR, rk1 , PSI_B );
#endif

	  // contribution of the direction +0 (+t):
	  // --------------------------------------
	  rk0 = dirac_k0*dirac_apbcp[it];
	  is  = next_pt[it];

	  pp = phi[k][is][ix];
	  pu = u[it][ix][0];

#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, +, P3 );
	  V_M_V( CHI_A, (pu), PSI_A );

	  V_V ( R1, -= rk0*CHI_A );
	  V_V ( R3, -= rk0*CHI_A );
	  V_V_F_V( PSI_B, = P2, +, P4 );
	  V_M_V( CHI_B, (pu), PSI_B );

	  V_V ( R2, -= rk0*CHI_B );
	  V_V ( R4, -= rk0*CHI_B );
#else
	  V_V_F_V( PSI_A, = P1, +, P3 );
	  V_V_F_V( PSI_B, = P2, +, P4 );

	  V_M_V( CHI_A, (pu), PSI_A );
	  V_M_V( CHI_B, (pu), PSI_B );

	  V_V ( R1, -= rk0*CHI_A );
	  V_V ( R2, -= rk0*CHI_B );
	  V_V ( R3, -= rk0*CHI_A );
	  V_V ( R4, -= rk0*CHI_B );
#endif
	  // contribution of the direction -0 (-t):
	  // --------------------------------------
	  rk0 = dirac_k0*dirac_apbcm[it];
	  is = next_mt[it];

	  pp = phi[k][is][ix];
	  pu = u[is][ix][0];	       
#ifdef SWAP
	  V_V_F_V( PSI_A, = P1, -, P3 );
	  V_MC_V( CHI_A, (pu), PSI_A );           
	       
	  V_V ( R1, -= rk0*CHI_A );
	  V_V ( R3, += rk0*CHI_A );
	       
	  V_V_F_V( PSI_B, = P2, -, P4 );
	  V_MC_V( CHI_B, (pu), PSI_B );             

	  V_V ( R2, -= rk0*CHI_B );
	  V_V ( R4, += rk0*CHI_B ); 
#else
	  V_V_F_V( PSI_A, = P1, -, P3 );
	  V_V_F_V( PSI_B, = P2, -, P4 );

	  V_MC_V( CHI_A, (pu), PSI_A );              
	  V_MC_V( CHI_B, (pu), PSI_B );              

	  V_V ( R1, -= rk0*CHI_A );
	  V_V ( R2, -= rk0*CHI_B );
	  V_V ( R3, += rk0*CHI_A );
	  V_V ( R4, += rk0*CHI_B ); 
#endif

	  // multiplication with prefactor and gamma_5:
	  // ------------------------------------------
	  V_OPC ( R1,  *=   rc0 );
	  V_OPC ( R2,  *=   rc0 );
	  V_OPC ( R3,  *= - rc0 );
	  V_OPC ( R4,  *= - rc0 );  

	  phi[j][it][ix] = pres;
	}
    }        
}

// ------------------------------ EOF ---------------------------------



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]