1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdio.h>
3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browndouble zzz;
5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main ( void )
7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  zzz = 1.234;
9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("zzz = %f\n", zzz);
10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ __volatile__(
11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "finit\n\t"
12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "fldpi\n\t"
13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "fldl2e\n\t"
14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "pushq %r15\n\t"
15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "movq $0,%r15\n\t"
16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "add %r15,%r15\n\t"
17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "fcmovnu %st(1), %st(0)\n\t"
18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "fstl zzz\n\t"
19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "finit\n\t"
20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    "popq %r15\n\t"
21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    );
22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("zzz = %f\n", zzz);
23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  return 0;
24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
25