OpenCores
URL https://opencores.org/ocsvn/1664/1664/trunk

Subversion Repositories 1664

[/] [1664/] [trunk/] [c/] [cpu_1664/] [cpu_1664_opera__bit.c] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 mrdmkg
#include "cpu_1664.h"
2
 
3
void cpu_1664_opera__bit(struct cpu_1664 *cpu, n1 bait)
4
{
5
 cpu_1664_sinia_t dest=cpu->sinia[bait&((1<<cpu_1664_bitio_rd)-1)];
6
 cpu_1664_sinia_t opera=bait>>cpu_1664_bitio_r;
7
 
8
 cpu_1664_sinia_t sinia=-1;
9
 nN i;
10
 cpu_1664_sinia_t masca;
11
 
12
 switch(opera)
13
 {
14
 
15
  case cpu_1664_opera_bit_masima:
16
 
17
   for(masca=cpu_1664_sinia_t_di, i=0;((dest&masca)==0)&&(i<(sizeof(cpu_1664_sinia_t)*8)); i++)
18
   {
19
    masca>>=1;
20
   }
21
 
22
   sinia=i;
23
   break;
24
 
25
  case cpu_1664_opera_bit_minima:
26
 
27
   for(masca=1, i=0;((dest&masca)==0)&&(i<(sizeof(cpu_1664_sinia_t)*8)); i++)
28
   {
29
    masca<<=1;
30
   }
31
 
32
   sinia=i;
33
   break;
34
 
35
  case cpu_1664_opera_bit_set:
36
 
37
   for(sinia=0, masca=1, i=0; i<(sizeof(cpu_1664_sinia_t)*8); i++)
38
   {
39
    if((dest&masca)!=0) { sinia++; }
40
    masca<<=1;
41
   }
42
   break;
43
 
44
  case cpu_1664_opera_bit_vacua:
45
 
46
   for(sinia=0, masca=1, i=0; i<(sizeof(cpu_1664_sinia_t)*8); i++)
47
   {
48
    if((dest&masca)==0) { sinia++; }
49
    masca<<=1;
50
   }
51
   break;
52
 }
53
 
54
 cpu->sinia[0]=sinia;
55
 cpu->opera_sicle=cpu_1664_sicle_opera_bit;
56
 
57
 if (cpu->depende[cpu_1664_depende_bitio_depende_influe]!=0)
58
 {
59
  cpu->depende[cpu_1664_depende_z] = (dest==0);
60
  cpu->depende[cpu_1664_depende_n] = cpu->depende[cpu_1664_depende_z]==0;
61
 }
62
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.