• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

GCC with patches for OS216


Commit MetaInfo

修订版29e9bc108f2c205b770b115aeade51674bfb5b1c (tree)
时间2020-06-16 22:55:11
作者Srinath Parvathaneni <srinath.parvathaneni@arm....>
CommiterSrinath Parvathaneni

Log Message

arm: Fix the MVE ACLE vbicq intrinsics.

Following MVE intrinsic testcases are failing in GCC testsuite.

Directory: gcc.target/arm/mve/intrinsics/
Testcases: vbicq_f16.c, vbicq_f32.c, vbicq_s16.c, vbicq_s32.c, vbicq_s8.c
,vbicq_u16.c, vbicq_u32.c and vbicq_u8.c.

This patch fixes the vbicq intrinsics by modifying the intrinsic parameters
and polymorphic variants in "arm_mve.h" header file.

Backported from mainline
2020-06-04 Srinath Parvathaneni <srinath.parvathaneni@arm.com>

gcc/
* config/arm/arm_mve.h (arm_vbicq_n_u16): Correct the intrinsic
arguments.
(
arm_vbicq_n_s16): Likewise.
(arm_vbicq_n_u32): Likewise.
(
arm_vbicq_n_s32): Likewise.
(arm_vbicq): Modify polymorphic variant.

gcc/testsuite/
* gcc.target/arm/mve/intrinsics/vbicq_f16.c: Modify.
* gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise.
* gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise.

更改概述

差异

--- a/gcc/config/arm/arm_mve.h
+++ b/gcc/config/arm/arm_mve.h
@@ -6361,7 +6361,7 @@ __arm_vorrq_n_u16 (uint16x8_t __a, const int __imm)
63616361
63626362 __extension__ extern __inline uint16x8_t
63636363 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6364-__arm_vbicq_n_u16 (uint16x8_t __a, const uint16_t __imm)
6364+__arm_vbicq_n_u16 (uint16x8_t __a, const int __imm)
63656365 {
63666366 return __builtin_mve_vbicq_n_uv8hi (__a, __imm);
63676367 }
@@ -6473,7 +6473,7 @@ __arm_vorrq_n_s16 (int16x8_t __a, const int __imm)
64736473
64746474 __extension__ extern __inline int16x8_t
64756475 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6476-__arm_vbicq_n_s16 (int16x8_t __a, const int16_t __imm)
6476+__arm_vbicq_n_s16 (int16x8_t __a, const int __imm)
64776477 {
64786478 return __builtin_mve_vbicq_n_sv8hi (__a, __imm);
64796479 }
@@ -6564,7 +6564,7 @@ __arm_vorrq_n_u32 (uint32x4_t __a, const int __imm)
65646564
65656565 __extension__ extern __inline uint32x4_t
65666566 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6567-__arm_vbicq_n_u32 (uint32x4_t __a, const uint32_t __imm)
6567+__arm_vbicq_n_u32 (uint32x4_t __a, const int __imm)
65686568 {
65696569 return __builtin_mve_vbicq_n_uv4si (__a, __imm);
65706570 }
@@ -6676,7 +6676,7 @@ __arm_vorrq_n_s32 (int32x4_t __a, const int __imm)
66766676
66776677 __extension__ extern __inline int32x4_t
66786678 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
6679-__arm_vbicq_n_s32 (int32x4_t __a, const int32_t __imm)
6679+__arm_vbicq_n_s32 (int32x4_t __a, const int __imm)
66806680 {
66816681 return __builtin_mve_vbicq_n_sv4si (__a, __imm);
66826682 }
@@ -23182,7 +23182,7 @@ __arm_vorrq (uint16x8_t __a, const int __imm)
2318223182
2318323183 __extension__ extern __inline uint16x8_t
2318423184 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
23185-__arm_vbicq (uint16x8_t __a, const uint16_t __imm)
23185+__arm_vbicq (uint16x8_t __a, const int __imm)
2318623186 {
2318723187 return __arm_vbicq_n_u16 (__a, __imm);
2318823188 }
@@ -23294,7 +23294,7 @@ __arm_vorrq (int16x8_t __a, const int __imm)
2329423294
2329523295 __extension__ extern __inline int16x8_t
2329623296 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
23297-__arm_vbicq (int16x8_t __a, const int16_t __imm)
23297+__arm_vbicq (int16x8_t __a, const int __imm)
2329823298 {
2329923299 return __arm_vbicq_n_s16 (__a, __imm);
2330023300 }
@@ -23385,7 +23385,7 @@ __arm_vorrq (uint32x4_t __a, const int __imm)
2338523385
2338623386 __extension__ extern __inline uint32x4_t
2338723387 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
23388-__arm_vbicq (uint32x4_t __a, const uint32_t __imm)
23388+__arm_vbicq (uint32x4_t __a, const int __imm)
2338923389 {
2339023390 return __arm_vbicq_n_u32 (__a, __imm);
2339123391 }
@@ -23497,7 +23497,7 @@ __arm_vorrq (int32x4_t __a, const int __imm)
2349723497
2349823498 __extension__ extern __inline int32x4_t
2349923499 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
23500-__arm_vbicq (int32x4_t __a, const int32_t __imm)
23500+__arm_vbicq (int32x4_t __a, const int __imm)
2350123501 {
2350223502 return __arm_vbicq_n_s32 (__a, __imm);
2350323503 }
@@ -35963,10 +35963,10 @@ extern void *__ARM_undef;
3596335963 #define __arm_vbicq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
3596435964 __typeof(p1) __p1 = (p1); \
3596535965 _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
35966- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), (const int16_t) __p1), \
35967- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), (const int32_t) __p1), \
35968- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), (const uint16_t) __p1), \
35969- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), (const uint32_t) __p1), \
35966+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce1 (__p1, int)), \
35967+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce1 (__p1, int)), \
35968+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce1 (__p1, int)), \
35969+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce1 (__p1, int)), \
3597035970 int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vbicq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
3597135971 int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vbicq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
3597235972 int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vbicq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
@@ -38875,10 +38875,10 @@ extern void *__ARM_undef;
3887538875 #define __arm_vbicq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
3887638876 __typeof(p1) __p1 = (p1); \
3887738877 _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
38878- int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), (const int16_t) __p1), \
38879- int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), (const int32_t) __p1), \
38880- int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), (const uint16_t) __p1), \
38881- int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), (const uint32_t) __p1), \
38878+ int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce1 (__p1, int)), \
38879+ int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce1 (__p1, int)), \
38880+ int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce1 (__p1, int)), \
38881+ int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vbicq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce1 (__p1, int)), \
3888238882 int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vbicq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
3888338883 int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vbicq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
3888438884 int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vbicq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f16.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f16.c
@@ -19,3 +19,4 @@ foo1 (float16x8_t a, float16x8_t b)
1919 }
2020
2121 /* { dg-final { scan-assembler "vbic" } } */
22+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_f32.c
@@ -19,3 +19,4 @@ foo1 (float32x4_t a, float32x4_t b)
1919 }
2020
2121 /* { dg-final { scan-assembler "vbic" } } */
22+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s16.c
@@ -17,3 +17,4 @@ foo1 (int16x8_t a)
1717 }
1818
1919 /* { dg-final { scan-assembler-times "vbic.i16" 2 } } */
20+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_s32.c
@@ -17,3 +17,4 @@ foo1 (int32x4_t a)
1717 }
1818
1919 /* { dg-final { scan-assembler-times "vbic.i32" 2 } } */
20+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u16.c
@@ -17,3 +17,4 @@ foo1 (uint16x8_t a)
1717 }
1818
1919 /* { dg-final { scan-assembler-times "vbic.i16" 2 } } */
20+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_n_u32.c
@@ -17,3 +17,4 @@ foo1 (uint32x4_t a)
1717 }
1818
1919 /* { dg-final { scan-assembler-times "vbic.i32" 2 } } */
20+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s16.c
@@ -19,3 +19,4 @@ foo1 (int16x8_t a, int16x8_t b)
1919 }
2020
2121 /* { dg-final { scan-assembler "vbic" } } */
22+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s32.c
@@ -19,3 +19,4 @@ foo1 (int32x4_t a, int32x4_t b)
1919 }
2020
2121 /* { dg-final { scan-assembler "vbic" } } */
22+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s8.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_s8.c
@@ -19,3 +19,4 @@ foo1 (int8x16_t a, int8x16_t b)
1919 }
2020
2121 /* { dg-final { scan-assembler "vbic" } } */
22+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u16.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u16.c
@@ -19,3 +19,4 @@ foo1 (uint16x8_t a, uint16x8_t b)
1919 }
2020
2121 /* { dg-final { scan-assembler "vbic" } } */
22+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u32.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u32.c
@@ -19,3 +19,4 @@ foo1 (uint32x4_t a, uint32x4_t b)
1919 }
2020
2121 /* { dg-final { scan-assembler "vbic" } } */
22+/* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u8.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vbicq_u8.c
@@ -19,3 +19,4 @@ foo1 (uint8x16_t a, uint8x16_t b)
1919 }
2020
2121 /* { dg-final { scan-assembler "vbic" } } */
22+/* { dg-final { scan-assembler-not "__ARM_undef" } } */