Example of SIMD Optimization Phases
static unsigned char sa,sr,sg,sb;
static short da,dr,dg,db;
static short k;
static void
hLineRight(unsigned char *p,int n,
unsigned char a,short ea,
unsigned char r,short er,
unsigned char g,short eg,
unsigned char b,short eb) {
while(n!=0) {
*p++=b; *p++=g; *p++=r; *p++=a;
a+=sa; r+=sr; g+=sg; b+=sb;
if((ea+=da)>=0) { a++; ea-=k; }
if((er+=dr)>=0) { r++; er-=k; }
if((eg+=dg)>=0) { g++; eg-=k; }
if((eb+=db)>=0) { b++; eb-=k; }
--n;
}
}
The main part of LIR for this program.