Test fixes, use LLVMConstFCmp in ConstFCmp
This commit is contained in:
parent
b97642758f
commit
808c5b8d4e
@ -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. */
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user