From df36cec0ddfe7b86bd79bde1b3c6f43168b70348 Mon Sep 17 00:00:00 2001
From: Uros Bizjak <ubizjak@gmail.com>
Date: Wed, 5 Sep 2012 21:49:21 +0200
Subject: [PATCH] fpu-387.h (set_fpu): Use __builtin_ia32_stmxcsr and
 __builtin_ia32_ldmxcsr intrinsics.

	* config/fpu-387.h (set_fpu): Use __builtin_ia32_stmxcsr and
	__builtin_ia32_ldmxcsr intrinsics.

From-SVN: r190992
---
 libgfortran/ChangeLog        | 5 +++++
 libgfortran/config/fpu-387.h | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 9f0ed3ec77ff..65830870d231 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2012-03-30  Uros Bizjak  <ubizjak@gmail.com>
+
+	* config/fpu-387.h (set_fpu): Use __builtin_ia32_stmxcsr and
+	__builtin_ia32_ldmxcsr intrinsics.
+
 2012-07-25  Andreas Schwab  <schwab@linux-m68k.org>
 
 	* io/list_read.c (list_formatted_read_scalar): Fix copying real
diff --git a/libgfortran/config/fpu-387.h b/libgfortran/config/fpu-387.h
index 8bf55b28a618..0e87aab8b9d0 100644
--- a/libgfortran/config/fpu-387.h
+++ b/libgfortran/config/fpu-387.h
@@ -118,7 +118,7 @@ void set_fpu (void)
     {
       unsigned int cw_sse;
 
-      asm volatile ("stmxcsr %0" : "=m" (cw_sse));
+      cw_sse = __builtin_ia32_stmxcsr ();
 
       cw_sse &= 0xffff0000;
       cw_sse |= (_FPU_MASK_IM | _FPU_MASK_DM | _FPU_MASK_ZM | _FPU_MASK_OM
@@ -131,6 +131,6 @@ void set_fpu (void)
       if (options.fpe & GFC_FPE_UNDERFLOW) cw_sse &= ~(_FPU_MASK_UM << 7);
       if (options.fpe & GFC_FPE_INEXACT) cw_sse &= ~(_FPU_MASK_PM << 7);
 
-      asm volatile ("ldmxcsr %0" : : "m" (cw_sse));
+      __builtin_ia32_ldmxcsr (cw_sse);
     }
 }
-- 
GitLab