Skip to content

Commit 1c29c10

Browse files
committed
Boolector: implement direct BV rotation by constant.
1 parent c975bad commit 1c29c10

File tree

3 files changed

+52
-39
lines changed

3 files changed

+52
-39
lines changed

lib/native/source/libboolector/interface_wrap.c

+36-35
Original file line numberDiff line numberDiff line change
@@ -1976,6 +1976,42 @@ SWIGEXPORT jlong JNICALL Java_org_sosy_1lab_java_1smt_solvers_boolector_BtorJNI_
19761976
}
19771977

19781978

1979+
SWIGEXPORT jlong JNICALL Java_org_sosy_1lab_java_1smt_solvers_boolector_BtorJNI_boolector_1rori(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jint jarg3) {
1980+
jlong jresult = 0 ;
1981+
Btor *arg1 = (Btor *) 0 ;
1982+
BoolectorNode *arg2 = (BoolectorNode *) 0 ;
1983+
uint32_t arg3 = 0 ;
1984+
BoolectorNode *result = 0 ;
1985+
1986+
(void)jenv;
1987+
(void)jcls;
1988+
arg1 = *(Btor **)&jarg1;
1989+
arg2 = *(BoolectorNode **)&jarg2;
1990+
arg3 = (uint32_t)jarg3;
1991+
result = (BoolectorNode *)boolector_rori(arg1,arg2,arg3);
1992+
*(BoolectorNode **)&jresult = result;
1993+
return jresult;
1994+
}
1995+
1996+
1997+
SWIGEXPORT jlong JNICALL Java_org_sosy_1lab_java_1smt_solvers_boolector_BtorJNI_boolector_1roli(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jint jarg3) {
1998+
jlong jresult = 0 ;
1999+
Btor *arg1 = (Btor *) 0 ;
2000+
BoolectorNode *arg2 = (BoolectorNode *) 0 ;
2001+
uint32_t arg3 = 0 ;
2002+
BoolectorNode *result = 0 ;
2003+
2004+
(void)jenv;
2005+
(void)jcls;
2006+
arg1 = *(Btor **)&jarg1;
2007+
arg2 = *(BoolectorNode **)&jarg2;
2008+
arg3 = (uint32_t)jarg3;
2009+
result = (BoolectorNode *)boolector_roli(arg1,arg2,arg3);
2010+
*(BoolectorNode **)&jresult = result;
2011+
return jresult;
2012+
}
2013+
2014+
19792015
SWIGEXPORT jlong JNICALL Java_org_sosy_1lab_java_1smt_solvers_boolector_BtorJNI_boolector_1sub(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jlong jarg3) {
19802016
jlong jresult = 0 ;
19812017
Btor *arg1 = (Btor *) 0 ;
@@ -3495,41 +3531,6 @@ SWIGEXPORT jint JNICALL Java_org_sosy_1lab_java_1smt_solvers_boolector_BtorJNI_b
34953531
}
34963532

34973533

3498-
SWIGEXPORT jlong JNICALL Java_org_sosy_1lab_java_1smt_solvers_boolector_BtorJNI_boolector_1rori(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jint jarg3) {
3499-
jlong jresult = 0 ;
3500-
Btor *arg1 = (Btor *) 0 ;
3501-
BoolectorNode *arg2 = (BoolectorNode *) 0 ;
3502-
uint32_t arg3 = 0 ;
3503-
BoolectorNode *result = 0 ;
3504-
3505-
(void)jenv;
3506-
(void)jcls;
3507-
arg1 = *(Btor **)&jarg1;
3508-
arg2 = *(BoolectorNode **)&jarg2;
3509-
arg3 = (uint32_t)jarg3;
3510-
result = (BoolectorNode *)boolector_rori(arg1,arg2,arg3);
3511-
*(BoolectorNode **)&jresult = result;
3512-
return jresult;
3513-
}
3514-
3515-
SWIGEXPORT jlong JNICALL Java_org_sosy_1lab_java_1smt_solvers_boolector_BtorJNI_boolector_1roli(JNIEnv *jenv, jclass jcls, jlong jarg1, jlong jarg2, jint jarg3) {
3516-
jlong jresult = 0 ;
3517-
Btor *arg1 = (Btor *) 0 ;
3518-
BoolectorNode *arg2 = (BoolectorNode *) 0 ;
3519-
uint32_t arg3 = 0 ;
3520-
BoolectorNode *result = 0 ;
3521-
3522-
(void)jenv;
3523-
(void)jcls;
3524-
arg1 = *(Btor **)&jarg1;
3525-
arg2 = *(BoolectorNode **)&jarg2;
3526-
arg3 = (uint32_t)jarg3;
3527-
result = (BoolectorNode *)boolector_roli(arg1,arg2,arg3);
3528-
*(BoolectorNode **)&jresult = result;
3529-
return jresult;
3530-
}
3531-
3532-
35333534
//helpmethods
35343535

35353536
//Returns the int value of BOOLECTOR_PARSE_ERROR

src/org/sosy_lab/java_smt/solvers/boolector/BoolectorBitvectorFormulaManager.java

+12
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
import static org.sosy_lab.java_smt.solvers.boolector.BtorJNI.boolector_not;
1818
import static org.sosy_lab.java_smt.solvers.boolector.BtorJNI.boolector_or;
1919
import static org.sosy_lab.java_smt.solvers.boolector.BtorJNI.boolector_rol;
20+
import static org.sosy_lab.java_smt.solvers.boolector.BtorJNI.boolector_roli;
2021
import static org.sosy_lab.java_smt.solvers.boolector.BtorJNI.boolector_ror;
22+
import static org.sosy_lab.java_smt.solvers.boolector.BtorJNI.boolector_rori;
2123
import static org.sosy_lab.java_smt.solvers.boolector.BtorJNI.boolector_sdiv;
2224
import static org.sosy_lab.java_smt.solvers.boolector.BtorJNI.boolector_sext;
2325
import static org.sosy_lab.java_smt.solvers.boolector.BtorJNI.boolector_sgt;
@@ -195,11 +197,21 @@ public Long shiftLeft(Long bitVec, Long toShift) {
195197
return boolector_sll(btor, bitVec, toShift);
196198
}
197199

200+
@Override
201+
public Long rotateLeftByConstant(Long bitVec, int toRotate) {
202+
return boolector_roli(btor, bitVec, toRotate);
203+
}
204+
198205
@Override
199206
public Long rotateLeft(Long bitVec, Long toRotate) {
200207
return boolector_rol(btor, bitVec, toRotate);
201208
}
202209

210+
@Override
211+
public Long rotateRightByConstant(Long bitVec, int toRotate) {
212+
return boolector_rori(btor, bitVec, toRotate);
213+
}
214+
203215
@Override
204216
public Long rotateRight(Long bitVec, Long toRotate) {
205217
return boolector_ror(btor, bitVec, toRotate);

src/org/sosy_lab/java_smt/solvers/boolector/BtorJNI.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,10 @@ private BtorJNI() {}
221221

222222
protected static native long boolector_ror(long jarg1, long jarg2, long jarg3);
223223

224+
protected static native long boolector_roli(long btor, long node, int nbits);
225+
226+
protected static native long boolector_rori(long btor, long node, int nbits);
227+
224228
protected static native long boolector_sub(long jarg1, long jarg2, long jarg3);
225229

226230
protected static native long boolector_usubo(long jarg1, long jarg2, long jarg3);
@@ -414,10 +418,6 @@ protected static native int boolector_parse_smt2(
414418

415419
protected static native int boolector_bitvec_sort_get_width(long jarg1, long jarg2);
416420

417-
protected static native long boolector_roli(long btor, long node, int nbits);
418-
419-
protected static native long boolector_rori(long btor, long node, int nbits);
420-
421421
protected static native long boolector_get_value(long btor, long node);
422422

423423
/**

0 commit comments

Comments
 (0)