1; Test basic code generation for f32 arithmetic WebAssembly instructions.
2test compile
3
4target i686 haswell
5target i686 baseline
6target x86_64 haswell
7target x86_64 baseline
8
9; Constants.
10
11function %f32_const() -> f32 {
12block0:
13    v1 = f32const 0x3.0
14    return v1
15}
16
17; Unary operations
18
19function %f32_abs(f32) -> f32 {
20block0(v0: f32):
21    v1 = fabs v0
22    return v1
23}
24
25function %f32_neg(f32) -> f32 {
26block0(v0: f32):
27    v1 = fneg v0
28    return v1
29}
30
31function %f32_sqrt(f32) -> f32 {
32block0(v0: f32):
33    v1 = sqrt v0
34    return v1
35}
36
37function %f32_ceil(f32) -> f32 {
38block0(v0: f32):
39    v1 = ceil v0
40    return v1
41}
42
43function %f32_floor(f32) -> f32 {
44block0(v0: f32):
45    v1 = floor v0
46    return v1
47}
48
49function %f32_trunc(f32) -> f32 {
50block0(v0: f32):
51    v1 = trunc v0
52    return v1
53}
54
55function %f32_nearest (f32) -> f32 {
56block0(v0: f32):
57    v1 = nearest v0
58    return v1
59}
60
61; Binary Operations
62
63function %f32_add(f32, f32) -> f32 {
64block0(v0: f32, v1: f32):
65    v2 = fadd v0, v1
66    return v2
67}
68
69function %f32_sub(f32, f32) -> f32 {
70block0(v0: f32, v1: f32):
71    v2 = fsub v0, v1
72    return v2
73}
74
75function %f32_mul(f32, f32) -> f32 {
76block0(v0: f32, v1: f32):
77    v2 = fmul v0, v1
78    return v2
79}
80
81function %f32_div(f32, f32) -> f32 {
82block0(v0: f32, v1: f32):
83    v2 = fdiv v0, v1
84    return v2
85}
86
87function %f32_min(f32, f32) -> f32 {
88block0(v0: f32, v1: f32):
89    v2 = fmin v0, v1
90    return v2
91}
92
93function %f32_max(f32, f32) -> f32 {
94block0(v0: f32, v1: f32):
95    v2 = fmax v0, v1
96    return v2
97}
98
99function %f32_copysign(f32, f32) -> f32 {
100block0(v0: f32, v1: f32):
101    v2 = fcopysign v0, v1
102    return v2
103}
104