From 43842f77cdfa2a378bfac0d34d74bcbc79a003ba Mon Sep 17 00:00:00 2001 From: Karl Meakin Date: Thu, 23 Mar 2023 19:14:39 +0000 Subject: [PATCH] ISLE: rewrite `and`/`or` of `icmp` --- cranelift/codegen/src/ir/condcodes.rs | 14 + cranelift/codegen/src/isle_prelude.rs | 43 +- cranelift/codegen/src/opts/algebraic.isle | 50 + cranelift/codegen/src/prelude.isle | 14 + .../filetests/filetests/egraph/icmp.clif | 3004 +++++++++++++++++ 5 files changed, 3117 insertions(+), 8 deletions(-) create mode 100644 cranelift/filetests/filetests/egraph/icmp.clif diff --git a/cranelift/codegen/src/ir/condcodes.rs b/cranelift/codegen/src/ir/condcodes.rs index 7059ce6c92b4..fbfd49830011 100644 --- a/cranelift/codegen/src/ir/condcodes.rs +++ b/cranelift/codegen/src/ir/condcodes.rs @@ -108,6 +108,20 @@ impl IntCC { ] } + /// Get the corresponding IntCC with the equal component added. + /// For conditions with a zero component, this is a no-op. + pub fn with_equal(self) -> Self { + use self::IntCC::*; + match self { + SignedGreaterThan => SignedGreaterThanOrEqual, + SignedLessThan => SignedLessThanOrEqual, + UnsignedGreaterThan => UnsignedGreaterThanOrEqual, + UnsignedLessThan => UnsignedLessThanOrEqual, + NotEqual => Equal, + _ => self, + } + } + /// Get the corresponding IntCC with the equal component removed. /// For conditions without a zero component, this is a no-op. pub fn without_equal(self) -> Self { diff --git a/cranelift/codegen/src/isle_prelude.rs b/cranelift/codegen/src/isle_prelude.rs index 3de34e436664..0fd21045b37e 100644 --- a/cranelift/codegen/src/isle_prelude.rs +++ b/cranelift/codegen/src/isle_prelude.rs @@ -721,16 +721,33 @@ macro_rules! isle_common_prelude_methods { #[inline] fn signed_cond_code(&mut self, cc: &condcodes::IntCC) -> Option { match cc { - IntCC::Equal - | IntCC::UnsignedGreaterThanOrEqual - | IntCC::UnsignedGreaterThan - | IntCC::UnsignedLessThanOrEqual - | IntCC::UnsignedLessThan - | IntCC::NotEqual => None, - IntCC::SignedGreaterThanOrEqual + IntCC::SignedLessThan + | IntCC::SignedLessThanOrEqual | IntCC::SignedGreaterThan + | IntCC::SignedGreaterThanOrEqual => Some(*cc), + _ => None, + } + } + + #[inline] + fn intcc_lt_or_gt(&mut self, cc: &IntCC) -> Option { + match cc { + IntCC::UnsignedLessThan + | IntCC::SignedLessThan + | IntCC::UnsignedGreaterThan + | IntCC::SignedGreaterThan => Some(*cc), + _ => None, + } + } + + #[inline] + fn intcc_le_or_ge(&mut self, cc: &IntCC) -> Option { + match cc { + IntCC::UnsignedLessThanOrEqual | IntCC::SignedLessThanOrEqual - | IntCC::SignedLessThan => Some(*cc), + | IntCC::UnsignedGreaterThanOrEqual + | IntCC::SignedGreaterThanOrEqual => Some(*cc), + _ => None, } } @@ -744,6 +761,16 @@ macro_rules! isle_common_prelude_methods { cc.inverse() } + #[inline] + fn intcc_with_equal(&mut self, cc: &IntCC) -> IntCC { + cc.with_equal() + } + + #[inline] + fn intcc_without_equal(&mut self, cc: &IntCC) -> IntCC { + cc.without_equal() + } + #[inline] fn floatcc_reverse(&mut self, cc: &FloatCC) -> FloatCC { cc.reverse() diff --git a/cranelift/codegen/src/opts/algebraic.isle b/cranelift/codegen/src/opts/algebraic.isle index 8cab77bd448b..db3d8d4b481e 100644 --- a/cranelift/codegen/src/opts/algebraic.isle +++ b/cranelift/codegen/src/opts/algebraic.isle @@ -479,6 +479,56 @@ (iconst _ (u64_from_imm64 0)))) (iconst ty (imm64 1))) +(decl pure decompose_intcc (IntCC) u64) +(rule (decompose_intcc (IntCC.Equal)) 1) +(rule (decompose_intcc (IntCC.UnsignedLessThan)) 2) +(rule (decompose_intcc (IntCC.SignedLessThan)) 2) +(rule (decompose_intcc (IntCC.UnsignedLessThanOrEqual)) 3) +(rule (decompose_intcc (IntCC.SignedLessThanOrEqual)) 3) +(rule (decompose_intcc (IntCC.UnsignedGreaterThan)) 4) +(rule (decompose_intcc (IntCC.SignedGreaterThan)) 4) +(rule (decompose_intcc (IntCC.UnsignedGreaterThanOrEqual)) 5) +(rule (decompose_intcc (IntCC.SignedGreaterThanOrEqual)) 5) +(rule (decompose_intcc (IntCC.NotEqual)) 6) + +(decl compose_icmp (Type u64 bool Value Value) Value) +(rule (compose_icmp ty 0 _ _ _) (subsume (iconst ty (imm64 0)))) +(rule (compose_icmp ty 1 _ x y) (icmp ty (IntCC.Equal) x y)) +(rule (compose_icmp ty 2 $false x y) (icmp ty (IntCC.UnsignedLessThan) x y)) +(rule (compose_icmp ty 2 $true x y) (icmp ty (IntCC.SignedLessThan) x y)) +(rule (compose_icmp ty 3 $false x y) (icmp ty (IntCC.UnsignedLessThanOrEqual) x y)) +(rule (compose_icmp ty 3 $true x y) (icmp ty (IntCC.SignedLessThanOrEqual) x y)) +(rule (compose_icmp ty 4 $false x y) (icmp ty (IntCC.UnsignedGreaterThan) x y)) +(rule (compose_icmp ty 4 $true x y) (icmp ty (IntCC.SignedGreaterThan) x y)) +(rule (compose_icmp ty 5 $false x y) (icmp ty (IntCC.UnsignedGreaterThanOrEqual) x y)) +(rule (compose_icmp ty 5 $true x y) (icmp ty (IntCC.SignedGreaterThanOrEqual) x y)) +(rule (compose_icmp ty 6 _ x y) (icmp ty (IntCC.NotEqual) x y)) +(rule (compose_icmp ty 7 _ _ _) (subsume (iconst ty (imm64 1)))) + +(decl pure intcc_class (IntCC) u64) +(rule (intcc_class (IntCC.UnsignedLessThan)) 1) +(rule (intcc_class (IntCC.UnsignedLessThanOrEqual)) 1) +(rule (intcc_class (IntCC.UnsignedGreaterThan)) 1) +(rule (intcc_class (IntCC.UnsignedGreaterThanOrEqual)) 1) +(rule (intcc_class (IntCC.SignedLessThan)) 2) +(rule (intcc_class (IntCC.SignedLessThanOrEqual)) 2) +(rule (intcc_class (IntCC.SignedGreaterThan)) 2) +(rule (intcc_class (IntCC.SignedGreaterThanOrEqual)) 2) +(rule (intcc_class (IntCC.Equal)) 3) +(rule (intcc_class (IntCC.NotEqual)) 3) + +(decl pure partial intcc_comparable (IntCC IntCC) bool) +(rule (intcc_comparable x y) + (if-let (u64_nonzero class) (u64_and (intcc_class x) (intcc_class y))) + (u64_eq 2 class)) + +(rule (simplify (band ty (icmp ty cc1 x y) (icmp ty cc2 x y))) + (if-let signed (intcc_comparable cc1 cc2)) + (compose_icmp ty (u64_and (decompose_intcc cc1) (decompose_intcc cc2)) signed x y)) + +(rule (simplify (bor ty (icmp ty cc1 x y) (icmp ty cc2 x y))) + (if-let signed (intcc_comparable cc1 cc2)) + (compose_icmp ty (u64_or (decompose_intcc cc1) (decompose_intcc cc2)) signed x y)) ;; Transform select-of-icmp into {u,s}{min,max} instructions where possible. (rule (simplify (select ty (sgt _ x y) x y)) (smax ty x y)) diff --git a/cranelift/codegen/src/prelude.isle b/cranelift/codegen/src/prelude.isle index 012d5e29af6d..7483cffc63f5 100644 --- a/cranelift/codegen/src/prelude.isle +++ b/cranelift/codegen/src/prelude.isle @@ -271,6 +271,14 @@ (decl intcc_inverse (IntCC) IntCC) (extern constructor intcc_inverse intcc_inverse) +;; Add equal component to an IntCC +(decl intcc_with_equal (IntCC) IntCC) +(extern constructor intcc_with_equal intcc_with_equal) + +;; Remove equal component from an IntCC +(decl intcc_without_equal (IntCC) IntCC) +(extern constructor intcc_without_equal intcc_without_equal) + ;; Reverse an FloatCC flag. (decl floatcc_reverse (FloatCC) FloatCC) (extern constructor floatcc_reverse floatcc_reverse) @@ -315,6 +323,12 @@ (decl sge (Type Value Value) Value) (extractor (sge ty x y) (icmp ty (IntCC.SignedGreaterThanOrEqual) x y)) +(decl intcc_le_or_ge (IntCC) IntCC) +(extern extractor intcc_le_or_ge intcc_le_or_ge) + +(decl intcc_lt_or_gt (IntCC) IntCC) +(extern extractor intcc_lt_or_gt intcc_lt_or_gt) + ;; An extractor that only matches types that can fit in 16 bits. (decl fits_in_16 (Type) Type) (extern extractor fits_in_16 fits_in_16) diff --git a/cranelift/filetests/filetests/egraph/icmp.clif b/cranelift/filetests/filetests/egraph/icmp.clif new file mode 100644 index 000000000000..ddf315f01b44 --- /dev/null +++ b/cranelift/filetests/filetests/egraph/icmp.clif @@ -0,0 +1,3004 @@ +test optimize precise-output +set opt_level=speed +set use_egraphs=true +target x86_64 + +function %icmp_and_eq_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp eq v0, v1 +; return v2 +; } + +function %icmp_and_eq_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_eq_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_eq_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_eq_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_eq_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_eq_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_eq_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_eq_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_eq_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_eq_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ne_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_ne_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ne v0, v1 +; return v2 +; } + +function %icmp_and_ne_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ult v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ne_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ult v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ne_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ugt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ne_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ugt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ne_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp slt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ne_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp slt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ne_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sgt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ne_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ne_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sgt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ult_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_ult_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ult v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ult_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; return v2 +; } + +function %icmp_and_ult_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ult v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ult_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_ult_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_ult_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; v3 = icmp slt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ult_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; v3 = icmp sle v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ult_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; v3 = icmp sgt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ult_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ult_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; v3 = icmp sge v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ule_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ule_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ult v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ule_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ult v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ule_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; return v2 +; } + +function %icmp_and_ule_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_ule_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ule_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; v3 = icmp slt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ule_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; v3 = icmp sle v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ule_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; v3 = icmp sgt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ule_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ule_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; v3 = icmp sge v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ugt_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_ugt_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ugt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ugt_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_ugt_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_ugt_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; return v2 +; } + +function %icmp_and_ugt_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ugt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_ugt_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; v3 = icmp slt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ugt_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; v3 = icmp sle v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ugt_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; v3 = icmp sgt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_ugt_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_ugt_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; v3 = icmp sge v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_uge_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_uge_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ugt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_uge_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_uge_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_uge_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ugt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_uge_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; return v2 +; } + +function %icmp_and_uge_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; v3 = icmp slt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_uge_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; v3 = icmp sle v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_uge_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; v3 = icmp sgt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_uge_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_uge_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; v3 = icmp sge v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_slt_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_slt_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp slt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_slt_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; v3 = icmp ult v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_slt_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; v3 = icmp ule v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_slt_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; v3 = icmp ugt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_slt_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; v3 = icmp uge v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_slt_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; return v2 +; } + +function %icmp_and_slt_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp slt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_slt_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_slt_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_slt_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_sle_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sle_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp slt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sle_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; v3 = icmp ult v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sle_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; v3 = icmp ule v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sle_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; v3 = icmp ugt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sle_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; v3 = icmp uge v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sle_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp slt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sle_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; return v2 +; } + +function %icmp_and_sle_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_sle_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sle_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sgt_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_sgt_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sgt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sgt_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; v3 = icmp ult v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sgt_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; v3 = icmp ule v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sgt_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; v3 = icmp ugt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sgt_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; v3 = icmp uge v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sgt_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_sgt_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_sgt_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; return v2 +; } + +function %icmp_and_sgt_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sgt_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sgt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sge_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp eq v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sge_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp ne v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sgt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sge_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp ult v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; v3 = icmp ult v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sge_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp ule v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; v3 = icmp ule v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sge_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp ugt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; v3 = icmp ugt v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sge_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp uge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; v3 = icmp uge v0, v1 +; v4 = band v2, v3 +; return v4 +; } + +function %icmp_and_sge_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp slt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 0 +; return v5 ; v5 = 0 +; } + +function %icmp_and_sge_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp sle v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp eq v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sge_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp sgt v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sgt v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_and_sge_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp sge v0, v1 + v4 = band v2, v3 + return v4 +} + +; function %icmp_and_sge_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; return v2 +; } + +function %icmp_or_eq_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp eq v0, v1 +; return v2 +; } + +function %icmp_or_eq_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_eq_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ule v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_eq_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ule v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_eq_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp uge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_eq_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp uge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_eq_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sle v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_eq_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sle v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_eq_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_eq_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp eq v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_eq_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ne_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ne_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ne v0, v1 +; return v2 +; } + +function %icmp_or_ne_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ne_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ne_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ne_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ne_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ne_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ne_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ne_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ne v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ne_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ult_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ule v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ult_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ult_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; return v2 +; } + +function %icmp_or_ult_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ule v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ult_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ult_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ult_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; v3 = icmp slt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ult_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; v3 = icmp sle v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ult_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; v3 = icmp sgt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ult_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ult v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ult_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ult v0, v1 +; v3 = icmp sge v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ule_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ule v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ule_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ule_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ule v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ule_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; return v2 +; } + +function %icmp_or_ule_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ule_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ule_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; v3 = icmp slt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ule_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; v3 = icmp sle v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ule_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; v3 = icmp sgt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ule_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ule v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ule_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ule v0, v1 +; v3 = icmp sge v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ugt_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp uge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ugt_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ugt_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ugt_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_ugt_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; return v2 +; } + +function %icmp_or_ugt_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp uge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_ugt_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; v3 = icmp slt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ugt_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; v3 = icmp sle v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ugt_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; v3 = icmp sgt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_ugt_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp ugt v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_ugt_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp ugt v0, v1 +; v3 = icmp sge v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_uge_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp uge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_uge_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_uge_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_uge_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_uge_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp uge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_uge_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; return v2 +; } + +function %icmp_or_uge_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; v3 = icmp slt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_uge_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; v3 = icmp sle v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_uge_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; v3 = icmp sgt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_uge_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp uge v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_uge_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp uge v0, v1 +; v3 = icmp sge v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_slt_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sle v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_slt_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_slt_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; v3 = icmp ult v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_slt_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; v3 = icmp ule v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_slt_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; v3 = icmp ugt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_slt_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; v3 = icmp uge v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_slt_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp slt v0, v1 +; return v2 +; } + +function %icmp_or_slt_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sle v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_slt_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_slt_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp slt v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_slt_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_sle_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sle v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_sle_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_sle_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; v3 = icmp ult v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sle_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; v3 = icmp ule v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sle_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; v3 = icmp ugt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sle_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; v3 = icmp uge v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sle_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sle v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_sle_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sle v0, v1 +; return v2 +; } + +function %icmp_or_sle_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_sle_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sle v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sle_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_sgt_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_sgt_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_sgt_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; v3 = icmp ult v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sgt_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; v3 = icmp ule v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sgt_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; v3 = icmp ugt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sgt_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; v3 = icmp uge v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sgt_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp ne v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_sgt_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_sgt_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sgt v0, v1 +; return v2 +; } + +function %icmp_or_sgt_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sgt v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sgt_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_sge_eq(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp eq v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_eq(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_sge_ne(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp ne v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_ne(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_sge_ult(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp ult v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_ult(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; v3 = icmp ult v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sge_ule(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp ule v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_ule(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; v3 = icmp ule v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sge_ugt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp ugt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_ugt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; v3 = icmp ugt v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sge_uge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp uge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_uge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; v3 = icmp uge v0, v1 +; v4 = bor v2, v3 +; return v4 +; } + +function %icmp_or_sge_slt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp slt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_slt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_sge_sle(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp sle v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_sle(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = iconst.i8 1 +; return v5 ; v5 = 1 +; } + +function %icmp_or_sge_sgt(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp sgt v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_sgt(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v5 = icmp sge v0, v1 +; v6 -> v5 +; return v5 +; } + +function %icmp_or_sge_sge(i32, i32) -> i8 { +block0(v0: i32, v1: i32): + v2 = icmp sge v0, v1 + v3 = icmp sge v0, v1 + v4 = bor v2, v3 + return v4 +} + +; function %icmp_or_sge_sge(i32, i32) -> i8 fast { +; block0(v0: i32, v1: i32): +; v2 = icmp sge v0, v1 +; return v2 +; }