home *** CD-ROM | disk | FTP | other *** search
- #include "vsc.h"
-
- char tg_copyright[]="Alpha scheduler V0.0 (c) in 1997 by Volker Barthelmann";
-
- int sched_init(void)
- {
- return 1;
- }
- void sched_cleanup(void)
- {
- }
- int sched_info(struct sinfo *p)
- {
- char buf[20];int q1,q2,z,i;
- if(sscanf(p->txt,"$C%d:",&i)==1){
- p->label=i;
- p->flags=LABEL;
- return 1;
- }
- /* lda $r1,imm($r2) */
- if(sscanf(p->txt,"lda $%d,%d($%d)",&z,&i,&q1)==3){
- p->latency=1;
- BSET(p->pipes,0);
- BSET(p->pipes,1);
- BSET(p->uses,q1);
- BSET(p->modifies,z);
- return 1;
- }
- /* lda $r1,... */
- if(sscanf(p->txt,"lda $%d,",&z)==1){
- BSET(p->pipes,0);
- BSET(p->pipes,1);
- BSET(p->modifies,z);
- return 1;
- }
- /* op $r1,$r2,$r3 */
- if(sscanf(p->txt,"%19s $%d,$%d,$%d",buf,&q1,&q2,&z)==4){
- p->latency=1;
- BSET(p->pipes,0);
- BSET(p->pipes,1);
- BSET(p->uses,q1);
- BSET(p->uses,q2);
- BSET(p->modifies,z);
- return 1;
- }
- /* op $r1,$r2 */
- if(sscanf(p->txt,"%19s $%d,$%d",buf,&q1,&z)==3){
- p->latency=1;
- BSET(p->pipes,0);
- BSET(p->pipes,1);
- BSET(p->uses,q1);
- BSET(p->modifies,z);
- return 1;
- }
- /* op $r1,imm,$r2 */
- if(sscanf(p->txt,"%19s $%d,%d,$%d",buf,&q1,&i,&z)==4){
- p->latency=1;
- BSET(p->pipes,0);
- BSET(p->pipes,1);
- BSET(p->uses,q1);
- BSET(p->modifies,z);
- return 1;
- }
- /* op $fr1,$fr2,$fr3 */
- if(sscanf(p->txt,"%19s $f%d,$f%d,$f%d",buf,&q1,&q2,&z)==4){
- p->latency=1;
- BSET(p->pipes,2);
- BSET(p->pipes,3);
- BSET(p->uses,q1+32);
- BSET(p->uses,q2+32);
- BSET(p->modifies,z+32);
- return 1;
- }
- /* load/store $r1,c($r2) */
- if(sscanf(p->txt,"%19s $%d,%d($%d)",buf,&z,&i,&q1)==4){
- p->latency=3;
- BSET(p->pipes,0);
- BSET(p->uses,q1);
- if(*buf=='l'){
- BSET(p->pipes,1);
- BSET(p->modifies,z);
- BSET(p->uses,MEM);
- }else{
- BSET(p->uses,z);
- BSET(p->modifies,MEM);
- }
- return 1;
- }
- /* load/store $fr1,c($r2) */
- if(sscanf(p->txt,"%19s $f%d,%d($%d)",buf,&z,&i,&q1)==4){
- p->latency=3;
- BSET(p->pipes,0);
- BSET(p->uses,q1);
- if(*buf=='l'){
- BSET(p->pipes,1);
- BSET(p->modifies,z+32);
- BSET(p->uses,MEM);
- }else{
- BSET(p->uses,z+32);
- BSET(p->modifies,MEM);
- }
- return 1;
- }
- p->flags=BARRIER;
- return 1;
- }
-