blob: 57289bb10ebf3ffa7dfb1225268f00bc277c06c7 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-require-effective-target cv_alu } */
/* { dg-options "-march=rv32i_xcvalu -mabi=ilp32" } */
#include <stdint.h>
extern int d;
extern int e;
extern int f;
void
foo0(int a, int b)
{
d = __builtin_riscv_cv_alu_addN (a, b, 0);
e = __builtin_riscv_cv_alu_addN (a, b, 7);
f = __builtin_riscv_cv_alu_addN (a, b, 31);
}
void
foo1(int a, int b, int c)
{
d = __builtin_riscv_cv_alu_addN (a, b, c);
}
void
foo2(int a, int b)
{
d = __builtin_riscv_cv_alu_addRN (a, b, 0);
e = __builtin_riscv_cv_alu_addRN (a, b, 7);
f = __builtin_riscv_cv_alu_addRN (a, b, 31);
}
int
foo3(int a, int b, int c)
{
return __builtin_riscv_cv_alu_addRN (a, b, c);
}
void
foo4(int a, int b)
{
d = __builtin_riscv_cv_alu_adduN (a, b, 0);
e = __builtin_riscv_cv_alu_adduN (a, b, 7);
f = __builtin_riscv_cv_alu_adduN (a, b, 31);
}
int
foo5(int a, int b, int c)
{
return __builtin_riscv_cv_alu_adduN (a, b, c);
}
void
foo6(int a, int b)
{
d = __builtin_riscv_cv_alu_adduRN (a, b, 0);
e = __builtin_riscv_cv_alu_adduRN (a, b, 7);
f = __builtin_riscv_cv_alu_adduRN (a, b, 31);
}
int
foo7(int a, int b, int c)
{
return __builtin_riscv_cv_alu_adduRN (a, b, c);
}
int
foo8(int a, int b)
{
return __builtin_riscv_cv_alu_clip (a, 15);
}
int
foo9(int a, int b)
{
return __builtin_riscv_cv_alu_clip (a, 10);
}
int
foo10(int a, int b)
{
return __builtin_riscv_cv_alu_clipu (a, 15);
}
int
foo11(int a, int b)
{
return __builtin_riscv_cv_alu_clipu (a, 10);
}
int
foo12(int a)
{
return __builtin_riscv_cv_alu_extbs (a);
}
int
foo13(int a)
{
return __builtin_riscv_cv_alu_extbz (a);
}
int
foo14(int b)
{
return __builtin_riscv_cv_alu_exths (b);
}
int
foo15(int a)
{
return __builtin_riscv_cv_alu_exthz (a);
}
int
foo16(int a, int b)
{
return __builtin_riscv_cv_alu_max (a, b);
}
int
foo17(int a, int b)
{
return __builtin_riscv_cv_alu_maxu (a, b);
}
int
foo18(int a, int b)
{
return __builtin_riscv_cv_alu_min (a, b);
}
int
foo19(int a, int b)
{
return __builtin_riscv_cv_alu_minu (a, b);
}
int
foo20(int a, int b)
{
return __builtin_riscv_cv_alu_slet (a, b);
}
int
foo21(unsigned int a, unsigned int b)
{
return __builtin_riscv_cv_alu_sletu (a, b);
}
void
foo22(int a, int b)
{
d = __builtin_riscv_cv_alu_subN (a, b, 0);
e = __builtin_riscv_cv_alu_subN (a, b, 7);
f = __builtin_riscv_cv_alu_subN (a, b, 31);
}
int
foo23(int a, int b, int c)
{
return __builtin_riscv_cv_alu_subN (a, b, c);
}
void
foo24(int a, int b)
{
d = __builtin_riscv_cv_alu_subRN (a, b, 0);
e = __builtin_riscv_cv_alu_subRN (a, b, 7);
f = __builtin_riscv_cv_alu_subRN (a, b, 31);
}
int
foo25(int a, int b, int c)
{
return __builtin_riscv_cv_alu_subRN (a, b, c);
}
void
foo26(int a, int b)
{
d = __builtin_riscv_cv_alu_subuN (a, b, 0);
e = __builtin_riscv_cv_alu_subuN (a, b, 7);
f = __builtin_riscv_cv_alu_subuN (a, b, 31);
}
int
foo27(int a, int b, int c)
{
return __builtin_riscv_cv_alu_subuN (a, b, c);
}
void
foo28(int a, int b)
{
d = __builtin_riscv_cv_alu_subuRN (a, b, 0);
e = __builtin_riscv_cv_alu_subuRN (a, b, 7);
f = __builtin_riscv_cv_alu_subuRN (a, b, 31);
}
int
foo29(int a, int b, int c)
{
return __builtin_riscv_cv_alu_subuRN (a, b, c);
}
/* { dg-final { scan-assembler-times "cv\.addn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),0" 1 { target { no-opts "-O1" no-opts "-O2" no-opts "-O3" no-opts "-Og" no-opts "-Oz" no-opts "-Os" } } } } */
/* { dg-final { scan-assembler-times "cv\.addn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),7" 1 } } */
/* { dg-final { scan-assembler-times "cv\.addn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),31" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.addnr\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\.addrn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),0" 1 } } */
/* { dg-final { scan-assembler-times "cv\.addrn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),7" 1 } } */
/* { dg-final { scan-assembler-times "cv\.addrn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),31" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.addrnr\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\.addun\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),0" 1 { target { no-opts "-O1" no-opts "-O2" no-opts "-O3" no-opts "-Og" no-opts "-Oz" no-opts "-Os" } } } } */
/* { dg-final { scan-assembler-times "cv\.addun\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),7" 1 } } */
/* { dg-final { scan-assembler-times "cv\.addun\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),31" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.addunr\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\.addurn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),0" 1 } } */
/* { dg-final { scan-assembler-times "cv\.addurn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),7" 1 } } */
/* { dg-final { scan-assembler-times "cv\.addurn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),31" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.addurnr\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\.clip\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),5" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.clipr\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\.clipu\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),5" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.clipur\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.extbs\t" 1 { target { no-opts "-O1" no-opts "-O2" no-opts "-O3" no-opts "-Og" no-opts "-Oz" no-opts "-Os" } } } } */
/* { dg-final { scan-assembler-times "cv\\.extbz\t" 1 { target { no-opts "-O1" no-opts "-O2" no-opts "-O3" no-opts "-Og" no-opts "-Oz" no-opts "-Os" } } } } */
/* { dg-final { scan-assembler-times "cv\\.exths\t" 1 { target { no-opts "-O1" no-opts "-O2" no-opts "-O3" no-opts "-Og" no-opts "-Oz" no-opts "-Os" } } } } */
/* { dg-final { scan-assembler-times "cv\\.exthz\t" 1 { target { no-opts "-O1" no-opts "-O2" no-opts "-O3" no-opts "-Og" no-opts "-Oz" no-opts "-Os" } } } } */
/* { dg-final { scan-assembler-times "cv\\.max\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.maxu\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.min\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.minu\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.sle\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.sleu\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\.subn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),0" 1 { target { no-opts "-O1" no-opts "-O2" no-opts "-O3" no-opts "-Og" no-opts "-Oz" no-opts "-Os" } } } } */
/* { dg-final { scan-assembler-times "cv\.subn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),7" 1 } } */
/* { dg-final { scan-assembler-times "cv\.subn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),31" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.subnr\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\.subrn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),0" 1 } } */
/* { dg-final { scan-assembler-times "cv\.subrn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),7" 1 } } */
/* { dg-final { scan-assembler-times "cv\.subrn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),31" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.subrnr\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\.subun\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),0" 1 { target { no-opts "-O1" no-opts "-O2" no-opts "-O3" no-opts "-Og" no-opts "-Oz" no-opts "-Os" } } } } */
/* { dg-final { scan-assembler-times "cv\.subun\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),7" 1 } } */
/* { dg-final { scan-assembler-times "cv\.subun\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),31" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.subunr\t" 1 } } */
/* { dg-final { scan-assembler-times "cv\.suburn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),0" 1 } } */
/* { dg-final { scan-assembler-times "cv\.suburn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),7" 1 } } */
/* { dg-final { scan-assembler-times "cv\.suburn\t\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),\(\?\:t\[0-6\]\|a\[0-7\]\|s\[1-11\]\),31" 1 } } */
/* { dg-final { scan-assembler-times "cv\\.suburnr\t" 1 } } */