OSDN Git Service

2008-08-28 Xuepeng Guo <xuepeng.guo@intel.com>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / i386 / sse4_1-roundpd-3.c
index 3950578..4a1f810 100644 (file)
@@ -2,17 +2,35 @@
 /* { dg-require-effective-target sse4 } */
 /* { dg-options "-O2 -msse4.1" } */
 
-#include "sse4_1-check.h"
+#ifndef CHECK_H
+#define CHECK_H "sse4_1-check.h"
+#endif
 
-#define VEC_T __m128d
-#define FP_T double
-#define ASM_SUFFIX "l"
+#ifndef TEST
+#define TEST sse4_1_test
+#endif
 
-#define ROUND_INTRIN(x, mode) _mm_floor_pd(x)
-#define ROUND_MODE _MM_FROUND_FLOOR
-#define CHECK_ROUND_MODE 0x01
+#include CHECK_H
 
-#define LOOP_INCREMENT 2
-#define CHECK_LOOP_INCREMENT 1
+#include <smmintrin.h>
 
-#include "sse4_1-round.h"
+static void
+TEST (void)
+{
+  union128d u, s;
+  double e[2] = {0.0};
+  int i;
+
+  s.x = _mm_set_pd (1.1234, -2.3478);
+  u.x = _mm_ceil_pd (s.x);
+
+  for (i = 0; i < 2; i++)
+    {
+      __m128d tmp = _mm_load_sd (&s.a[i]);
+      tmp = _mm_ceil_sd (tmp, tmp);
+      _mm_store_sd (&e[i], tmp);
+    }
+  
+  if (check_union128d (u, e))
+    abort ();
+}