shithub: riscv

ref: 8561a843070582d48ef7f99e1138941c3509975f
dir: /sys/src/libc/386/387/exp.s/

View raw version
TEXT	exp(SB), $0
	FLDL2E
	FMULD	a+0(FP), F0	/* now we want 2^ this number */

	FMOVD	F0, F0		/* x, x */
	FRNDINT			/* ix, x -- this is best in round mode */
	FSUBD	F0, F1		/* ix, fx */
	FXCHD	F0, F1		/* fx, ix */
	F2XM1			/* 2^fx-1, ix */
	FADDD	$1.0, F0	/* 2^fx, ix */
	FSCALE			/* 2^(fx+ix), ix */
	FMOVDP	F0, F1		/* 2^(fx+ix) == 2^x */
	RET