/*---------------------------------------------------------*\ Ficheiro: MAGNIROM.C Alteração: 03-05-96 ALterado por: A.Esteves \*---------------------------------------------------------*/ #include "datadef.h" /* COMPARAÇÃO DE MAGNITUDE */ void cpdata_this (void) { WORD aux[SIZE]; /* cy = alu_output (cy_out) tag = alu_output (equal) */ switch (linhas) { case 111 : /* MD0 MD1 CY_IN */ tag[0] = tag[0] | (cy[0] ^ md0[0] ^ md1[0]); tag[1] = tag[1] | (cy[1] ^ md0[1] ^ md1[1]); cy[0] = ((md1[0] ^ md0[0]) & cy[0]) | (md0[0] & md1[0]); cy[1] = ((md1[1] ^ md0[1]) & cy[1]) | (md0[1] & md1[1]); break; case 131 : /* MD0 NOT_MD1 CY_IN */ tag[0] = tag[0] | (cy[0] ^ md0[0] ^ ~md1[0]); tag[1] = tag[1] | (cy[1] ^ md0[1] ^ ~md1[1]); cy[0] = ((~md1[0] ^ md0[0]) & cy[0]) | (md0[0] & ~md1[0]); cy[1] = ((~md1[1] ^ md0[1]) & cy[1]) | (md0[1] & ~md1[1]); break; case 141 : /* MD0 TAG_IN CY_IN */ aux[0] = tag[0]; aux[1] = tag[1]; tag[0] = tag[0] | (cy[0] ^ md0[0] ^ tag[0]); tag[1] = tag[1] | (cy[1] ^ md0[1] ^ tag[1]); cy[0] = ((aux[0] ^ md0[0]) & cy[0]) | (md0[0] & aux[0]); cy[1] = ((aux[1] ^ md0[1]) & cy[1]) | (md0[1] & aux[1]); break; case 311 : /* NOT_MD0 MD1 CY_IN */ tag[0] = tag[0] | (cy[0] ^ ~md0[0] ^ md1[0]); tag[1] = tag[1] | (cy[1] ^ ~md0[1] ^ md1[1]); cy[0] = ((md1[0] ^ ~md0[0]) & cy[0]) | (~md0[0] & md1[0]); cy[1] = ((md1[1] ^ ~md0[1]) & cy[1]) | (~md0[1] & md1[1]); break; case 331 : /* NOT_MD0 NOT_MD1 CY_IN */ tag[0] = tag[0] | (cy[0] ^ ~md0[0] ^ ~md1[0]); tag[1] = tag[1] | (cy[1] ^ ~md0[1] ^ ~md1[1]); cy[0] = ((~md1[0] ^ ~md0[0]) & cy[0]) | (~md0[0] & ~md1[0]); cy[1] = ((~md1[1] ^ ~md0[1]) & cy[1]) | (~md0[1] & ~md1[1]); break; case 351 : /* NOT_MD0 NOT_TAG_IN CY_IN */ aux[0] = tag[0]; aux[1] = tag[1]; tag[0] = tag[0] | (cy[0] ^ ~md0[0] ^ ~tag[0]); tag[1] = tag[1] | (cy[1] ^ ~md0[1] ^ ~tag[1]); cy[0] = ((~aux[0] ^ ~md0[0]) & cy[0]) | (~md0[0] & ~aux[0]); cy[1] = ((~aux[1] ^ ~md0[1]) & cy[1]) | (~md0[1] & ~aux[1]); break; default : erro("\nErro na funcao cpdata_this(). \n"); break; } } /*#################################################################*/ void cpdata_abov (void) /* NAO FUNCIONA ASSIM */ { /* cy = alu_output ( cy_out ) tag = alu_output ( equal ) tag_route -> above */ TagAbove(); switch (linhas) { case 141 : /* MD0 TAG_IN CY_IN */ case 351 : /* NOT_MD0 NOT_TAG_IN CY_IN */ cpdata_this(); break; default : erro("\nErro na funcao cpdata_abov(). \n"); break; } } /*#################################################################*/ void cpdata_belo (void) /* NAO FUNCIONA ASSIM */ { /* cy = alu_output ( cy_out ) tag = alu_output ( equal ) tag_route -> below */ TagBelow(); switch (linhas) { case 141 : /* MD0 TAG_IN CY_IN */ case 351 : /* NOT_MD0 NOT_TAG_IN CY_IN */ cpdata_this(); break; default : erro("\nErro na funcao cpdata_belo(). \n"); break; } } /*#################################################################*/ void cpdata_imag (void) /* NAO FUNCIONA ASSIM */ { /* cy = alu_output ( cy_out ) tag = alu_output ( equal ) tag_route -> image */ TagImage(); switch (linhas) { case 141 : /* MD0 TAG_IN CY_IN */ case 351 : /* NOT_MD0 NOT_TAG_IN CY_IN */ cpdata_this(); break; default : erro("\nErro na funcao cpdata_Imag(). \n"); break; } } /*#################################################################*/ void cpsign_this (void) { /* cy = alu_output ( sum ) tag = alu_output ( equal ) */ WORD aux[SIZE]; switch (linhas) { case 111 : /* MD0 MD1 CY_IN */ tag[0] = tag[0] | (cy[0] ^ md0[0] ^ md1[0]); tag[1] = tag[1] | (cy[1] ^ md0[1] ^ md1[1]); cy[0] = cy[0] ^ (md0[0] ^ md1[0]); cy[1] = cy[1] ^ (md0[1] ^ md1[1]); break; case 131 : /* MD0 NOT_MD1 CY_IN */ tag[0] = tag[0] | (cy[0] ^ md0[0] ^ ~md1[0]); tag[1] = tag[1] | (cy[1] ^ md0[1] ^ ~md1[1]); cy[0] = cy[0] ^ (md0[0] ^ ~md1[0]); cy[1] = cy[1] ^ (md0[1] ^ ~md1[1]); break; case 141 : /* MD0 TAG_IN CY_IN */ aux[0] = tag[0]; aux[1] = tag[1]; tag[0] = tag[0] | (cy[0] ^ md0[0] ^ tag[0]); tag[1] = tag[1] | (cy[1] ^ md0[1] ^ tag[1]); cy[0] = cy[0] ^ (md0[0] ^ aux[0]); cy[1] = cy[1] ^ (md0[1] ^ aux[1]); break; case 311 : /* NOT_MD0 MD1 CY_IN */ tag[0] = tag[0] | (cy[0] ^ ~md0[0] ^ md1[0]); tag[1] = tag[1] | (cy[1] ^ ~md0[1] ^ md1[1]); cy[0] = cy[0] ^ (~md0[0] ^ md1[0]); cy[1] = cy[1] ^ (~md0[1] ^ md1[1]); break; case 331 : /* NOT_MD0 NOT_MD1 CY_IN */ tag[0] = tag[0] | (cy[0] ^ ~md0[0] ^ ~md1[0]); tag[1] = tag[1] | (cy[1] ^ ~md0[1] ^ ~md1[1]); cy[0] = cy[0] ^ (~md0[0] ^ ~md1[0]); cy[1] = cy[1] ^ (~md0[1] ^ ~md1[1]); break; case 351 : /* NOT_MD0 NOT_TAG_IN CY_IN */ aux[0] = tag[0]; aux[1] = tag[1]; tag[0] = tag[0] | (cy[0] ^ ~md0[0] ^ ~tag[0]); tag[1] = tag[1] | (cy[1] ^ ~md0[1] ^ ~tag[1]); cy[0] = cy[0] ^ (~md0[0] ^ ~aux[0]); cy[1] = cy[1] ^ (~md0[1] ^ ~aux[1]); break; default : erro("\nErro na funcao cpsign_this(). \n"); break; } } /*#################################################################*/ void cpsign_abov (void) { /* cy = alu_output ( sum ) tag = alu_output ( equal ) tag_route -> above */ TagAbove(); switch (linhas) { case 141 : /* MD0 TAG_IN CY_IN */ case 351 : /* NOT_MD0 NOT_TAG_IN CY_IN */ cpsign_this(); break; default : erro("\nErro na funcao cpsign_abov(). \n"); break; } } /*#################################################################*/ void cpsign_belo (void) { /* cy = alu_output ( sum ) tag = alu_output ( equal ) tag_route -> below */ TagBelow(); switch (linhas) { case 141 : /* MD0 TAG_IN CY_IN */ case 351 : /* NOT_MD0 NOT_TAG_IN CY_IN */ cpsign_this(); break; default : erro("\nErro na funcao cpsign_belo(). \n"); break; } } /*#################################################################*/ void cpsign_imag (void) { /* cy = alu_output ( sum ) tag = alu_output ( equal ) tag_route -> image */ TagImage(); switch (linhas) { case 141 : /* MD0 TAG_IN CY_IN */ case 351 : /* NOT_MD0 NOT_TAG_IN CY_IN */ cpsign_this(); break; default : erro("\nErro na funcao cpsign_imag(). \n"); break; } } /*#################################################################*/