minor fixes
[ia32rtools.git] / tests / x87_s.expect.c
1 double sub_test()
2 {
3   union { u32 d[1]; u8 b[4]; double q[1]; } sf;
4   float f_st[8];
5   int f_stp = 0;
6
7   sf.d[0] = 4;  // var_4
8   f_st[--f_stp & 7] = (float)(s32)sf.d[0];  // var_4 fild
9   f_st[--f_stp & 7] = *(float *)((u32)&sf.d[0]);  // var_4 fld
10   f_st[--f_stp & 7] = (float)(s32)sf.d[0];  // var_4 fild
11   f_st[--f_stp & 7] = 1.0;
12   f_st[--f_stp & 7] = (float)(s32)sf.d[0];  // var_4 fild
13   f_st[--f_stp & 7] = 0.0;
14   f_st[--f_stp & 7] = M_LN2;
15   f_st[--f_stp & 7] = (float)(s32)sf.d[0];  // var_4 fild
16   f_stp++;
17   f_st[(f_stp + 5) & 7] /= f_st[f_stp & 7];  f_stp++;
18   f_st[(f_stp + 1) & 7] = f_st[(f_stp + 1) & 7] * log2f(f_st[f_stp & 7]); f_stp++;  // fyl2x
19   f_st[(f_stp + 2) & 7] -= f_st[f_stp & 7];  f_stp++;
20   f_stp++;
21   { float t = f_st[f_stp & 7]; f_st[f_stp & 7] = f_st[(f_stp + 6) & 7]; f_st[(f_stp + 6) & 7] = t; }  // fxch
22   f_st[f_stp & 7] = -f_st[f_stp & 7];
23   f_st[(f_stp + 1) & 7] = atanf(f_st[(f_stp + 1) & 7] / f_st[f_stp & 7]); f_stp++;
24   sf.d[0] = (s32)f_st[f_stp & 7];  // var_4 fist
25   *(float *)((u32)&sf.d[0]) = f_st[f_stp & 7];  f_stp++;  // var_4 fst
26   return f_st[f_stp & 7];
27 }
28