ack/lang/cem/ctest/ctdivers/ops.c
1987-02-09 16:57:40 +00:00

168 lines
4.7 KiB
C

/*
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
*
* This product is part of the Amsterdam Compiler Kit.
*
* Permission to use, sell, duplicate or disclose this software must be
* obtained in writing. Requests for such permissions may be sent to
*
* Dr. Andrew S. Tanenbaum
* Wiskundig Seminarium
* Vrije Universiteit
* Postbox 7161
* 1007 MC Amsterdam
* The Netherlands
*
*/
/* Author: E.G. Keizer */
char rcs_id[] = "$Header$" ;
main() {
assnull() ;
ushift() ;
lshift() ;
uadd() ;
return 0 ;
}
int a,b ;
assnull() {
int c,d ;
/* test a few cases handled especially by the cem-compiler */
a= -1 ; b= -1 ; c= -1 ; d = -1 ;
a=b=0 ;
c=d=0 ;
printf("a %d, b %d, c %d, d %d\n",a,b,c,d) ;
a = b = c = d = -32 ;
printf (" (a=0) %d, (c=0) %d\n",(a=0),(c=0) ) ;
printf("a %d, b %d, c %d, d %d\n",a,b,c,d) ;
}
ushift() {
unsigned u ;
printf("Unsigned shifts by constants\n") ;
u = 0150715 ;
printf(" u = %6o\n",u) ;
printf(" u>>0 %6o\n", u>>0 ) ;
printf(" u>>1 %6o\n", u>>1 ) ;
printf(" u>>2 %6o\n", u>>2 ) ;
printf(" u>>3 %6o\n", u>>3 ) ;
printf(" u>>4 %6o\n", u>>4 ) ;
printf(" u>>5 %6o\n", u>>5 ) ;
printf(" u>>6 %6o\n", u>>6 ) ;
printf(" u>>7 %6o\n", u>>7 ) ;
printf(" u>>8 %6o\n", u>>8 ) ;
printf(" u>>9 %6o\n", u>>9 ) ;
printf(" u>>10 %6o\n", u>>10 ) ;
printf(" u>>11 %6o\n", u>>11 ) ;
printf(" u>>12 %6o\n", u>>12 ) ;
printf(" u>>13 %6o\n", u>>13 ) ;
printf(" u>>14 %6o\n", u>>14 ) ;
printf(" u>>15 %6o\n", u>>15 ) ;
printf(" u>>16 %6o\n", u>>16 ) ;
printf(" u<<0 %6o\n", u<<0 ) ;
printf(" u<<1 %6o\n", u<<1 ) ;
printf(" u<<2 %6o\n", u<<2 ) ;
printf(" u<<3 %6o\n", u<<3 ) ;
printf(" u<<4 %6o\n", u<<4 ) ;
printf(" u<<5 %6o\n", u<<5 ) ;
printf(" u<<6 %6o\n", u<<6 ) ;
printf(" u<<7 %6o\n", u<<7 ) ;
printf(" u<<8 %6o\n", u<<8 ) ;
printf(" u<<9 %6o\n", u<<9 ) ;
printf(" u<<10 %6o\n", u<<10 ) ;
printf(" u<<11 %6o\n", u<<11 ) ;
printf(" u<<12 %6o\n", u<<12 ) ;
printf(" u<<13 %6o\n", u<<13 ) ;
printf(" u<<14 %6o\n", u<<14 ) ;
printf(" u<<15 %6o\n", u<<15 ) ;
printf(" u<<16 %6o\n", u<<16 ) ;
}
lshift() {
long ll ;
printf("Long shifts by constants\n") ;
ll = 400000L - 0532 ;
printf(" ll = %11lo\n",ll) ;
printf(" ll>>0 %11lo\n", ll>>0 ) ;
printf(" ll>>1 %11lo\n", ll>>1 ) ;
printf(" ll>>2 %11lo\n", ll>>2 ) ;
printf(" ll>>3 %11lo\n", ll>>3 ) ;
printf(" ll>>4 %11lo\n", ll>>4 ) ;
printf(" ll>>5 %11lo\n", ll>>5 ) ;
printf(" ll>>6 %11lo\n", ll>>6 ) ;
printf(" ll>>7 %11lo\n", ll>>7 ) ;
printf(" ll>>8 %11lo\n", ll>>8 ) ;
printf(" ll>>9 %11lo\n", ll>>9 ) ;
printf(" ll>>10 %11lo\n", ll>>10 ) ;
printf(" ll>>11 %11lo\n", ll>>11 ) ;
printf(" ll>>12 %11lo\n", ll>>12 ) ;
printf(" ll>>13 %11lo\n", ll>>13 ) ;
printf(" ll>>14 %11lo\n", ll>>14 ) ;
printf(" ll>>15 %11lo\n", ll>>15 ) ;
printf(" ll>>16 %11lo\n", ll>>16 ) ;
printf(" ll>>17 %11lo\n", ll>>17 ) ;
printf(" ll>>18 %11lo\n", ll>>18 ) ;
printf(" ll>>19 %11lo\n", ll>>19 ) ;
printf(" ll>>20 %11lo\n", ll>>20 ) ;
printf(" ll>>21 %11lo\n", ll>>21 ) ;
printf(" ll>>22 %11lo\n", ll>>22 ) ;
printf(" ll>>23 %11lo\n", ll>>23 ) ;
printf(" ll>>24 %11lo\n", ll>>24 ) ;
printf(" ll>>25 %11lo\n", ll>>25 ) ;
printf(" ll>>26 %11lo\n", ll>>26 ) ;
printf(" ll>>27 %11lo\n", ll>>27 ) ;
printf(" ll>>28 %11lo\n", ll>>28 ) ;
printf(" ll>>29 %11lo\n", ll>>29 ) ;
printf(" ll>>30 %11lo\n", ll>>30 ) ;
printf(" ll>>31 %11lo\n", ll>>31 ) ;
ll = 1 ;
printf(" ll<<0 %11lo\n", ll<<0 ) ;
printf(" ll<<1 %11lo\n", ll<<1 ) ;
printf(" ll<<2 %11lo\n", ll<<2 ) ;
printf(" ll<<3 %11lo\n", ll<<3 ) ;
printf(" ll<<4 %11lo\n", ll<<4 ) ;
printf(" ll<<5 %11lo\n", ll<<5 ) ;
printf(" ll<<6 %11lo\n", ll<<6 ) ;
printf(" ll<<7 %11lo\n", ll<<7 ) ;
printf(" ll<<8 %11lo\n", ll<<8 ) ;
printf(" ll<<9 %11lo\n", ll<<9 ) ;
printf(" ll<<10 %11lo\n", ll<<10 ) ;
printf(" ll<<11 %11lo\n", ll<<11 ) ;
printf(" ll<<12 %11lo\n", ll<<12 ) ;
printf(" ll<<13 %11lo\n", ll<<13 ) ;
printf(" ll<<14 %11lo\n", ll<<14 ) ;
printf(" ll<<15 %11lo\n", ll<<15 ) ;
printf(" ll<<16 %11lo\n", ll<<16 ) ;
printf(" ll<<17 %11lo\n", ll<<17 ) ;
printf(" ll<<18 %11lo\n", ll<<18 ) ;
printf(" ll<<19 %11lo\n", ll<<19 ) ;
printf(" ll<<20 %11lo\n", ll<<20 ) ;
printf(" ll<<21 %11lo\n", ll<<21 ) ;
printf(" ll<<22 %11lo\n", ll<<22 ) ;
printf(" ll<<23 %11lo\n", ll<<23 ) ;
printf(" ll<<24 %11lo\n", ll<<24 ) ;
printf(" ll<<25 %11lo\n", ll<<25 ) ;
printf(" ll<<26 %11lo\n", ll<<26 ) ;
printf(" ll<<27 %11lo\n", ll<<27 ) ;
printf(" ll<<28 %11lo\n", ll<<28 ) ;
printf(" ll<<29 %11lo\n", ll<<29 ) ;
printf(" ll<<30 %11lo\n", ll<<30 ) ;
}
uadd() {
unsigned u ;
int i ;
u = 32760 ;
for ( i=0 ; i<=16 ; ++i ) {
printf("%2d %6o\n",i,u+i) ;
}
}