Test fixes, use LLVMConstFCmp in ConstFCmp

This commit is contained in:
Corey Richardson 2013-05-19 22:08:59 -04:00
parent b97642758f
commit 808c5b8d4e
2 changed files with 12 additions and 12 deletions

View File

@ -9,7 +9,7 @@
// except according to those terms.
use core::hashmap::HashMap;
use core::libc::c_uint;
use core::libc::{c_uint, c_ushort};
pub type Opcode = u32;
pub type Bool = c_uint;
@ -221,7 +221,7 @@ pub mod llvm {
use super::{SectionIteratorRef, TargetDataRef, TypeKind, TypeRef, UseRef};
use super::{ValueRef};
use core::libc::{c_char, c_int, c_longlong, c_uint, c_ulonglong};
use core::libc::{c_char, c_int, c_longlong, c_ushort, c_uint, c_ulonglong};
#[link_args = "-Lrustllvm -lrustllvm"]
#[link_name = "rustllvm"]
@ -452,9 +452,9 @@ pub mod llvm {
#[fast_ffi]
pub unsafe fn LLVMConstAllOnes(Ty: TypeRef) -> ValueRef;
#[fast_ffi]
pub unsafe fn LLVMConstICmp(Pred: c_uint, V1: ValueRef, V2: ValueRef) -> ValueRef;
pub unsafe fn LLVMConstICmp(Pred: c_ushort, V1: ValueRef, V2: ValueRef) -> ValueRef;
#[fast_ffi]
pub unsafe fn LLVMConstFCmp(Pred: c_uint, V1: ValueRef, V2: ValueRef) -> ValueRef;
pub unsafe fn LLVMConstFCmp(Pred: c_ushort, V1: ValueRef, V2: ValueRef) -> ValueRef;
/* only for int/vector */
#[fast_ffi]
pub unsafe fn LLVMGetUndef(Ty: TypeRef) -> ValueRef;
@ -1920,12 +1920,12 @@ pub fn SetLinkage(Global: ValueRef, Link: Linkage) {
pub fn ConstICmp(Pred: IntPredicate, V1: ValueRef, V2: ValueRef) -> ValueRef {
unsafe {
llvm::LLVMConstICmp(Pred as c_uint, V1, V2)
llvm::LLVMConstICmp(Pred as c_ushort, V1, V2)
}
}
pub fn ConstFCmp(Pred: RealPredicate, V1: ValueRef, V2: ValueRef) -> ValueRef {
unsafe {
llvm::LLVMConstICmp(Pred as c_uint, V1, V2)
llvm::LLVMConstFCmp(Pred as c_ushort, V1, V2)
}
}
/* Memory-managed object interface to type handles. */

View File

@ -38,23 +38,23 @@ static z: bool = 1.0 == 1.0;
static aa: bool = 1 <= 2;
static ab: bool = -1 <= 2;
static ac: bool = 1.0 <= 2;
static ac: bool = 1.0 <= 2.0;
static ad: bool = 1 < 2;
static ae: bool = -1 < 2;
static af: bool = 1.0 < 2;
static af: bool = 1.0 < 2.0;
static ag: bool = 1 != 2;
static ah: bool = -1 != 2;
static ai: bool = 1.0 != 2;
static ai: bool = 1.0 != 2.0;
static aj: bool = 2 >= 1;
static ak: bool = 2 >= -2;
static al: bool = 1.0 >= -2;
static al: bool = 1.0 >= -2.0;
static am: bool = 2 > 1;
static an: bool = 2 > -2;
static ao: bool = 1.0 > -2;
static ao: bool = 1.0 > -2.0;
fn main() {
assert_eq!(a, -1);
@ -63,7 +63,7 @@ fn main() {
assert_eq!(c, -1);
assert_eq!(d, 0);
assert_approx_eq!(e, -0.3);
assert_approx_eq!(e, 0.3);
assert_eq!(e2, -9);
assert_eq!(f, 9);