GCC with patches for OS216
修订版 | 29e9bc108f2c205b770b115aeade51674bfb5b1c (tree) |
---|---|
时间 | 2020-06-16 22:55:11 |
作者 | Srinath Parvathaneni <srinath.parvathaneni@arm....> |
Commiter | Srinath Parvathaneni |
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.
@@ -6361,7 +6361,7 @@ __arm_vorrq_n_u16 (uint16x8_t __a, const int __imm) | ||
6361 | 6361 | |
6362 | 6362 | __extension__ extern __inline uint16x8_t |
6363 | 6363 | __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) | |
6365 | 6365 | { |
6366 | 6366 | return __builtin_mve_vbicq_n_uv8hi (__a, __imm); |
6367 | 6367 | } |
@@ -6473,7 +6473,7 @@ __arm_vorrq_n_s16 (int16x8_t __a, const int __imm) | ||
6473 | 6473 | |
6474 | 6474 | __extension__ extern __inline int16x8_t |
6475 | 6475 | __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) | |
6477 | 6477 | { |
6478 | 6478 | return __builtin_mve_vbicq_n_sv8hi (__a, __imm); |
6479 | 6479 | } |
@@ -6564,7 +6564,7 @@ __arm_vorrq_n_u32 (uint32x4_t __a, const int __imm) | ||
6564 | 6564 | |
6565 | 6565 | __extension__ extern __inline uint32x4_t |
6566 | 6566 | __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) | |
6568 | 6568 | { |
6569 | 6569 | return __builtin_mve_vbicq_n_uv4si (__a, __imm); |
6570 | 6570 | } |
@@ -6676,7 +6676,7 @@ __arm_vorrq_n_s32 (int32x4_t __a, const int __imm) | ||
6676 | 6676 | |
6677 | 6677 | __extension__ extern __inline int32x4_t |
6678 | 6678 | __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) | |
6680 | 6680 | { |
6681 | 6681 | return __builtin_mve_vbicq_n_sv4si (__a, __imm); |
6682 | 6682 | } |
@@ -23182,7 +23182,7 @@ __arm_vorrq (uint16x8_t __a, const int __imm) | ||
23182 | 23182 | |
23183 | 23183 | __extension__ extern __inline uint16x8_t |
23184 | 23184 | __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) | |
23186 | 23186 | { |
23187 | 23187 | return __arm_vbicq_n_u16 (__a, __imm); |
23188 | 23188 | } |
@@ -23294,7 +23294,7 @@ __arm_vorrq (int16x8_t __a, const int __imm) | ||
23294 | 23294 | |
23295 | 23295 | __extension__ extern __inline int16x8_t |
23296 | 23296 | __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) | |
23298 | 23298 | { |
23299 | 23299 | return __arm_vbicq_n_s16 (__a, __imm); |
23300 | 23300 | } |
@@ -23385,7 +23385,7 @@ __arm_vorrq (uint32x4_t __a, const int __imm) | ||
23385 | 23385 | |
23386 | 23386 | __extension__ extern __inline uint32x4_t |
23387 | 23387 | __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) | |
23389 | 23389 | { |
23390 | 23390 | return __arm_vbicq_n_u32 (__a, __imm); |
23391 | 23391 | } |
@@ -23497,7 +23497,7 @@ __arm_vorrq (int32x4_t __a, const int __imm) | ||
23497 | 23497 | |
23498 | 23498 | __extension__ extern __inline int32x4_t |
23499 | 23499 | __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) | |
23501 | 23501 | { |
23502 | 23502 | return __arm_vbicq_n_s32 (__a, __imm); |
23503 | 23503 | } |
@@ -35963,10 +35963,10 @@ extern void *__ARM_undef; | ||
35963 | 35963 | #define __arm_vbicq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ |
35964 | 35964 | __typeof(p1) __p1 = (p1); \ |
35965 | 35965 | _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)), \ | |
35970 | 35970 | 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)), \ |
35971 | 35971 | 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)), \ |
35972 | 35972 | 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; | ||
38875 | 38875 | #define __arm_vbicq(p0,p1) ({ __typeof(p0) __p0 = (p0); \ |
38876 | 38876 | __typeof(p1) __p1 = (p1); \ |
38877 | 38877 | _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)), \ | |
38882 | 38882 | 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)), \ |
38883 | 38883 | 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)), \ |
38884 | 38884 | 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)), \ |
@@ -19,3 +19,4 @@ foo1 (float16x8_t a, float16x8_t b) | ||
19 | 19 | } |
20 | 20 | |
21 | 21 | /* { dg-final { scan-assembler "vbic" } } */ |
22 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -19,3 +19,4 @@ foo1 (float32x4_t a, float32x4_t b) | ||
19 | 19 | } |
20 | 20 | |
21 | 21 | /* { dg-final { scan-assembler "vbic" } } */ |
22 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -17,3 +17,4 @@ foo1 (int16x8_t a) | ||
17 | 17 | } |
18 | 18 | |
19 | 19 | /* { dg-final { scan-assembler-times "vbic.i16" 2 } } */ |
20 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -17,3 +17,4 @@ foo1 (int32x4_t a) | ||
17 | 17 | } |
18 | 18 | |
19 | 19 | /* { dg-final { scan-assembler-times "vbic.i32" 2 } } */ |
20 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -17,3 +17,4 @@ foo1 (uint16x8_t a) | ||
17 | 17 | } |
18 | 18 | |
19 | 19 | /* { dg-final { scan-assembler-times "vbic.i16" 2 } } */ |
20 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -17,3 +17,4 @@ foo1 (uint32x4_t a) | ||
17 | 17 | } |
18 | 18 | |
19 | 19 | /* { dg-final { scan-assembler-times "vbic.i32" 2 } } */ |
20 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -19,3 +19,4 @@ foo1 (int16x8_t a, int16x8_t b) | ||
19 | 19 | } |
20 | 20 | |
21 | 21 | /* { dg-final { scan-assembler "vbic" } } */ |
22 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -19,3 +19,4 @@ foo1 (int32x4_t a, int32x4_t b) | ||
19 | 19 | } |
20 | 20 | |
21 | 21 | /* { dg-final { scan-assembler "vbic" } } */ |
22 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -19,3 +19,4 @@ foo1 (int8x16_t a, int8x16_t b) | ||
19 | 19 | } |
20 | 20 | |
21 | 21 | /* { dg-final { scan-assembler "vbic" } } */ |
22 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -19,3 +19,4 @@ foo1 (uint16x8_t a, uint16x8_t b) | ||
19 | 19 | } |
20 | 20 | |
21 | 21 | /* { dg-final { scan-assembler "vbic" } } */ |
22 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -19,3 +19,4 @@ foo1 (uint32x4_t a, uint32x4_t b) | ||
19 | 19 | } |
20 | 20 | |
21 | 21 | /* { dg-final { scan-assembler "vbic" } } */ |
22 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |
@@ -19,3 +19,4 @@ foo1 (uint8x16_t a, uint8x16_t b) | ||
19 | 19 | } |
20 | 20 | |
21 | 21 | /* { dg-final { scan-assembler "vbic" } } */ |
22 | +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ |