blob: 8ec35423af1d4181278c6a23d5e0b4c96a0532f1 [file]
vm.module @arithmetic_ops_f32 version 0
vm.type f32
vm.type i32
vm.export @test_add_f32
vm.func @test_add_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 3
%i2 = vm.const.f32 1.5
%i2 = vm.add.f32 %i2, %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "1.5+1.5=3"
}
vm.export @test_sub_f32
vm.func @test_sub_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 0.5
%i2 = vm.const.f32 2.5
%i3 = vm.const.f32 3
%i2 = vm.sub.f32 %i3, %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "3.0-2.5=0.5"
}
vm.export @test_mul_f32
vm.func @test_mul_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 6.25
%i2 = vm.const.f32 2.5
%i2 = vm.mul.f32 %i2, %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "2.5*2.5=6.25"
}
vm.export @test_div_f32
vm.func @test_div_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 -2
%i2 = vm.const.f32 4
%i2 = vm.div.f32 %i2, %i1
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "4.0/-2.0=-2.0"
}
vm.export @test_rem_f32
vm.func @test_rem_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 1
%i2 = vm.const.f32 -2
%i3 = vm.const.f32 -3
%i2 = vm.rem.f32 %i3, %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "-3.0%-2.0=1.0"
}
vm.export @test_fma_f32
vm.func @test_fma_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 11
%i2 = vm.const.f32 5
%i3 = vm.const.f32 3
%i4 = vm.const.f32 2
%i2 = vm.fma.f32 %i4, %i3, %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "2.0*3.0+5.0=11.0"
}
vm.export @test_abs_f32
vm.func @test_abs_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 1
%i2 = vm.const.f32 -1
%i2 = vm.abs.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "abs(-1.0)=1.0"
}
vm.export @test_neg_f32
vm.func @test_neg_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 1
%i2 = vm.const.f32 -1
%i2 = vm.neg.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "neg(-1.0)=1.0"
}
vm.export @test_ceil_f32
vm.func @test_ceil_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2
%i2 = vm.const.f32 1.5
%i2 = vm.ceil.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "ceil(1.5)=2.0"
}
vm.export @test_floor_f32
vm.func @test_floor_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 1
%i2 = vm.const.f32 1.5
%i2 = vm.floor.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "floor(1.5)=1.0"
}
vm.export @test_round_f32
vm.func @test_round_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2
%i2 = vm.const.f32 1.5
%i2 = vm.round.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "round(1.5)=2.0"
}
vm.export @test_round_f32_even
vm.func @test_round_f32_even() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2
%i2 = vm.const.f32 1.5
%i2 = vm.round.f32.even %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "roundeven(1.5)=2.0"
}
vm.export @test_min_f32
vm.func @test_min_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 -2
%i2 = vm.const.f32 -3
%i1 = vm.min.f32 %i2, %i1
%i3 = vm.cmp.ne.f32.o %i1, %i2
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "min(-3.0,-2.0)=-3.0"
}
vm.export @test_max_f32
vm.func @test_max_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 -2
%i2 = vm.const.f32 -3
%i2 = vm.max.f32 %i2, %i1
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "max(-3.0,-2.0)=-2.0"
}
vm.export @test_atan_f32
vm.func @test_atan_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 0.785398185
%i2 = vm.const.f32 1
%i2 = vm.atan.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "atan(1.0)=0.7853981633974483"
}
vm.export @test_atan2_f32
vm.func @test_atan2_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 1.57079637
%i2 = vm.const.f32.zero
%i3 = vm.const.f32 1
%i2 = vm.atan2.f32 %i3, %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "atan2(1.0,0.0)=1.5707963267948966"
}
vm.export @test_cos_f32
vm.func @test_cos_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 0.87758255
%i2 = vm.const.f32 0.5
%i2 = vm.cos.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "cos(0.5)=0.8775825618903728"
}
vm.export @test_sin_f32
vm.func @test_sin_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 0.47942555
%i2 = vm.const.f32 0.5
%i2 = vm.sin.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "sin(0.5)=0.479425538604203"
}
vm.export @test_exp_f32
vm.func @test_exp_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2.71828175
%i2 = vm.const.f32 1
%i2 = vm.exp.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "exp(1.0)=2.718281828459045"
}
vm.export @test_exp2_f32
vm.func @test_exp2_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 4
%i2 = vm.const.f32 2
%i2 = vm.exp2.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "exp(2.0)=4.0"
}
vm.export @test_expm1_f32
vm.func @test_expm1_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 6.38905621
%i2 = vm.const.f32 2
%i2 = vm.expm1.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "expm1(2.0)=6.38905609893065"
}
vm.export @test_log_f32
vm.func @test_log_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2.30258512
%i2 = vm.const.f32 10
%i2 = vm.log.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "log(10.0)=2.302585092994046"
}
vm.export @test_log10_f32
vm.func @test_log10_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 1
%i2 = vm.const.f32 10
%i2 = vm.log10.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "log10(10.0)=1.0"
}
vm.export @test_log1p_f32
vm.func @test_log1p_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2.39789534
%i2 = vm.const.f32 10
%i2 = vm.log1p.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "log1p(10.0)=2.3978952727983707"
}
vm.export @test_log2_f32
vm.func @test_log2_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 3.32192802
%i2 = vm.const.f32 10
%i2 = vm.log2.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "log2(10.0)=3.321928094887362"
}
vm.export @test_pow_f32
vm.func @test_pow_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 9
%i2 = vm.const.f32 2
%i3 = vm.const.f32 3
%i2 = vm.pow.f32 %i3, %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "pow(3.0,2.0)=9.0"
}
vm.export @test_rsqrt_f32
vm.func @test_rsqrt_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 0.5
%i2 = vm.const.f32 4
%i2 = vm.rsqrt.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "rsqrt(4.0)=0.5"
}
vm.export @test_sqrt_f32
vm.func @test_sqrt_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 2
%i2 = vm.const.f32 4
%i2 = vm.sqrt.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "sqrt(4.0)=2.0"
}
vm.export @test_tanh_f32
vm.func @test_tanh_f32() -> () {
^bb0:
%i0 = vm.const.i32 9 // 0x00000009
%i1 = vm.const.f32 0.462117165
%i2 = vm.const.f32 0.5
%i2 = vm.tanh.f32 %i2
%i3 = vm.cmp.ne.f32.o %i2, %i1
vm.cond_br %i3, ^bb2(), ^bb1()
^bb1:
vm.return
^bb2:
vm.fail %i0, "tanh(0.5)=0.46211715726000974"
}