| /* { 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 } } */ |