| 936 | } |
| 937 | |
| 938 | expr expr::lshr(const expr &rhs) const { |
| 939 | C(); |
| 940 | if (isZero() || rhs.isZero()) |
| 941 | return *this; |
| 942 | |
| 943 | uint64_t shift; |
| 944 | if (rhs.isUInt(shift)) { |
| 945 | auto bw = bits(); |
| 946 | if (shift >= bw) |
| 947 | return mkUInt(0, sort()); |
| 948 | return mkUInt(0, shift).concat(extract(bw-1, shift)); |
| 949 | } |
| 950 | |
| 951 | return binop_fold(rhs, Z3_mk_bvlshr); |
| 952 | } |
| 953 | |
| 954 | expr expr::fshl(const expr &a, const expr &b, const expr &c) { |
| 955 | C2(a); |
no test coverage detected