#define _MM_SHUFFLE(z, y, x, w) (((z) << 6) | ((y) << 4) | ((x) << 2) | (w))
-#define _MM_MASK_MASK (0x1f80)
-#define _MM_EXCEPT_MASK (0x003f)
-#define _MM_FLUSH_ZERO_MASK (0x8000)
-#define _MM_ROUND_MASK (0x6000)
+#define _MM_MASK_INVALID (0x0001)
+#define _MM_MASK_DENORM (0x0002)
+#define _MM_MASK_DIV_ZERO (0x0004)
+#define _MM_MASK_OVERFLOW (0x0008)
+#define _MM_MASK_UNDERFLOW (0x0010)
+#define _MM_MASK_INEXACT (0x0020)
+#define _MM_EXCEPT_MASK (0x003f)
+#define _MM_MASK_INVALID (0x0080)
+#define _MM_MASK_DENORM (0x0100)
+#define _MM_MASK_MASK (0x1f80)
+
+#define _MM_ROUND_MASK (0x6000)
+#define _MM_ROUND_NEAREST (0x0000)
+#define _MM_ROUND_DOWN (0x2000)
+#define _MM_ROUND_UP (0x4000)
+#define _MM_ROUND_TOWARD_ZERO (0x6000)
+
+#define _MM_FLUSH_ZERO_MASK (0x8000)
+#define _MM_FLUSH_ZERO_ON (0x8000)
+#define _MM_FLUSH_ZERO_OFF (0x8000)
#define _MM_GET_EXCEPTION_MASK() (_mm_getcsr() & _MM_MASK_MASK)
#define _MM_GET_EXCEPTION_STATE() (_mm_getcsr() & _MM_EXCEPT_MASK)