blob: 0f599ca197c9fce3a25506a3687c9edbb9dd2153 [file]
vm.module @comparison_ops_f32 version 0
vm.type f32
vm.type i32
vm.export @test_cmp_lt_0_f32
vm.func @test_cmp_lt_0_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 -4
%i2 = vm.const.f32 4
%i3 = vm.cmp.lt.f32.o %i2, %i1
%i3 = vm.cmp.nz.i32 %i3
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "4.0 < -4.0"
}
vm.export @test_cmp_lt_1_f32
vm.func @test_cmp_lt_1_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.i32 1 // 0x00000001
%i2 = vm.const.f32 4
%i3 = vm.const.f32 -4
%i4 = vm.cmp.lt.f32.o %i3, %i2
%i1 = vm.cmp.ne.i32 %i4, %i1
vm.cond_br %i1, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "-4.0 < 4.0"
}
vm.export @test_cmp_eq_f32_near
vm.func @test_cmp_eq_f32_near() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.i32 100 // 0x00000064
%i2 = vm.const.f32.zero
%i3 = vm.const.f32 1.00003004
%i4 = vm.const.f32 1.00002003
%i5 = vm.const.f32 2
%i6 = vm.const.i32 1 // 0x00000001
%i7 = vm.const.f32 -2
%i8 = vm.cmp.lt.f32.o %i7, %i2
%i8 = vm.xor.i32 %i8, %i6
%i9 = vm.cmp.lt.f32.o %i5, %i2
%i9 = vm.xor.i32 %i9, %i6
%i8 = vm.cmp.ne.i32 %i8, %i9
vm.cond_br %i8, ^bb1(), ^bb2()
^bb1:
%i10 = vm.cmp.eq.f32.o %i7, %i5
vm.br ^bb3()
^bb2:
%i10 = vm.bitcast.f32.i32 %i7
%i11 = vm.bitcast.f32.i32 %i5
%i11 = vm.sub.i32 %i10, %i11
%i11 = vm.abs.i32 %i11
%i11 = vm.cmp.lt.i32.s %i11, %i1
vm.br ^bb3(%i11->%i10)
^bb3:
%i10 = vm.cmp.nz.i32 %i10
vm.cond_br %i10, ^bb20(), ^bb4()
^bb4:
vm.cond_br %i8, ^bb5(), ^bb6()
^bb5:
%i8 = vm.cmp.eq.f32.o %i5, %i7
vm.br ^bb7(%i8->%i7)
^bb6:
%i8 = vm.bitcast.f32.i32 %i5
%i10 = vm.bitcast.f32.i32 %i7
%i10 = vm.sub.i32 %i8, %i10
%i10 = vm.abs.i32 %i10
%i10 = vm.cmp.lt.i32.s %i10, %i1
vm.br ^bb7(%i10->%i7)
^bb7:
%i7 = vm.cmp.nz.i32 %i7
vm.cond_br %i7, ^bb19(), ^bb8()
^bb8:
%i7 = vm.cmp.lt.f32.o %i4, %i2
%i7 = vm.xor.i32 %i7, %i6
%i8 = vm.cmp.lt.f32.o %i3, %i2
%i8 = vm.xor.i32 %i8, %i6
%i8 = vm.cmp.ne.i32 %i7, %i8
vm.cond_br %i8, ^bb9(), ^bb10()
^bb9:
%i2 = vm.cmp.eq.f32.o %i4, %i3
vm.br ^bb11()
^bb10:
%i2 = vm.bitcast.f32.i32 %i4
%i8 = vm.bitcast.f32.i32 %i3
%i8 = vm.sub.i32 %i2, %i8
%i8 = vm.abs.i32 %i8
%i8 = vm.cmp.lt.i32.s %i8, %i1
vm.br ^bb11(%i8->%i2)
^bb11:
%i6 = vm.cmp.ne.i32 %i2, %i6
vm.cond_br %i6, ^bb18(), ^bb12()
^bb12:
%i9 = vm.cmp.ne.i32 %i7, %i9
vm.cond_br %i9, ^bb13(), ^bb14()
^bb13:
%i2 = vm.cmp.eq.f32.o %i4, %i5
vm.br ^bb15(%i2->%i1)
^bb14:
%i2 = vm.bitcast.f32.i32 %i4
%i3 = vm.bitcast.f32.i32 %i5
%i3 = vm.sub.i32 %i2, %i3
%i3 = vm.abs.i32 %i3
%i1 = vm.cmp.lt.i32.s %i3, %i1
vm.br ^bb15()
^bb15:
%i1 = vm.cmp.nz.i32 %i1
vm.cond_br %i1, ^bb17(), ^bb16()
^bb16:
vm.return
^bb17:
vm.fail %i0, "1.00002 !~ 2"
^bb18:
vm.fail %i0, "1.00002 ~ 1.00003"
^bb19:
vm.fail %i0, "2 !~ -2"
^bb20:
vm.fail %i0, "-2 !~ 2"
}
vm.export @test_cmp_lte_f32
vm.func @test_cmp_lte_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2
%i2 = vm.const.i32 1 // 0x00000001
%i3 = vm.const.f32 -2
%i4 = vm.cmp.lte.f32.o %i3, %i1
%i2 = vm.cmp.ne.i32 %i4, %i2
vm.cond_br %i2, ^bb4(), ^bb1()
^bb1:
%i2 = vm.cmp.lte.f32.o %i1, %i3
%i2 = vm.cmp.nz.i32 %i2
vm.cond_br %i2, ^bb3(), ^bb2()
^bb2:
vm.return
^bb3:
vm.fail %i0, "2 <= -2"
^bb4:
vm.fail %i0, "-2 <= 2"
}
vm.export @test_cmp_gt_f32
vm.func @test_cmp_gt_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2
%i2 = vm.const.i32 1 // 0x00000001
%i3 = vm.const.f32 -2
%i4 = vm.cmp.lt.f32.o %i1, %i3
%i4 = vm.cmp.nz.i32 %i4
vm.cond_br %i4, ^bb4(), ^bb1()
^bb1:
%i4 = vm.cmp.lt.f32.o %i3, %i1
%i2 = vm.cmp.ne.i32 %i4, %i2
vm.cond_br %i2, ^bb3(), ^bb2()
^bb2:
vm.return
^bb3:
vm.fail %i0, "2 > -2"
^bb4:
vm.fail %i0, "-2 > 2"
}
vm.export @test_cmp_gte_f32
vm.func @test_cmp_gte_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2
%i2 = vm.const.i32 1 // 0x00000001
%i3 = vm.const.f32 -2
%i4 = vm.cmp.lt.f32.o %i3, %i1
%i4 = vm.xor.i32 %i4, %i2
%i4 = vm.cmp.nz.i32 %i4
vm.cond_br %i4, ^bb4(), ^bb1()
^bb1:
%i4 = vm.cmp.lt.f32.o %i1, %i3
%i4 = vm.xor.i32 %i4, %i2
%i2 = vm.cmp.ne.i32 %i4, %i2
vm.cond_br %i2, ^bb3(), ^bb2()
^bb2:
vm.return
^bb3:
vm.fail %i0, "2 >= -2"
^bb4:
vm.fail %i0, "-2 >= 2"
}