| 1096 | } |
| 1097 | |
| 1098 | expr expr::ctlz() const { |
| 1099 | C(); |
| 1100 | auto nbits = bits(); |
| 1101 | auto srt = sort(); |
| 1102 | |
| 1103 | auto cond = mkUInt(nbits, srt); |
| 1104 | for (unsigned i = 0; i < nbits; ++i) { |
| 1105 | cond = mkIf(extract(i, i) == 1u, mkUInt(nbits - 1 - i, srt), cond); |
| 1106 | } |
| 1107 | |
| 1108 | return cond; |
| 1109 | } |
| 1110 | |
| 1111 | expr expr::ctpop() const { |
| 1112 | C(); |