summaryrefslogtreecommitdiff
path: root/src/hal/components/match8.comp
blob: 006f4cc426cc3fcb3fd0ceba143c143d7b42162a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
component match8 "8-bit binary match detector";
pin in bit in = TRUE "cascade input - if false, output is false regardless of other inputs";
pin in bit a0;
pin in bit a1;
pin in bit a2;
pin in bit a3;
pin in bit a4;
pin in bit a5;
pin in bit a6;
pin in bit a7;
pin in bit b0;
pin in bit b1;
pin in bit b2;
pin in bit b3;
pin in bit b4;
pin in bit b5;
pin in bit b6;
pin in bit b7;
pin out bit out "true only if in is true and a[m] matches b[m] for m = 0 thru 7";
function _ nofp;
license "GPL";
;;
FUNCTION(_) {
    int tmp = 0;

    if ( !in ) goto nomatch;
    if (( a0 && !b0 ) || ( !a0 && b0 )) goto nomatch;
    if (( a1 && !b1 ) || ( !a1 && b1 )) goto nomatch;
    if (( a2 && !b2 ) || ( !a2 && b2 )) goto nomatch;
    if (( a3 && !b3 ) || ( !a3 && b3 )) goto nomatch;
    if (( a4 && !b4 ) || ( !a4 && b4 )) goto nomatch;
    if (( a5 && !b5 ) || ( !a5 && b5 )) goto nomatch;
    if (( a6 && !b6 ) || ( !a6 && b6 )) goto nomatch;
    if (( a7 && !b7 ) || ( !a7 && b7 )) goto nomatch;
    tmp = 1;
nomatch:
    out = tmp;
}