Skip to content
This repository was archived by the owner on May 7, 2024. It is now read-only.

Commit da54bac

Browse files
committed
[testcases] add testcases
1 parent 3d67b3f commit da54bac

File tree

368 files changed

+7627
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

368 files changed

+7627
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* add16 also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for add16 instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t dda (uint32_t ra, uint32_t rb)
11+
{
12+
return __rv_add16 (ra, rb);
13+
}
14+
15+
static __attribute__ ((noinline))
16+
uint16x2_t ddau_v (uint16x2_t ra, uint16x2_t rb)
17+
{
18+
return __rv_v_uadd16 (ra, rb);
19+
}
20+
21+
static __attribute__ ((noinline))
22+
int16x2_t ddas_v (int16x2_t ra, int16x2_t rb)
23+
{
24+
return __rv_v_sadd16 (ra, rb);
25+
}
26+
/* { dg-final { scan-assembler-times "add16" 4 } } */
27+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/* add64 also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for add64 instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn_zpsf -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
int64_t ddas (int64_t ra, int64_t rb)
11+
{
12+
return __rv_sadd64 (ra, rb);
13+
}
14+
15+
static __attribute__ ((noinline))
16+
uint64_t ddau (uint64_t ra, uint64_t rb)
17+
{
18+
return __rv_uadd64 (ra, rb);
19+
}
20+
/* { dg-final { scan-assembler-times "add64" 3 } } */
21+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* add8 also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for add8 instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t dda (uint32_t ra, uint32_t rb)
11+
{
12+
return __rv_add8 (ra, rb);
13+
}
14+
15+
static __attribute__ ((noinline))
16+
uint8x4_t ddau_v (uint8x4_t ra, uint8x4_t rb)
17+
{
18+
return __rv_v_uadd8 (ra, rb);
19+
}
20+
21+
static __attribute__ ((noinline))
22+
int8x4_t ddas_v (int8x4_t ra, int8x4_t rb)
23+
{
24+
return __rv_v_sadd8 (ra, rb);
25+
}
26+
/* { dg-final { scan-assembler-times "add8" 4 } } */
27+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/* ave also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for ave instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
int32_t eva (int32_t ra, int32_t rb)
11+
{
12+
return __rv_ave (ra, rb);
13+
}
14+
15+
/* { dg-final { scan-assembler-times "ave" 2 } } */
16+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/* bitrev also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for bitrev instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t vertib (uint32_t ra, uint32_t rb)
11+
{
12+
return __rv_bitrev (ra, rb);
13+
}
14+
/* { dg-final { scan-assembler-times "bitrev" 2 } } */
15+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* cmpeq16 also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for cmpeq16 instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t qepmc (uint32_t ra, uint32_t rb)
11+
{
12+
return __rv_cmpeq16 (ra, rb);
13+
}
14+
15+
static __attribute__ ((noinline))
16+
uint16x2_t qepmcs_v (int16x2_t ra, int16x2_t rb)
17+
{
18+
return __rv_v_scmpeq16 (ra, rb);
19+
}
20+
21+
static __attribute__ ((noinline))
22+
uint16x2_t qepmcu_v (uint16x2_t ra, uint16x2_t rb)
23+
{
24+
return __rv_v_ucmpeq16 (ra, rb);
25+
}
26+
/* { dg-final { scan-assembler-times "cmpeq16" 4 } } */
27+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* cmpeq8 also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for cmpeq8 instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t qepmc (uint32_t ra, uint32_t rb)
11+
{
12+
return __rv_cmpeq8 (ra, rb);
13+
}
14+
15+
static __attribute__ ((noinline))
16+
uint8x4_t qepmcs_v (int8x4_t ra, int8x4_t rb)
17+
{
18+
return __rv_v_scmpeq8 (ra, rb);
19+
}
20+
21+
static __attribute__ ((noinline))
22+
uint8x4_t qepmcu_v (uint8x4_t ra, uint8x4_t rb)
23+
{
24+
return __rv_v_ucmpeq8 (ra, rb);
25+
}
26+
/* { dg-final { scan-assembler-times "cmpeq8" 4 } } */
27+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/* { dg-do compile { target riscv32*-*-* } } */
2+
/* { dg-options "-march=rv32gc_zpn_zpsf -mabi=ilp32d -O0" } */
3+
4+
5+
#include <rvp_intrinsic.h>
6+
#include <stdlib.h>
7+
8+
static __attribute__ ((noinline))
9+
uintXLEN_t foo(uintXLEN_t a) {
10+
return __rv_clrs8 (a);
11+
}
12+
13+
static __attribute__ ((noinline))
14+
uintXLEN_t foo1(uintXLEN_t a) {
15+
return __rv_clrs16 (a);
16+
}
17+
18+
static __attribute__ ((noinline))
19+
uintXLEN_t foo2(uintXLEN_t a) {
20+
return __rv_clrs32 (a);
21+
}
22+
23+
static __attribute__ ((noinline))
24+
uintXLEN_t foo3(uintXLEN_t a) {
25+
return __rv_clz8 (a);
26+
}
27+
28+
static __attribute__ ((noinline))
29+
uintXLEN_t foo4(uintXLEN_t a) {
30+
return __rv_clz16 (a);
31+
}
32+
33+
static __attribute__ ((noinline))
34+
uintXLEN_t foo5(uintXLEN_t a) {
35+
return __rv_clz32 (a);
36+
}
37+
38+
static __attribute__ ((noinline))
39+
uint8xN_t foo6(int8xN_t a) {
40+
return __rv_v_clrs8 (a);
41+
}
42+
43+
static __attribute__ ((noinline))
44+
uint16xN_t foo7(int16xN_t a) {
45+
return __rv_v_clrs16 (a);
46+
}
47+
48+
static __attribute__ ((noinline))
49+
uint8xN_t foo9(uint8xN_t a) {
50+
return __rv_v_clz8 (a);
51+
}
52+
53+
static __attribute__ ((noinline))
54+
uint16xN_t foo10(uint16xN_t a) {
55+
return __rv_v_clz16 (a);
56+
}
57+
58+
/* { dg-final { scan-assembler-times "clrs8" 2 } } */
59+
/* { dg-final { scan-assembler-times "clrs16" 2 } } */
60+
/* { dg-final { scan-assembler-times "clrs32" 1 } } */
61+
/* { dg-final { scan-assembler-times "clz8" 2 } } */
62+
/* { dg-final { scan-assembler-times "clz16" 2 } } */
63+
/* { dg-final { scan-assembler-times "clz32" 1 } } */
64+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* cras16 also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for cras16 instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t sarc (uint32_t ra, uint32_t rb)
11+
{
12+
return __rv_cras16 (ra, rb);
13+
}
14+
15+
static __attribute__ ((noinline))
16+
uint16x2_t sarcu_v (uint16x2_t ra, uint16x2_t rb)
17+
{
18+
return __rv_v_ucras16 (ra, rb);
19+
}
20+
21+
static __attribute__ ((noinline))
22+
int16x2_t sarcs_v (int16x2_t ra, int16x2_t rb)
23+
{
24+
return __rv_v_scras16 (ra, rb);
25+
}
26+
/* { dg-final { scan-assembler-times "cras16" 4 } } */
27+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* crsa16 also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for crsa16 instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t asrc (uint32_t ra, uint32_t rb)
11+
{
12+
return __rv_crsa16 (ra, rb);
13+
}
14+
15+
static __attribute__ ((noinline))
16+
uint16x2_t asrcu_v (uint16x2_t ra, uint16x2_t rb)
17+
{
18+
return __rv_v_ucrsa16 (ra, rb);
19+
}
20+
21+
static __attribute__ ((noinline))
22+
int16x2_t asrcs_v (int16x2_t ra, int16x2_t rb)
23+
{
24+
return __rv_v_scrsa16 (ra, rb);
25+
}
26+
/* { dg-final { scan-assembler-times "crsa16" 4 } } */
27+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/* insb also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for insb instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t bsni (uint32_t ra, uint32_t rb)
11+
{
12+
return __rv_insb (ra, rb, 1);
13+
}
14+
/* { dg-final { scan-assembler-times "insb" 2 } } */
15+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/* kmar64 also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for kmar64 instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn_zpsf -mabi=ilp32d -O0" } */
5+
6+
7+
#include <rvp_intrinsic.h>
8+
#include <stdlib.h>
9+
10+
static __attribute__ ((noinline))
11+
int64_t ramk (int64_t rd, int64_t ra, int64_t rb)
12+
{
13+
return __rv_kmar64 (rd, ra, rb);
14+
}
15+
16+
/* { dg-final { scan-assembler-times "kmar64" 2 } } */
17+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/* { dg-do compile { target riscv32*-*-* } } */
2+
/* { dg-options "-march=rv32gc_zpn_zpsf -mabi=ilp32d -O0" } */
3+
4+
5+
#include <rvp_intrinsic.h>
6+
#include <stdlib.h>
7+
8+
static __attribute__ ((noinline))
9+
intXLEN_t foo(intXLEN_t t, uintXLEN_t a, uintXLEN_t b) {
10+
return __rv_smaqa (t, a, b);
11+
}
12+
13+
static __attribute__ ((noinline))
14+
intXLEN_t foo1(intXLEN_t t, uintXLEN_t a, uintXLEN_t b) {
15+
return __rv_smaqa_su (t, a, b);
16+
}
17+
18+
static __attribute__ ((noinline))
19+
uintXLEN_t foo2(intXLEN_t t, uintXLEN_t a, uintXLEN_t b) {
20+
return __rv_umaqa (t, a, b);
21+
}
22+
23+
static __attribute__ ((noinline))
24+
int32xN_t foo3(int32xN_t t, int8xN_t a, int8xN_t b) {
25+
return __rv_v_smaqa (t, a, b);
26+
}
27+
28+
static __attribute__ ((noinline))
29+
int32xN_t foo4(int32xN_t t, int8xN_t a, uint8xN_t b) {
30+
return __rv_v_smaqa_su (t, a, b);
31+
}
32+
33+
static __attribute__ ((noinline))
34+
uint32xN_t foo5(uint32xN_t t, uint8xN_t a, uint8xN_t b) {
35+
return __rv_v_umaqa (t, a, b);
36+
}
37+
38+
/* { dg-final { scan-assembler-times "smaqa.su" 2 } } */
39+
/* { dg-final { scan-assembler-times "smaqa" 4 } } */
40+
/* { dg-final { scan-assembler-times "umaqa" 2 } } */
41+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/* pbsad also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for pbsad instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t dasbp (uint32_t ra, uint32_t rb)
11+
{
12+
return __rv_pbsad (ra, rb);
13+
}
14+
/* { dg-final { scan-assembler-times "pbsad" 2 } } */
15+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/* pbsada also appears on filename, so scan-assembler-times plus 1 */
2+
/* This is a test program for pbsada instruction. */
3+
/* { dg-do compile { target riscv32*-*-* } } */
4+
/* { dg-options "-march=rv32gc_zpn -mabi=ilp32d -O0" } */
5+
6+
#include <rvp_intrinsic.h>
7+
#include <stdlib.h>
8+
9+
static __attribute__ ((noinline))
10+
uint32_t adasbp (uint32_t ra, uint32_t rb, uint32_t rc)
11+
{
12+
return __rv_pbsada (ra, rb, rc);
13+
}
14+
/* { dg-final { scan-assembler-times "pbsada" 2 } } */
15+
/* { dg-final { scan-assembler-times "builtin_riscv" 0 } } */

0 commit comments

Comments
 (0)