-
Notifications
You must be signed in to change notification settings - Fork 0
/
operators.pr
66 lines (53 loc) · 1.6 KB
/
operators.pr
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
def op1() -> U8 {
23
}
def op2() -> S8 {
17
}
def main() -> S32 {
// Binary plus
def signedPlus : U8 = expect!S32(35+4);
//def err1_1 : U8 = expect!S32(127+127+5);
def unsignedPlus : S8 = expect!U8(35+4);
//def err1_2 : S8 = expect!U8(125+4);
def unsignedPlusOverflow : S8 = expect!U8(254+9+120);
//def overflowError2 : S8 = expect!U8(254+9+121);
// Binary minus
def unsignedMinus : U8 = expect!U16(355 - 100);
//def err2_1 : U8 = expect!U16(355 - 99);
def unsignedMinusOverflow : U8 = expect!U16(100-355-65026);
//def unsignedMinusOverflow_err : U8 = expect!U16(100-355-65025);
def signedMinus : U8 = expect!S16( 0 - 100 - (0-355) );
// def signedMinusOverflow : U8 = expect!S16( 0 - 100 - (0-356) );
// Binary multiply
def unsignedMultiply : U8 = expect!U16( 16 * 15 + 15 );
// def unsignedMultiplyOverflow : U8 = expect!U16( 16 * 15 + 16 );
def signedMultiply : U8 = expect!S16( 16 * 15 + 15 );
347 + op1() + op2()
}
def average( a : U8, b : U8 ) -> U8 {
expect!U16( (a+b)/2 )
}
def noVrpBinaryOps( a: U8, b: U8 ) -> Bool {
def eq : Bool = a == b;
def ne : Bool = a != b;
def lt : Bool = a < b;
def le : Bool = a <= b;
def gt : Bool = a > b;
def ge : Bool = a >= b;
lt
}
def noVrpBinaryOps( a: S8, b: S8 ) -> Bool {
def eq : Bool = a == b;
def ne : Bool = a != b;
def lt : Bool = a < b;
def le : Bool = a <= b;
def gt : Bool = a > b;
def ge : Bool = a >= b;
lt
}
def logicalOps( a : Bool, b : Bool ) -> Bool {
def and : Bool = a && b;
def or : Bool = a || b;
a
}