1 | #ifndef Morpheo_Behavioural_Operation_h |
---|
2 | #define Morpheo_Behavioural_Operation_h |
---|
3 | |
---|
4 | /* |
---|
5 | * $Id: Operation.h 141 2010-08-02 18:56:05Z rosiere $ |
---|
6 | * |
---|
7 | * [ Description ] |
---|
8 | * |
---|
9 | */ |
---|
10 | |
---|
11 | namespace morpheo { |
---|
12 | namespace behavioural { |
---|
13 | |
---|
14 | # define neg( size,data) (~(data)+1) |
---|
15 | # define sign( size,data) ((data)>>(size-1)) |
---|
16 | # define unsigned(size,data) (data) |
---|
17 | # define signed( size,data) ((sign(size,data)==0)?(data):neg(size,data)) |
---|
18 | //#define ovf( size,op1, op2, c_in) ((op2^(op1+op2+c_in))&~(op1^op2))>>(size-1); |
---|
19 | # define ovf( size,op1, op2, res) ((sign(size,op1) == sign(size,op2))?(sign(size,op1) xor sign(size,res)):0) |
---|
20 | # define carry( size,op1, op2, res) (((res)<(op1)) or ((res)<(op2))) |
---|
21 | # define set_flag(data,flag,is_set) (((is_set)==1)?((data)|(flag)):((data)&~(flag))) |
---|
22 | # define get_flag(data,flag) (((data)&(flag))!=0) |
---|
23 | # define concatenation_bool(a,b) (((a)<<1) | (b)) |
---|
24 | |
---|
25 | }; // end namespace behavioural |
---|
26 | }; // end namespace morpheo |
---|
27 | #endif |
---|