/***************************************
$Header: /cvsroot/math-atlas/AtlasBase/kernel/CammMaguire/camm_tpipe.h,v 1.2 2003/10/18 18:13:30 yycamm Exp $
***************************************/
/* #ifndef CAMM_TPIPE_H */
/* #define CAMM_TPIPE_H */ /*+ To stop multiple inclusions. +*/
#ifndef BITS
#error BITS must be defined in camm_tpipe.h
#endif
#ifndef DIV
#error DIV must be defined in camm_tpipe.h
#endif
#ifndef INC
#error INC(a_) must be defined in camm_tpipe.h
#endif
#ifndef LR
#error LR must be defined in camm_tpipe.h
#endif
#ifdef ALIGN
#if defined(SREAL)
test(4,ax)
je(a2)
#undef KB
#define KB ( 1 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(4)
sub(1,LR)
lab(a2)
#endif
#if defined(SREAL) || defined(DREAL)
test(8,ax)
je(a4)
test(-2,LR)
je(a4)
#undef KB
#define KB ( 2 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(8)
sub(2,LR)
lab(a4)
#endif
#endif
/* "movl %%edx,%%edi\n\t" */
push(LR)
shr(BITS,LR)
shl(BITS,LR)
m(4,LR)
ra(ax,LR)
#if defined(ALIGN) && ( defined(SCPLX) || defined(DCPLX) )
test(12,ax)
je(loopa)
#endif
#if !defined(ALIGN) || defined(SCPLX) || defined(DCPLX)
#undef plq
#define plq(a_,b_,c_) pl(a_,b_,c_)
#undef puq
#define puq(a_,b_,c_) pu(a_,b_,c_)
#undef plqx
#define plqx(a_,b_,c_,d_,e_) plx(a_,b_,c_,d_,e_)
#undef puqx
#define puqx(a_,b_,c_,d_,e_) pux(a_,b_,c_,d_,e_)
#else
#undef plq
#define plq(a_,b_,c_) pla(a_,b_,c_)
#undef puq
#define puq(a_,b_,c_) punt(a_,b_,c_)
#undef plqx
#define plqx(a_,b_,c_,d_,e_) plax(a_,b_,c_,d_,e_)
#undef puqx
#define puqx(a_,b_,c_,d_,e_) puax(a_,b_,c_,d_,e_)
#endif
align
lab(loop)
cmp(ax,LR)
je(stop)
#undef KB
#define KB ( (1 << BITS) /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(4*KB/**DIV*/)
jmp(loop)
lab(stop)
pop(LR)
#if ( 1 << BITS ) > 128
test(128,LR)
je(64)
#undef KB
#define KB ( 128 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(512)
lab(64)
#endif
#if ( 1 << BITS ) > 64
test(64,LR)
je(32)
#undef KB
#define KB ( 64 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(256)
lab(32)
#endif
#if ( 1 << BITS ) > 32
test(32,LR)
je(16)
#undef KB
#define KB ( 32 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(128)
lab(16)
#endif
#if ( 1 << BITS ) > 16
test(16,LR)
je(8)
#undef KB
#define KB ( 16 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(64)
lab(8)
#endif
#if ( 1 << BITS ) > 8
test(8,LR)
je(4)
#undef KB
#define KB ( 8 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(32)
lab(4)
#endif
#if ( 1 << BITS ) > 4
test(4,LR)
je(2)
#undef KB
#define KB ( 4 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(16)
lab(2)
#endif
#if DIV != 4 && ( 1 << BITS ) > 2
test(2,LR)
je(1)
#undef KB
#define KB ( 2 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(8)
lab(1)
#endif
#if DIV == 1 && ( 1 << BITS ) > 1
test(1,LR)
je(end)
#undef KB
#define KB ( 1 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
lab(end)
#endif
#if defined (ALIGN) && ( defined(SCPLX) || defined(DCPLX) )
jmp(tend)
#undef plq
#define plq(a_,b_,c_) pla(a_,b_,c_)
#undef puq
#define puq(a_,b_,c_) punt(a_,b_,c_)
#undef plqx
#define plqx(a_,b_,c_,d_,e_) plax(a_,b_,c_,d_,e_)
#undef puqx
#define puqx(a_,b_,c_,d_,e_) puax(a_,b_,c_,d_,e_)
align
lab(loopa)
cmp(ax,LR)
je(stopa)
#undef KB
#define KB ( (1 << BITS) /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(4*KB/**DIV*/)
jmp(loopa)
lab(stopa)
pop(LR)
#if ( 1 << BITS ) > 128
test(128,LR)
je(64a)
#undef KB
#define KB ( 128 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(512)
lab(64a)
#endif
#if ( 1 << BITS ) > 64
test(64,LR)
je(32a)
#undef KB
#define KB ( 64 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(256)
lab(32a)
#endif
#if ( 1 << BITS ) > 32
test(32,LR)
je(16a)
#undef KB
#define KB ( 32 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(128)
lab(16a)
#endif
#if ( 1 << BITS ) > 16
test(16,LR)
je(8a)
#undef KB
#define KB ( 16 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(64)
lab(8a)
#endif
#if ( 1 << BITS ) > 8
test(8,LR)
je(4a)
#undef KB
#define KB ( 8 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(32)
lab(4a)
#endif
#if ( 1 << BITS ) > 4
test(4,LR)
je(2a)
#undef KB
#define KB ( 4 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(16)
lab(2a)
#endif
#if DIV != 4 && ( 1 << BITS ) > 2
test(2,LR)
je(1a)
#undef KB
#define KB ( 2 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
INC(8)
lab(1a)
#endif
#if DIV == 1 && ( 1 << BITS ) > 1
test(1,LR)
je(enda)
#undef KB
#define KB ( 1 /* / DIV */ )
#include "camm_pipe3.h"
KB_block
lab(enda)
#endif
lab(tend)
#endif
/* #endif */ /* CAMM_TPIPE_H */