]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
RISC-V: Add missing conversion tests.
authorRobin Dapp <rdapp@ventanamicro.com>
Wed, 12 Jul 2023 11:55:51 +0000 (13:55 +0200)
committerRobin Dapp <rdapp@ventanamicro.com>
Thu, 24 Aug 2023 11:12:49 +0000 (13:12 +0200)
This adds some missing tests for vf[nw]cvt.

gcc/testsuite/ChangeLog:

* gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-run.c:
Add tests.
* gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-rv32gcv.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-rv64gcv.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-template.h:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-rv32gcv.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-rv64gcv.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-template.h:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-rv32gcv.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-rv64gcv.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-template.h:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-run.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-rv32gcv.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-rv64gcv.c:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-template.h:
Ditto.
* gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c:
Ditto.

17 files changed:
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-rv32gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-rv64gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-ftoi-template.h
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-rv32gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-rv64gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-template.h
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfncvt-itof-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-rv32gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-rv64gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-template.h
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-ftoi-zvfh-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-run.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-rv32gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-rv64gcv.c
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-template.h
gcc/testsuite/gcc.target/riscv/rvv/autovec/conversions/vfwcvt-itof-zvfh-run.c

index ce3fcfa9af83f010a76e30be5399b4d9050a40bf..73eda067ba3183228e94d55fa5ad03671073dbde 100644 (file)
@@ -62,6 +62,38 @@ main ()
   RUN2 (float, uint16_t, 4096)
   RUN2 (float, uint16_t, 5975)
 
+  RUN (float, int8_t, 3)
+  RUN (float, int8_t, 4)
+  RUN (float, int8_t, 7)
+  RUN (float, int8_t, 99)
+  RUN (float, int8_t, 119)
+  RUN (float, int8_t, 128)
+  RUN (float, int8_t, 256)
+  RUN (float, int8_t, 279)
+  RUN (float, int8_t, 555)
+  RUN (float, int8_t, 1024)
+  RUN (float, int8_t, 1389)
+  RUN (float, int8_t, 2048)
+  RUN (float, int8_t, 3989)
+  RUN (float, int8_t, 4096)
+  RUN (float, int8_t, 5975)
+
+  RUN2 (float, uint8_t, 3)
+  RUN2 (float, uint8_t, 4)
+  RUN2 (float, uint8_t, 7)
+  RUN2 (float, uint8_t, 99)
+  RUN2 (float, uint8_t, 119)
+  RUN2 (float, uint8_t, 128)
+  RUN2 (float, uint8_t, 256)
+  RUN2 (float, uint8_t, 279)
+  RUN2 (float, uint8_t, 555)
+  RUN2 (float, uint8_t, 1024)
+  RUN2 (float, uint8_t, 1389)
+  RUN2 (float, uint8_t, 2048)
+  RUN2 (float, uint8_t, 3989)
+  RUN2 (float, uint8_t, 4096)
+  RUN2 (float, uint8_t, 5975)
+
   RUN (double, int32_t, 3)
   RUN (double, int32_t, 4)
   RUN (double, int32_t, 7)
@@ -93,4 +125,68 @@ main ()
   RUN2 (double, uint32_t, 3989)
   RUN2 (double, uint32_t, 4096)
   RUN2 (double, uint32_t, 5975)
+
+  RUN (double, int16_t, 3)
+  RUN (double, int16_t, 4)
+  RUN (double, int16_t, 7)
+  RUN (double, int16_t, 99)
+  RUN (double, int16_t, 119)
+  RUN (double, int16_t, 128)
+  RUN (double, int16_t, 256)
+  RUN (double, int16_t, 279)
+  RUN (double, int16_t, 555)
+  RUN (double, int16_t, 1024)
+  RUN (double, int16_t, 1389)
+  RUN (double, int16_t, 2048)
+  RUN (double, int16_t, 3989)
+  RUN (double, int16_t, 4096)
+  RUN (double, int16_t, 5975)
+
+  RUN2 (double, uint16_t, 3)
+  RUN2 (double, uint16_t, 4)
+  RUN2 (double, uint16_t, 7)
+  RUN2 (double, uint16_t, 99)
+  RUN2 (double, uint16_t, 119)
+  RUN2 (double, uint16_t, 128)
+  RUN2 (double, uint16_t, 256)
+  RUN2 (double, uint16_t, 279)
+  RUN2 (double, uint16_t, 555)
+  RUN2 (double, uint16_t, 1024)
+  RUN2 (double, uint16_t, 1389)
+  RUN2 (double, uint16_t, 2048)
+  RUN2 (double, uint16_t, 3989)
+  RUN2 (double, uint16_t, 4096)
+  RUN2 (double, uint16_t, 5975)
+
+  RUN (double, int8_t, 3)
+  RUN (double, int8_t, 4)
+  RUN (double, int8_t, 7)
+  RUN (double, int8_t, 99)
+  RUN (double, int8_t, 119)
+  RUN (double, int8_t, 128)
+  RUN (double, int8_t, 256)
+  RUN (double, int8_t, 279)
+  RUN (double, int8_t, 555)
+  RUN (double, int8_t, 1024)
+  RUN (double, int8_t, 1389)
+  RUN (double, int8_t, 2048)
+  RUN (double, int8_t, 3989)
+  RUN (double, int8_t, 4096)
+  RUN (double, int8_t, 5975)
+
+  RUN2 (double, uint8_t, 3)
+  RUN2 (double, uint8_t, 4)
+  RUN2 (double, uint8_t, 7)
+  RUN2 (double, uint8_t, 99)
+  RUN2 (double, uint8_t, 119)
+  RUN2 (double, uint8_t, 128)
+  RUN2 (double, uint8_t, 256)
+  RUN2 (double, uint8_t, 279)
+  RUN2 (double, uint8_t, 555)
+  RUN2 (double, uint8_t, 1024)
+  RUN2 (double, uint8_t, 1389)
+  RUN2 (double, uint8_t, 2048)
+  RUN2 (double, uint8_t, 3989)
+  RUN2 (double, uint8_t, 4096)
+  RUN2 (double, uint8_t, 5975)
 }
index 4bed5eb7fff2117ed26f65d4ab58898870f157d5..43967af1cd5294d4135cbb7e73e0c2efc953336b 100644 (file)
@@ -1,7 +1,9 @@
 /* { dg-do compile } */
-/* { dg-additional-options "-std=c99 -fno-vect-cost-model -march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable" } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model -march=rv32gcv_zvfh -mabi=ilp32d -fno-trapping-math --param=riscv-autovec-preference=scalable" } */
 
 #include "vfncvt-ftoi-template.h"
 
-/* { dg-final { scan-assembler-times {\tvfncvt\.rtz\.x\.f\.w} 3 } } */
+/* The vectorizer only performs int -> float conversions with
+   intermediate types with -fno-trapping-math.  */
+/* { dg-final { scan-assembler-times {\tvfncvt\.rtz\.x\.f\.w} 9 } } */
 /* { dg-final { scan-assembler-times {\tvfncvt\.rtz\.xu\.f\.w} 3 } } */
index 7efc3f31c26717263749860570eae459dc1c27f8..d49370bb925a1385576a2cf8094aa03505011c13 100644 (file)
@@ -1,7 +1,9 @@
 /* { dg-do compile } */
-/* { dg-additional-options "-std=c99 -fno-vect-cost-model -march=rv64gcv_zvfh -mabi=lp64d --param=riscv-autovec-preference=scalable" } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model -march=rv64gcv_zvfh -mabi=lp64d -fno-trapping-math --param=riscv-autovec-preference=scalable" } */
 
 #include "vfncvt-ftoi-template.h"
 
-/* { dg-final { scan-assembler-times {\tvfncvt\.rtz\.x\.f\.w} 3 } } */
+/* The vectorizer only performs int -> float conversions with
+   intermediate types with -fno-trapping-math.  */
+/* { dg-final { scan-assembler-times {\tvfncvt\.rtz\.x\.f\.w} 9 } } */
 /* { dg-final { scan-assembler-times {\tvfncvt\.rtz\.xu\.f\.w} 3 } } */
index c6efbf15ecac46625c7ec68472172b65a0f1b54b..c334e26e60ce399ef4777cdb855b638dad41796a 100644 (file)
 #define TEST_ALL()                                                             \
   TEST (double, int32_t)                                                       \
   TEST (double, uint32_t)                                                      \
+  TEST (double, int16_t)                                                       \
+  TEST (double, uint16_t)                                                      \
+  TEST (double, int8_t)                                                        \
+  TEST (double, uint8_t)                                                       \
   TEST (float, int16_t)                                                               \
   TEST (float, uint16_t)                                                      \
+  TEST (float, int8_t)                                                        \
+  TEST (float, uint8_t)                                                               \
   TEST (_Float16, int8_t)                                                     \
   TEST (_Float16, uint8_t)                                                    \
 
index dd5b95c903d4a52565046dd1b636e46548b706a2..73e4644658b333087261598f621b99f122c63317 100644 (file)
@@ -3,5 +3,6 @@
 
 #include "vfncvt-itof-template.h"
 
+/* { dg-final { scan-assembler-times {\tvfcvt\.f\.x\.v} 2 } } */
 /* { dg-final { scan-assembler-times {\tvfncvt\.f\.x\.w} 2 } } */
 /* { dg-final { scan-assembler-times {\tvfncvt\.f\.xu\.w} 2 } } */
index b3bdeced81dcdfaf7cbb11c473fafc091b4f6b66..e9d31a70e6a1ca452fa40731600fbebac6ecd1db 100644 (file)
@@ -3,5 +3,5 @@
 
 #include "vfncvt-itof-template.h"
 
-/* { dg-final { scan-assembler-times {\tvfncvt\.f\.x\.w} 2 } } */
-/* { dg-final { scan-assembler-times {\tvfncvt\.f\.xu\.w} 2 } } */
+/* { dg-final { scan-assembler-times {\tvfncvt\.f\.x\.w} 5 } } */
+/* { dg-final { scan-assembler-times {\tvfncvt\.f\.xu\.w} 1 } } */
index b06deeb3d7245117b4bf8672225500075d4c1747..c427cd167f6dad7c14d1dece2a72365dcfed567b 100644 (file)
@@ -6,12 +6,15 @@
                              TYPE1 *restrict a, int n)           \
   {                                                              \
     for (int i = 0; i < n; i++)                                          \
-      dst[i] = (TYPE2) a[i];                                      \
+      dst[i] = (TYPE2) (a[i] & 0x7ffffffful);                    \
   }
 
+
 #define TEST_ALL()                                               \
   TEST (int64_t, float)                                                  \
   TEST (uint64_t, float)                                         \
+  TEST (int64_t, _Float16)                                       \
+  TEST (uint64_t, _Float16)                                      \
   TEST (int32_t, _Float16)                                       \
   TEST (uint32_t, _Float16)                                      \
 
index b4e59c65ac7c70eefe2d9dac8a009f9262a30521..2fb9b0c7b89aacc9c1bb60659bf1b9e46efaeb64 100644 (file)
@@ -61,4 +61,36 @@ main ()
   RUN2 (uint32_t, _Float16, 3989)
   RUN2 (uint32_t, _Float16, 4096)
   RUN2 (uint32_t, _Float16, 5975)
+
+  RUN (int64_t, _Float16, 3)
+  RUN (int64_t, _Float16, 4)
+  RUN (int64_t, _Float16, 7)
+  RUN (int64_t, _Float16, 99)
+  RUN (int64_t, _Float16, 119)
+  RUN (int64_t, _Float16, 128)
+  RUN (int64_t, _Float16, 256)
+  RUN (int64_t, _Float16, 279)
+  RUN (int64_t, _Float16, 555)
+  RUN (int64_t, _Float16, 1024)
+  RUN (int64_t, _Float16, 1389)
+  RUN (int64_t, _Float16, 2048)
+  RUN (int64_t, _Float16, 3989)
+  RUN (int64_t, _Float16, 4096)
+  RUN (int64_t, _Float16, 5975)
+
+  RUN2 (uint64_t, _Float16, 3)
+  RUN2 (uint64_t, _Float16, 4)
+  RUN2 (uint64_t, _Float16, 7)
+  RUN2 (uint64_t, _Float16, 99)
+  RUN2 (uint64_t, _Float16, 119)
+  RUN2 (uint64_t, _Float16, 128)
+  RUN2 (uint64_t, _Float16, 256)
+  RUN2 (uint64_t, _Float16, 279)
+  RUN2 (uint64_t, _Float16, 555)
+  RUN2 (uint64_t, _Float16, 1024)
+  RUN2 (uint64_t, _Float16, 1389)
+  RUN2 (uint64_t, _Float16, 2048)
+  RUN2 (uint64_t, _Float16, 3989)
+  RUN2 (uint64_t, _Float16, 4096)
+  RUN2 (uint64_t, _Float16, 5975)
 }
index ce2bea48067214211dd882cbeca0884e8e7d06da..0ab42af6d70020533b4a6dfef238a7c65aefe69d 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
-/* { dg-additional-options "-std=c99 -fno-vect-cost-model -march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable" } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model -march=rv32gcv_zvfh -mabi=ilp32d -fno-trapping-math --param=riscv-autovec-preference=scalable" } */
 
 #include "vfwcvt-ftoi-template.h"
 
-/* { dg-final { scan-assembler-times {\tvfwcvt\.rtz\.x\.f\.v} 2 } } */
+/* { dg-final { scan-assembler-times {\tvfwcvt\.rtz\.x\.f\.v} 4 } } */
 /* { dg-final { scan-assembler-times {\tvfwcvt\.rtz\.xu\.f\.v} 2 } } */
index 99aa3de42811273d672b440ca44bee1f319d3802..e1a4b6314236ca086ba945de164ab463d1dcd227 100644 (file)
@@ -1,7 +1,7 @@
 /* { dg-do compile } */
-/* { dg-additional-options "-std=c99 -fno-vect-cost-model -march=rv64gcv_zvfh -mabi=lp64d --param=riscv-autovec-preference=scalable" } */
+/* { dg-additional-options "-std=c99 -fno-vect-cost-model -march=rv64gcv_zvfh -mabi=lp64d -fno-trapping-math --param=riscv-autovec-preference=scalable" } */
 
 #include "vfwcvt-ftoi-template.h"
 
-/* { dg-final { scan-assembler-times {\tvfwcvt\.rtz\.x\.f\.v} 2 } } */
+/* { dg-final { scan-assembler-times {\tvfwcvt\.rtz\.x\.f\.v} 4 } } */
 /* { dg-final { scan-assembler-times {\tvfwcvt\.rtz\.xu\.f\.v} 2 } } */
index a276351bf6919016a4fc26e6b560d227c4a166fb..aef03859d2b1e1e89c0bbfbaf49c5d4b64f938eb 100644 (file)
@@ -9,6 +9,8 @@
   }
 
 #define TEST_ALL()                                                             \
+  TEST (_Float16, int64_t)                                                     \
+  TEST (_Float16, uint64_t)                                                    \
   TEST (_Float16, int32_t)                                                     \
   TEST (_Float16, uint32_t)                                                    \
   TEST (float, int64_t)                                                               \
index 15bcd05b592862b890f5c6321f53d1f70986d8d8..5bf4bc990372827d37ba0f627af43afbb72e8196 100644 (file)
@@ -61,4 +61,36 @@ main ()
   RUN2 (_Float16, uint32_t, 3989)
   RUN2 (_Float16, uint32_t, 4096)
   RUN2 (_Float16, uint32_t, 5975)
+
+  RUN (_Float16, int64_t, 3)
+  RUN (_Float16, int64_t, 4)
+  RUN (_Float16, int64_t, 7)
+  RUN (_Float16, int64_t, 99)
+  RUN (_Float16, int64_t, 119)
+  RUN (_Float16, int64_t, 128)
+  RUN (_Float16, int64_t, 256)
+  RUN (_Float16, int64_t, 279)
+  RUN (_Float16, int64_t, 555)
+  RUN (_Float16, int64_t, 1024)
+  RUN (_Float16, int64_t, 1389)
+  RUN (_Float16, int64_t, 2048)
+  RUN (_Float16, int64_t, 3989)
+  RUN (_Float16, int64_t, 4096)
+  RUN (_Float16, int64_t, 5975)
+
+  RUN2 (_Float16, uint64_t, 3)
+  RUN2 (_Float16, uint64_t, 4)
+  RUN2 (_Float16, uint64_t, 7)
+  RUN2 (_Float16, uint64_t, 99)
+  RUN2 (_Float16, uint64_t, 119)
+  RUN2 (_Float16, uint64_t, 128)
+  RUN2 (_Float16, uint64_t, 256)
+  RUN2 (_Float16, uint64_t, 279)
+  RUN2 (_Float16, uint64_t, 555)
+  RUN2 (_Float16, uint64_t, 1024)
+  RUN2 (_Float16, uint64_t, 1389)
+  RUN2 (_Float16, uint64_t, 2048)
+  RUN2 (_Float16, uint64_t, 3989)
+  RUN2 (_Float16, uint64_t, 4096)
+  RUN2 (_Float16, uint64_t, 5975)
 }
index b9287f6955877223f92b5565a08359bb5cef09b1..a90faef462f0d6cb8f17e7fccc91682d145b979b 100644 (file)
 int
 main ()
 {
+  RUN (int8_t, float, 3)
+  RUN (int8_t, float, 4)
+  RUN (int8_t, float, 7)
+  RUN (int8_t, float, 99)
+  RUN (int8_t, float, 119)
+  RUN (int8_t, float, 128)
+  RUN (int8_t, float, 256)
+  RUN (int8_t, float, 279)
+  RUN (int8_t, float, 555)
+  RUN (int8_t, float, 1024)
+  RUN (int8_t, float, 1389)
+  RUN (int8_t, float, 2048)
+  RUN (int8_t, float, 3989)
+  RUN (int8_t, float, 4096)
+  RUN (int8_t, float, 5975)
+
+  RUN2 (uint8_t, float, 3)
+  RUN2 (uint8_t, float, 4)
+  RUN2 (uint8_t, float, 7)
+  RUN2 (uint8_t, float, 99)
+  RUN2 (uint8_t, float, 119)
+  RUN2 (uint8_t, float, 128)
+  RUN2 (uint8_t, float, 256)
+  RUN2 (uint8_t, float, 279)
+  RUN2 (uint8_t, float, 555)
+  RUN2 (uint8_t, float, 1024)
+  RUN2 (uint8_t, float, 1389)
+  RUN2 (uint8_t, float, 2048)
+  RUN2 (uint8_t, float, 3989)
+  RUN2 (uint8_t, float, 4096)
+  RUN2 (uint8_t, float, 5975)
+
+  RUN (int8_t, double, 3)
+  RUN (int8_t, double, 4)
+  RUN (int8_t, double, 7)
+  RUN (int8_t, double, 99)
+  RUN (int8_t, double, 119)
+  RUN (int8_t, double, 128)
+  RUN (int8_t, double, 256)
+  RUN (int8_t, double, 279)
+  RUN (int8_t, double, 555)
+  RUN (int8_t, double, 1024)
+  RUN (int8_t, double, 1389)
+  RUN (int8_t, double, 2048)
+  RUN (int8_t, double, 3989)
+  RUN (int8_t, double, 4096)
+  RUN (int8_t, double, 5975)
+
+  RUN2 (uint8_t, double, 3)
+  RUN2 (uint8_t, double, 4)
+  RUN2 (uint8_t, double, 7)
+  RUN2 (uint8_t, double, 99)
+  RUN2 (uint8_t, double, 119)
+  RUN2 (uint8_t, double, 128)
+  RUN2 (uint8_t, double, 256)
+  RUN2 (uint8_t, double, 279)
+  RUN2 (uint8_t, double, 555)
+  RUN2 (uint8_t, double, 1024)
+  RUN2 (uint8_t, double, 1389)
+  RUN2 (uint8_t, double, 2048)
+  RUN2 (uint8_t, double, 3989)
+  RUN2 (uint8_t, double, 4096)
+  RUN2 (uint8_t, double, 5975)
+
   RUN (int16_t, float, 3)
   RUN (int16_t, float, 4)
   RUN (int16_t, float, 7)
@@ -62,6 +126,38 @@ main ()
   RUN2 (uint16_t, float, 4096)
   RUN2 (uint16_t, float, 5975)
 
+  RUN (int16_t, double, 3)
+  RUN (int16_t, double, 4)
+  RUN (int16_t, double, 7)
+  RUN (int16_t, double, 99)
+  RUN (int16_t, double, 119)
+  RUN (int16_t, double, 128)
+  RUN (int16_t, double, 256)
+  RUN (int16_t, double, 279)
+  RUN (int16_t, double, 555)
+  RUN (int16_t, double, 1024)
+  RUN (int16_t, double, 1389)
+  RUN (int16_t, double, 2048)
+  RUN (int16_t, double, 3989)
+  RUN (int16_t, double, 4096)
+  RUN (int16_t, double, 5975)
+
+  RUN2 (uint16_t, double, 3)
+  RUN2 (uint16_t, double, 4)
+  RUN2 (uint16_t, double, 7)
+  RUN2 (uint16_t, double, 99)
+  RUN2 (uint16_t, double, 119)
+  RUN2 (uint16_t, double, 128)
+  RUN2 (uint16_t, double, 256)
+  RUN2 (uint16_t, double, 279)
+  RUN2 (uint16_t, double, 555)
+  RUN2 (uint16_t, double, 1024)
+  RUN2 (uint16_t, double, 1389)
+  RUN2 (uint16_t, double, 2048)
+  RUN2 (uint16_t, double, 3989)
+  RUN2 (uint16_t, double, 4096)
+  RUN2 (uint16_t, double, 5975)
+
   RUN (int32_t, double, 3)
   RUN (int32_t, double, 4)
   RUN (int32_t, double, 7)
index 898b9c172313596e4e743eed62f222087e8b4b75..cf180992c5dc8fcdda8b76a7d233278a837743b9 100644 (file)
@@ -3,5 +3,7 @@
 
 #include "vfwcvt-itof-template.h"
 
-/* { dg-final { scan-assembler-times {\tvfwcvt\.f\.x\.v} 3 } } */
+/* Conversions that the vectorizer does via multiple intermediate
+   types end up as signed conversions.  */
+/* { dg-final { scan-assembler-times {\tvfwcvt\.f\.x\.v} 9 } } */
 /* { dg-final { scan-assembler-times {\tvfwcvt\.f\.xu\.v} 3 } } */
index e177b63738cd2ef81531effb23c4c552da78a3a6..b1153887bd8dc40b025b7c1f0918f0bb70e64926 100644 (file)
@@ -3,5 +3,7 @@
 
 #include "vfwcvt-itof-template.h"
 
-/* { dg-final { scan-assembler-times {\tvfwcvt\.f\.x\.v} 3 } } */
+/* Conversions that the vectorizer does via multiple intermediate
+   types end up as signed conversions.  */
+/* { dg-final { scan-assembler-times {\tvfwcvt\.f\.x\.v} 9 } } */
 /* { dg-final { scan-assembler-times {\tvfwcvt\.f\.xu\.v} 3 } } */
index bd6d23870639ab5f77b7bea57160b7cb123d8fe5..e78647f63a08eed086e15e05ba1c937784f55c78 100644 (file)
   }
 
 #define TEST_ALL()                                               \
+  TEST (int8_t, _Float16)                                        \
+  TEST (uint8_t, _Float16)                                       \
+  TEST (int8_t, float)                                           \
+  TEST (uint8_t, float)                                                  \
+  TEST (int8_t, double)                                                  \
+  TEST (uint8_t, double)                                         \
   TEST (int16_t, float)                                                  \
   TEST (uint16_t, float)                                         \
+  TEST (int16_t, double)                                         \
+  TEST (uint16_t, double)                                        \
   TEST (int32_t, double)                                         \
   TEST (uint32_t, double)                                        \
-  TEST (int8_t, _Float16)                                        \
-  TEST (uint8_t, _Float16)                                       \
 
 TEST_ALL ()
index f89dc46d65f6d437e2201413cf2c7c2bbbe0cabd..15e33200f10ac0fdefc8f90d0e36c4fcde809af3 100644 (file)
@@ -37,9 +37,9 @@ main ()
   RUN (int8_t, _Float16, 20)
   RUN (int8_t, _Float16, 27)
 
-  RUN (int8_t, _Float16, 4)
-  RUN (int8_t, _Float16, 8)
-  RUN (int8_t, _Float16, 11)
-  RUN (int8_t, _Float16, 29)
-  RUN (int8_t, _Float16, 49)
+  RUN (uint8_t, _Float16, 4)
+  RUN (uint8_t, _Float16, 8)
+  RUN (uint8_t, _Float16, 11)
+  RUN (uint8_t, _Float16, 29)
+  RUN (uint8_t, _Float16, 49)
 }