зеркало из https://github.com/mozilla/gecko-dev.git
27 строки
816 B
Plaintext
27 строки
816 B
Plaintext
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
import "bmul.cry";
|
|
|
|
print "Loading LLVM bitcode...";
|
|
m <- llvm_load_module "../../../dist/Debug/lib/libfreeblpriv3.so.bc";
|
|
|
|
let SpecBinaryMul n = do {
|
|
x <- llvm_var "x" (llvm_int n);
|
|
y <- llvm_var "y" (llvm_int n);
|
|
llvm_ptr "r_high" (llvm_int n);
|
|
r_high <- llvm_var "*r_high" (llvm_int n);
|
|
llvm_ptr "r_low" (llvm_int n);
|
|
r_low <- llvm_var "*r_low" (llvm_int n);
|
|
|
|
let res = {{ bmul x y }};
|
|
llvm_ensure_eq "*r_high" {{ res.0 }};
|
|
llvm_ensure_eq "*r_low" {{ res.1 }};
|
|
|
|
llvm_verify_tactic abc;
|
|
};
|
|
|
|
print "Proving equality for 32-bit bmul()...";
|
|
time (llvm_verify m "bmul32" [] (SpecBinaryMul 32));
|