public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [AVX2] PATCH: Fixed 64-bit integer of gather* intrinsic declaration.
@ 2011-06-23 16:40 Kirill Yukhin
  2011-06-23 17:16 ` H.J. Lu
  2011-06-24  2:11 ` H.J. Lu
  0 siblings, 2 replies; 3+ messages in thread
From: Kirill Yukhin @ 2011-06-23 16:40 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 1195 bytes --]

Hi,
I've updated 64-bit integer variant of gather intrinsics declarations.
It now works while passing '-pedantic' flag.
Also I fixed copy-paste problem to avoid AVX2 tests to be executed on
AVX-capable machines.

ChangeLog.avx2 entry:
2011-06-22  Yukhin Kirill  <kirill.yukhin@intel.com>

	* gcc/config/i386/avx2intrin.h (_mm_i32gather_epi64): Fixed
	pointer type.
	(_mm256_i32gather_epi64): Likewise.
	(_mm256_mask_i32gather_epi64): Likewise.
	(_mm_i64gather_epi64): Likewise.
	(_mm_mask_i64gather_epi64): Likewise.
	(_mm256_i64gather_epi64): Likewise.
	(_mm256_mask_i64gather_epi64): Likewise.

tesuite/ChangeLog.avx2 entry:
2011-06-22  Yukhin Kirill  <kirill.yukhin@intel.com>

	* gcc.target/i386/avx2-vbroadcastsd_pd-2.c: Fixed test to run
	on AVX2 machine, not AVX.
	* gcc.target/i386/avx2-vbroadcastsi128-2.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastss_ps-2.c: Likewise.
	* gcc.target/i386/avx2-vbroadcastss_ps256-2.c: Likewise.
	* gcc.target/i386/avx2-vextracti128-2.c: Likewise.
	* gcc.target/i386/avx2-vinserti128-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskloadq256-2.c: Likewise.
	* gcc.target/i386/avx2-vpmaskstoreq256-2.c: Likewise.

Going to commit to avx2 branch.

Thanks, K

[-- Attachment #2: avx2.gatherdecls.gcc.patch --]
[-- Type: application/octet-stream, Size: 9734 bytes --]

commit 8721f561d32b46e506cc218495957295ee083cc5
Author: Kirill Yukhin <kirill.yukhin@intel.com>
Date:   Thu Jun 23 19:07:21 2011 +0400

    Fixing AVX2 tests.

diff --git a/gcc/ChangeLog.avx2 b/gcc/ChangeLog.avx2
index 1ee229e..5abe2aa 100644
--- a/gcc/ChangeLog.avx2
+++ b/gcc/ChangeLog.avx2
@@ -1,3 +1,14 @@
+2011-06-22  Yukhin Kirill  <kirill.yukhin@intel.com>
+
+	* gcc/config/i386/avx2intrin.h (_mm_i32gather_epi64): Fixed
+	pointer type.
+	(_mm256_i32gather_epi64): Likewise.
+	(_mm256_mask_i32gather_epi64): Likewise.
+	(_mm_i64gather_epi64): Likewise.
+	(_mm_mask_i64gather_epi64): Likewise.
+	(_mm256_i64gather_epi64): Likewise.
+	(_mm256_mask_i64gather_epi64): Likewise.
+
 2011-06-21  Yukhin Kirill  <kirill.yukhin@intel.com>
 
 	* gcc/config/i386/driver-i386.c (host_detect_local_cpu): Define
diff --git a/gcc/config/i386/avx2intrin.h b/gcc/config/i386/avx2intrin.h
index 435fd29..3c8f360 100644
--- a/gcc/config/i386/avx2intrin.h
+++ b/gcc/config/i386/avx2intrin.h
@@ -1431,7 +1431,8 @@ _mm256_mask_i64gather_ps (__m128 src, float const *base,
 
 extern __inline __m128i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i32gather_epi64 (int const *base, __m128i index, const int scale)
+_mm_i32gather_epi64 (long long int const *base,
+		     __m128i index, const int scale)
 {
   __v2di src = __extension__ (__v2di){ 0, 0 };
   __v2di mask = __extension__ (__v2di){ ~0, ~0 };
@@ -1445,8 +1446,8 @@ _mm_i32gather_epi64 (int const *base, __m128i index, const int scale)
 
 extern __inline __m128i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i32gather_epi64 (__m128i src, int const *base, __m128i index,
-			  __m128i mask, const int scale)
+_mm_mask_i32gather_epi64 (__m128i src, long long int const *base,
+			  __m128i index, __m128i mask, const int scale)
 {
   return (__m128i) __builtin_ia32_gathersiv2di ((__v2di)src,
 						base,
@@ -1457,7 +1458,8 @@ _mm_mask_i32gather_epi64 (__m128i src, int const *base, __m128i index,
 
 extern __inline __m256i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i32gather_epi64 (int const *base, __m128i index, const int scale)
+_mm256_i32gather_epi64 (long long int const *base,
+			__m128i index, const int scale)
 {
   __v4di src = __extension__ (__v4di){ 0, 0, 0, 0 };
   __v4di mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
@@ -1471,7 +1473,7 @@ _mm256_i32gather_epi64 (int const *base, __m128i index, const int scale)
 
 extern __inline __m256i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i32gather_epi64 (__m256i src, int const *base,
+_mm256_mask_i32gather_epi64 (__m256i src, long long int const *base,
 			     __m128i index, __m256i mask, const int scale)
 {
   return (__m256i) __builtin_ia32_gathersiv4di ((__v4di)src,
@@ -1483,7 +1485,8 @@ _mm256_mask_i32gather_epi64 (__m256i src, int const *base,
 
 extern __inline __m128i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_i64gather_epi64 (int const *base, __m128i index, const int scale)
+_mm_i64gather_epi64 (long long int const *base,
+		     __m128i index, const int scale)
 {
   __v2di src = __extension__ (__v2di){ 0, 0 };
   __v2di mask = __extension__ (__v2di){ ~0, ~0 };
@@ -1497,7 +1500,7 @@ _mm_i64gather_epi64 (int const *base, __m128i index, const int scale)
 
 extern __inline __m128i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm_mask_i64gather_epi64 (__m128i src, int const *base, __m128i index,
+_mm_mask_i64gather_epi64 (__m128i src, long long int const *base, __m128i index,
 			  __m128i mask, const int scale)
 {
   return (__m128i) __builtin_ia32_gatherdiv2di ((__v2di)src,
@@ -1509,7 +1512,8 @@ _mm_mask_i64gather_epi64 (__m128i src, int const *base, __m128i index,
 
 extern __inline __m256i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_i64gather_epi64 (int const *base, __m256i index, const int scale)
+_mm256_i64gather_epi64 (long long int const *base,
+			__m256i index, const int scale)
 {
   __v4di src = __extension__ (__v4di){ 0, 0, 0, 0 };
   __v4di mask = __extension__ (__v4di){ ~0, ~0, ~0, ~0 };
@@ -1523,7 +1527,7 @@ _mm256_i64gather_epi64 (int const *base, __m256i index, const int scale)
 
 extern __inline __m256i
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
-_mm256_mask_i64gather_epi64 (__m256i src, int const *base,
+_mm256_mask_i64gather_epi64 (__m256i src, long long int const *base,
 			     __m256i index, __m256i mask, const int scale)
 {
   return (__m256i) __builtin_ia32_gatherdiv4di ((__v4di)src,
diff --git a/gcc/testsuite/ChangeLog.avx2 b/gcc/testsuite/ChangeLog.avx2
index e02750d..17f2d4e 100644
--- a/gcc/testsuite/ChangeLog.avx2
+++ b/gcc/testsuite/ChangeLog.avx2
@@ -1,3 +1,15 @@
+2011-06-22  Yukhin Kirill  <kirill.yukhin@intel.com>
+
+	* gcc.target/i386/avx2-vbroadcastsd_pd-2.c: Fixed test to run
+	on AVX2 machine, not AVX.
+	* gcc.target/i386/avx2-vbroadcastsi128-2.c: Likewise.
+	* gcc.target/i386/avx2-vbroadcastss_ps-2.c: Likewise.
+	* gcc.target/i386/avx2-vbroadcastss_ps256-2.c: Likewise.
+	* gcc.target/i386/avx2-vextracti128-2.c: Likewise.
+	* gcc.target/i386/avx2-vinserti128-2.c: Likewise.
+	* gcc.target/i386/avx2-vpmaskloadq256-2.c: Likewise.
+	* gcc.target/i386/avx2-vpmaskstoreq256-2.c: Likewise.
+
 2011-06-21  Yukhin Kirill  <kirill.yukhin@intel.com>
 
 	* gcc.target/i386/funcspec-5.c: Add avx2 and no-avx2 targets.
diff --git a/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c b/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c
index 669c1ac..f32e566 100644
--- a/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c
@@ -3,10 +3,10 @@
 /* { dg-options "-O0 -mavx2" } */
 
 #include <string.h>
-#include "avx-check.h"
+#include "avx2-check.h"
 
 void static
-avx_test (void)
+avx2_test (void)
 {
   union128d s1;
   union256d res;
diff --git a/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c b/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
index 767c436..14ccadf 100644
--- a/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
@@ -3,10 +3,10 @@
 /* { dg-options "-O0 -mavx2" } */
 
 #include <string.h>
-#include "avx-check.h"
+#include "avx2-check.h"
 
 void static
-avx_test (void)
+avx2_test (void)
 {
   union128i_q s1;
   union256i_q res;
diff --git a/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-2.c b/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-2.c
index 6f6c82a..6089819 100644
--- a/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-2.c
@@ -3,10 +3,10 @@
 /* { dg-options "-O0 -mavx2" } */
 
 #include <string.h>
-#include "avx-check.h"
+#include "avx2-check.h"
 
 void static
-avx_test (void)
+avx2_test (void)
 {
   union128 s1, res;
   float res_ref[4];
diff --git a/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-2.c b/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-2.c
index 5635765..aef8adc 100644
--- a/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-2.c
@@ -3,10 +3,10 @@
 /* { dg-options "-O0 -mavx2" } */
 
 #include <string.h>
-#include "avx-check.h"
+#include "avx2-check.h"
 
 void static
-avx_test (void)
+avx2_test (void)
 {
   union128 s1;
   union256 res;
diff --git a/gcc/testsuite/gcc.target/i386/avx2-vextracti128-2.c b/gcc/testsuite/gcc.target/i386/avx2-vextracti128-2.c
index eb22f74..3112581 100644
--- a/gcc/testsuite/gcc.target/i386/avx2-vextracti128-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx2-vextracti128-2.c
@@ -3,10 +3,10 @@
 /* { dg-options "-O0 -mavx2" } */
 
 #include <string.h>
-#include "avx-check.h"
+#include "avx2-check.h"
 
 void static
-avx_test (void)
+avx2_test (void)
 {
   union256i_q s1;
   union128i_q res;
diff --git a/gcc/testsuite/gcc.target/i386/avx2-vinserti128-2.c b/gcc/testsuite/gcc.target/i386/avx2-vinserti128-2.c
index 009d531..fe175d0 100644
--- a/gcc/testsuite/gcc.target/i386/avx2-vinserti128-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx2-vinserti128-2.c
@@ -3,10 +3,10 @@
 /* { dg-options "-O0 -mavx2" } */
 
 #include <string.h>
-#include "avx-check.h"
+#include "avx2-check.h"
 
 void static
-avx_test (void)
+avx2_test (void)
 {
   union256i_q s1, res;
   union128i_q s2;
diff --git a/gcc/testsuite/gcc.target/i386/avx2-vpmaskloadq256-2.c b/gcc/testsuite/gcc.target/i386/avx2-vpmaskloadq256-2.c
index e8fe549..b8fca38 100644
--- a/gcc/testsuite/gcc.target/i386/avx2-vpmaskloadq256-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx2-vpmaskloadq256-2.c
@@ -2,7 +2,7 @@
 /* { dg-require-effective-target avx2 } */
 /* { dg-options "-O0 -mavx2" } */
 
-#include "avx-check.h"
+#include "avx2-check.h"
 
 #ifndef MASK
 #define MASK 7
@@ -11,7 +11,7 @@
 #define mask_v(pos) (((MASK & (0x1ULL << (pos))) >> (pos)) << 63)
 
 void static
-avx_test (void)
+avx2_test (void)
 {
   int i;
   long long m[4] = {mask_v(0), mask_v(1), mask_v(2), mask_v(3)};
diff --git a/gcc/testsuite/gcc.target/i386/avx2-vpmaskstoreq256-2.c b/gcc/testsuite/gcc.target/i386/avx2-vpmaskstoreq256-2.c
index d65c67d..82d45fd 100644
--- a/gcc/testsuite/gcc.target/i386/avx2-vpmaskstoreq256-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx2-vpmaskstoreq256-2.c
@@ -2,7 +2,7 @@
 /* { dg-require-effective-target avx2 } */
 /* { dg-options "-O0 -mavx2" } */
 
-#include "avx-check.h"
+#include "avx2-check.h"
 
 #ifndef MASK
 #define MASK 6
@@ -11,7 +11,7 @@
 #define mask_v(pos) (((MASK & (0x1ULL << (pos))) >> (pos)) << 63)
 
 void static
-avx_test (void)
+avx2_test (void)
 {
   int i;
   long long m[4] = {mask_v(0), mask_v(1), mask_v(2), mask_v(3)};

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [AVX2] PATCH: Fixed 64-bit integer of gather* intrinsic declaration.
  2011-06-23 16:40 [AVX2] PATCH: Fixed 64-bit integer of gather* intrinsic declaration Kirill Yukhin
@ 2011-06-23 17:16 ` H.J. Lu
  2011-06-24  2:11 ` H.J. Lu
  1 sibling, 0 replies; 3+ messages in thread
From: H.J. Lu @ 2011-06-23 17:16 UTC (permalink / raw)
  To: Kirill Yukhin; +Cc: gcc-patches

On Thu, Jun 23, 2011 at 9:38 AM, Kirill Yukhin <kirill.yukhin@gmail.com> wrote:
> Hi,
> I've updated 64-bit integer variant of gather intrinsics declarations.
> It now works while passing '-pedantic' flag.
> Also I fixed copy-paste problem to avoid AVX2 tests to be executed on
> AVX-capable machines.
>
> ChangeLog.avx2 entry:
> 2011-06-22  Yukhin Kirill  <kirill.yukhin@intel.com>
>
>        * gcc/config/i386/avx2intrin.h (_mm_i32gather_epi64): Fixed
>        pointer type.
>        (_mm256_i32gather_epi64): Likewise.
>        (_mm256_mask_i32gather_epi64): Likewise.
>        (_mm_i64gather_epi64): Likewise.
>        (_mm_mask_i64gather_epi64): Likewise.
>        (_mm256_i64gather_epi64): Likewise.
>        (_mm256_mask_i64gather_epi64): Likewise.
>
> tesuite/ChangeLog.avx2 entry:
> 2011-06-22  Yukhin Kirill  <kirill.yukhin@intel.com>
>
>        * gcc.target/i386/avx2-vbroadcastsd_pd-2.c: Fixed test to run
>        on AVX2 machine, not AVX.
>        * gcc.target/i386/avx2-vbroadcastsi128-2.c: Likewise.
>        * gcc.target/i386/avx2-vbroadcastss_ps-2.c: Likewise.
>        * gcc.target/i386/avx2-vbroadcastss_ps256-2.c: Likewise.
>        * gcc.target/i386/avx2-vextracti128-2.c: Likewise.
>        * gcc.target/i386/avx2-vinserti128-2.c: Likewise.
>        * gcc.target/i386/avx2-vpmaskloadq256-2.c: Likewise.
>        * gcc.target/i386/avx2-vpmaskstoreq256-2.c: Likewise.
>
> Going to commit to avx2 branch.
>
> Thanks, K
>

I will check it in for you.

Thanks.


-- 
H.J.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [AVX2] PATCH: Fixed 64-bit integer of gather* intrinsic declaration.
  2011-06-23 16:40 [AVX2] PATCH: Fixed 64-bit integer of gather* intrinsic declaration Kirill Yukhin
  2011-06-23 17:16 ` H.J. Lu
@ 2011-06-24  2:11 ` H.J. Lu
  1 sibling, 0 replies; 3+ messages in thread
From: H.J. Lu @ 2011-06-24  2:11 UTC (permalink / raw)
  To: Kirill Yukhin; +Cc: gcc-patches

On Thu, Jun 23, 2011 at 9:38 AM, Kirill Yukhin <kirill.yukhin@gmail.com> wrote:
> Hi,
> I've updated 64-bit integer variant of gather intrinsics declarations.
> It now works while passing '-pedantic' flag.
> Also I fixed copy-paste problem to avoid AVX2 tests to be executed on
> AVX-capable machines.
>
> ChangeLog.avx2 entry:
> 2011-06-22  Yukhin Kirill  <kirill.yukhin@intel.com>
>
>        * gcc/config/i386/avx2intrin.h (_mm_i32gather_epi64): Fixed
>        pointer type.
>        (_mm256_i32gather_epi64): Likewise.
>        (_mm256_mask_i32gather_epi64): Likewise.
>        (_mm_i64gather_epi64): Likewise.
>        (_mm_mask_i64gather_epi64): Likewise.
>        (_mm256_i64gather_epi64): Likewise.
>        (_mm256_mask_i64gather_epi64): Likewise.
>
> tesuite/ChangeLog.avx2 entry:
> 2011-06-22  Yukhin Kirill  <kirill.yukhin@intel.com>
>
>        * gcc.target/i386/avx2-vbroadcastsd_pd-2.c: Fixed test to run
>        on AVX2 machine, not AVX.
>        * gcc.target/i386/avx2-vbroadcastsi128-2.c: Likewise.
>        * gcc.target/i386/avx2-vbroadcastss_ps-2.c: Likewise.
>        * gcc.target/i386/avx2-vbroadcastss_ps256-2.c: Likewise.
>        * gcc.target/i386/avx2-vextracti128-2.c: Likewise.
>        * gcc.target/i386/avx2-vinserti128-2.c: Likewise.
>        * gcc.target/i386/avx2-vpmaskloadq256-2.c: Likewise.
>        * gcc.target/i386/avx2-vpmaskstoreq256-2.c: Likewise.
>
> Going to commit to avx2 branch.
>

I checked all 4 patches into avx2 branch. But I had
to apply 2 ChangaLog.avx2 patch by hand.  Please
sync with avx2 branch and double your patches next time.

Thanks.

-- 
H.J.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-06-24  1:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-23 16:40 [AVX2] PATCH: Fixed 64-bit integer of gather* intrinsic declaration Kirill Yukhin
2011-06-23 17:16 ` H.J. Lu
2011-06-24  2:11 ` H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).