diff --git a/gcc/testsuite/gcc.target/riscv/riscv.exp b/gcc/testsuite/gcc.target/riscv/riscv.exp index 187eb664047..3620ece4758 100644 --- a/gcc/testsuite/gcc.target/riscv/riscv.exp +++ b/gcc/testsuite/gcc.target/riscv/riscv.exp @@ -39,5 +39,17 @@ dg-init gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ "" $DEFAULT_CFLAGS +# Saturation alu +foreach opt { + {-O2} + {-O3} + {-Ofast} + {-Os} + {-Oz} +} { + dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/sat/*.\[cS\]]] \ + "$opt" "" +} + # All done. dg-finish diff --git a/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h b/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h new file mode 100644 index 00000000000..c8a135a5f0f --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h @@ -0,0 +1,605 @@ +#ifndef HAVE_SAT_ARITH +#define HAVE_SAT_ARITH + +#include +#include + +/******************************************************************************/ +/* Saturation Add (unsigned and signed) */ +/******************************************************************************/ +#define DEF_SAT_U_ADD_FMT_1(T) \ +T __attribute__((noinline)) \ +sat_u_add_##T##_fmt_1 (T x, T y) \ +{ \ + return (x + y) | (-(T)((T)(x + y) < x)); \ +} + +#define DEF_SAT_U_ADD_FMT_2(T) \ +T __attribute__((noinline)) \ +sat_u_add_##T##_fmt_2 (T x, T y) \ +{ \ + return (T)(x + y) >= x ? (x + y) : -1; \ +} + +#define DEF_SAT_U_ADD_FMT_3(T) \ +T __attribute__((noinline)) \ +sat_u_add_##T##_fmt_3 (T x, T y) \ +{ \ + T ret; \ + T overflow = __builtin_add_overflow (x, y, &ret); \ + return (T)(-overflow) | ret; \ +} + +#define DEF_SAT_U_ADD_FMT_4(T) \ +T __attribute__((noinline)) \ +sat_u_add_##T##_fmt_4 (T x, T y) \ +{ \ + T ret; \ + return __builtin_add_overflow (x, y, &ret) ? -1 : ret; \ +} + +#define DEF_SAT_U_ADD_FMT_5(T) \ +T __attribute__((noinline)) \ +sat_u_add_##T##_fmt_5 (T x, T y) \ +{ \ + T ret; \ + return __builtin_add_overflow (x, y, &ret) == 0 ? ret : -1; \ +} + +#define DEF_SAT_U_ADD_FMT_6(T) \ +T __attribute__((noinline)) \ +sat_u_add_##T##_fmt_6 (T x, T y) \ +{ \ + return (T)(x + y) < x ? -1 : (x + y); \ +} + +#define RUN_SAT_U_ADD_FMT_1(T, x, y) sat_u_add_##T##_fmt_1(x, y) +#define RUN_SAT_U_ADD_FMT_2(T, x, y) sat_u_add_##T##_fmt_2(x, y) +#define RUN_SAT_U_ADD_FMT_3(T, x, y) sat_u_add_##T##_fmt_3(x, y) +#define RUN_SAT_U_ADD_FMT_4(T, x, y) sat_u_add_##T##_fmt_4(x, y) +#define RUN_SAT_U_ADD_FMT_5(T, x, y) sat_u_add_##T##_fmt_5(x, y) +#define RUN_SAT_U_ADD_FMT_6(T, x, y) sat_u_add_##T##_fmt_6(x, y) + +#define DEF_SAT_U_ADD_IMM_FMT_1(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_add_imm##IMM##_##T##_fmt_1 (T x) \ +{ \ + return (T)(x + IMM) >= x ? (x + IMM) : -1; \ +} + +#define DEF_SAT_U_ADD_IMM_FMT_2(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_add_imm##IMM##_##T##_fmt_2 (T x) \ +{ \ + return (T)(x + IMM) < x ? -1 : (x + IMM); \ +} + +#define DEF_SAT_U_ADD_IMM_FMT_3(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_add_imm##IMM##_##T##_fmt_3 (T x) \ +{ \ + T ret; \ + return __builtin_add_overflow (x, IMM, &ret) ? -1 : ret; \ +} + +#define DEF_SAT_U_ADD_IMM_FMT_4(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_add_imm##IMM##_##T##_fmt_4 (T x) \ +{ \ + T ret; \ + return __builtin_add_overflow (x, IMM, &ret) == 0 ? ret : -1; \ +} + +#define DEF_SAT_U_ADD_IMM_TYPE_CHECK_FMT_1(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_add_imm_type_check##_##T##_fmt_1 (T x) \ +{ \ + T ret; \ + return __builtin_add_overflow (x, IMM, &ret) ? -1 : ret; \ +} + +#define DEF_SAT_U_ADD_IMM_TYPE_CHECK_FMT_2(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_add_imm_type_check##_##T##_fmt_2 (T x) \ +{ \ + T ret; \ + return __builtin_add_overflow (x, IMM, &ret) == 0 ? ret : -1; \ +} + +#define RUN_SAT_U_ADD_IMM_FMT_1(T, x, IMM, expect) \ + if (sat_u_add_imm##IMM##_##T##_fmt_1(x) != expect) __builtin_abort () + +#define RUN_SAT_U_ADD_IMM_FMT_2(T, x, IMM, expect) \ + if (sat_u_add_imm##IMM##_##T##_fmt_2(x) != expect) __builtin_abort () + +#define RUN_SAT_U_ADD_IMM_FMT_3(T, x, IMM, expect) \ + if (sat_u_add_imm##IMM##_##T##_fmt_3(x) != expect) __builtin_abort () + +#define RUN_SAT_U_ADD_IMM_FMT_4(T, x, IMM, expect) \ + if (sat_u_add_imm##IMM##_##T##_fmt_4(x) != expect) __builtin_abort () + +#define DEF_SAT_S_ADD_FMT_1(T, UT, MIN, MAX) \ +T __attribute__((noinline)) \ +sat_s_add_##T##_fmt_1 (T x, T y) \ +{ \ + T sum = (UT)x + (UT)y; \ + return (x ^ y) < 0 \ + ? sum \ + : (sum ^ x) >= 0 \ + ? sum \ + : x < 0 ? MIN : MAX; \ +} +#define DEF_SAT_S_ADD_FMT_1_WRAP(T, UT, MIN, MAX) \ + DEF_SAT_S_ADD_FMT_1(T, UT, MIN, MAX) + +#define DEF_SAT_S_ADD_FMT_2(T, UT, MIN, MAX) \ +T __attribute__((noinline)) \ +sat_s_add_##T##_fmt_2 (T x, T y) \ +{ \ + T sum = (UT)x + (UT)y; \ + if ((x ^ y) < 0 || (sum ^ x) >= 0) \ + return sum; \ + return x < 0 ? MIN : MAX; \ +} +#define DEF_SAT_S_ADD_FMT_2_WRAP(T, UT, MIN, MAX) \ + DEF_SAT_S_ADD_FMT_2(T, UT, MIN, MAX) + +#define DEF_SAT_S_ADD_FMT_3(T, UT, MIN, MAX) \ +T __attribute__((noinline)) \ +sat_s_add_##T##_fmt_3 (T x, T y) \ +{ \ + T sum; \ + bool overflow = __builtin_add_overflow (x, y, &sum); \ + return overflow ? x < 0 ? MIN : MAX : sum; \ +} +#define DEF_SAT_S_ADD_FMT_3_WRAP(T, UT, MIN, MAX) \ + DEF_SAT_S_ADD_FMT_3(T, UT, MIN, MAX) + +#define DEF_SAT_S_ADD_FMT_4(T, UT, MIN, MAX) \ +T __attribute__((noinline)) \ +sat_s_add_##T##_fmt_4 (T x, T y) \ +{ \ + T sum; \ + bool overflow = __builtin_add_overflow (x, y, &sum); \ + return !overflow ? sum : x < 0 ? MIN : MAX; \ +} +#define DEF_SAT_S_ADD_FMT_4_WRAP(T, UT, MIN, MAX) \ + DEF_SAT_S_ADD_FMT_4(T, UT, MIN, MAX) + +#define RUN_SAT_S_ADD_FMT_1(T, x, y) sat_s_add_##T##_fmt_1(x, y) +#define RUN_SAT_S_ADD_FMT_1_WRAP(T, x, y) RUN_SAT_S_ADD_FMT_1(T, x, y) + +#define RUN_SAT_S_ADD_FMT_2(T, x, y) sat_s_add_##T##_fmt_2(x, y) +#define RUN_SAT_S_ADD_FMT_2_WRAP(T, x, y) RUN_SAT_S_ADD_FMT_2(T, x, y) + +#define RUN_SAT_S_ADD_FMT_3(T, x, y) sat_s_add_##T##_fmt_3(x, y) +#define RUN_SAT_S_ADD_FMT_3_WRAP(T, x, y) RUN_SAT_S_ADD_FMT_3(T, x, y) + +#define RUN_SAT_S_ADD_FMT_4(T, x, y) sat_s_add_##T##_fmt_4(x, y) +#define RUN_SAT_S_ADD_FMT_4_WRAP(T, x, y) RUN_SAT_S_ADD_FMT_4(T, x, y) + +#define DEF_SAT_S_ADD_IMM_FMT_1(INDEX, T, UT, IMM, MIN, MAX) \ +T __attribute__((noinline)) \ +sat_s_add_imm_##T##_fmt_1##_##INDEX (T x) \ +{ \ + T sum = (UT)x + (UT)IMM; \ + return (x ^ IMM) < 0 \ + ? sum \ + : (sum ^ x) >= 0 \ + ? sum \ + : x < 0 ? MIN : MAX; \ +} + +#define RUN_SAT_S_ADD_IMM_FMT_1(INDEX, T, x, expect) \ + if (sat_s_add_imm##_##T##_fmt_1##_##INDEX(x) != expect) __builtin_abort () + +/******************************************************************************/ +/* Saturation Sub (Unsigned and Signed) */ +/******************************************************************************/ +#define DEF_SAT_U_SUB_FMT_1(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_1 (T x, T y) \ +{ \ + return (x - y) & (-(T)(x >= y)); \ +} + +#define DEF_SAT_U_SUB_FMT_2(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_2 (T x, T y) \ +{ \ + return (x - y) & (-(T)(x > y)); \ +} + +#define DEF_SAT_U_SUB_FMT_3(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_3 (T x, T y) \ +{ \ + return x > y ? x - y : 0; \ +} + +#define DEF_SAT_U_SUB_FMT_4(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_4 (T x, T y) \ +{ \ + return x >= y ? x - y : 0; \ +} + +#define DEF_SAT_U_SUB_FMT_5(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_5 (T x, T y) \ +{ \ + return x < y ? 0 : x - y; \ +} + +#define DEF_SAT_U_SUB_FMT_6(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_6 (T x, T y) \ +{ \ + return x <= y ? 0 : x - y; \ +} + +#define DEF_SAT_U_SUB_FMT_7(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_7 (T x, T y) \ +{ \ + T ret; \ + T overflow = __builtin_sub_overflow (x, y, &ret); \ + return ret & (T)(overflow - 1); \ +} + +#define DEF_SAT_U_SUB_FMT_8(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_8 (T x, T y) \ +{ \ + T ret; \ + T overflow = __builtin_sub_overflow (x, y, &ret); \ + return ret & (T)-(!overflow); \ +} + +#define DEF_SAT_U_SUB_FMT_9(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_9 (T x, T y) \ +{ \ + T ret; \ + T overflow = __builtin_sub_overflow (x, y, &ret); \ + return overflow ? 0 : ret; \ +} + +#define DEF_SAT_U_SUB_FMT_10(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_10 (T x, T y) \ +{ \ + T ret; \ + T overflow = __builtin_sub_overflow (x, y, &ret); \ + return !overflow ? ret : 0; \ +} + +#define DEF_SAT_U_SUB_FMT_11(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_11 (T x, T y) \ +{ \ + T ret; \ + bool overflow = __builtin_sub_overflow (x, y, &ret); \ + return overflow ? 0 : ret; \ +} + +#define DEF_SAT_U_SUB_FMT_12(T) \ +T __attribute__((noinline)) \ +sat_u_sub_##T##_fmt_12 (T x, T y) \ +{ \ + T ret; \ + bool overflow = __builtin_sub_overflow (x, y, &ret); \ + return !overflow ? ret : 0; \ +} + +#define DEF_SAT_U_SUB_IMM_FMT_1(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_sub_imm##IMM##_##T##_fmt_1 (T y) \ +{ \ + return (T)IMM >= y ? (T)IMM - y : 0; \ +} + +#define DEF_SAT_U_SUB_IMM_FMT_2(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_sub_imm##IMM##_##T##_fmt_2 (T x) \ +{ \ + return x >= (T)IMM ? x - (T)IMM : 0; \ +} + +#define DEF_SAT_U_SUB_IMM_FMT_3(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_sub_imm##IMM##_##T##_fmt_3 (T y) \ +{ \ + return (T)IMM > y ? (T)IMM - y : 0; \ +} + +#define DEF_SAT_U_SUB_IMM_FMT_4(T, IMM) \ +T __attribute__((noinline)) \ +sat_u_sub_imm##IMM##_##T##_fmt_4 (T x) \ +{ \ + return x > (T)IMM ? x - (T)IMM : 0; \ +} + +#define RUN_SAT_U_SUB_FMT_1(T, x, y) sat_u_sub_##T##_fmt_1(x, y) +#define RUN_SAT_U_SUB_FMT_2(T, x, y) sat_u_sub_##T##_fmt_2(x, y) +#define RUN_SAT_U_SUB_FMT_3(T, x, y) sat_u_sub_##T##_fmt_3(x, y) +#define RUN_SAT_U_SUB_FMT_4(T, x, y) sat_u_sub_##T##_fmt_4(x, y) +#define RUN_SAT_U_SUB_FMT_5(T, x, y) sat_u_sub_##T##_fmt_5(x, y) +#define RUN_SAT_U_SUB_FMT_6(T, x, y) sat_u_sub_##T##_fmt_6(x, y) +#define RUN_SAT_U_SUB_FMT_7(T, x, y) sat_u_sub_##T##_fmt_7(x, y) +#define RUN_SAT_U_SUB_FMT_8(T, x, y) sat_u_sub_##T##_fmt_8(x, y) +#define RUN_SAT_U_SUB_FMT_9(T, x, y) sat_u_sub_##T##_fmt_9(x, y) +#define RUN_SAT_U_SUB_FMT_10(T, x, y) sat_u_sub_##T##_fmt_10(x, y) +#define RUN_SAT_U_SUB_FMT_11(T, x, y) sat_u_sub_##T##_fmt_11(x, y) +#define RUN_SAT_U_SUB_FMT_12(T, x, y) sat_u_sub_##T##_fmt_12(x, y) + +#define RUN_SAT_U_SUB_IMM_FMT_1(T, IMM, y, expect) \ + if (sat_u_sub_imm##IMM##_##T##_fmt_1(y) != expect) __builtin_abort () +#define RUN_SAT_U_SUB_IMM_FMT_2(T, x, IMM, expect) \ + if (sat_u_sub_imm##IMM##_##T##_fmt_2(x) != expect) __builtin_abort () +#define RUN_SAT_U_SUB_IMM_FMT_3(T, IMM, y, expect) \ + if (sat_u_sub_imm##IMM##_##T##_fmt_3(y) != expect) __builtin_abort () +#define RUN_SAT_U_SUB_IMM_FMT_4(T, x, IMM, expect) \ + if (sat_u_sub_imm##IMM##_##T##_fmt_4(x) != expect) __builtin_abort () + +#define DEF_SAT_U_SUB_IMM_TYPE_CHECK_FMT_1(INDEX, T, IMM) \ +T __attribute__((noinline)) \ +sat_u_sub_imm_type_check##_##INDEX##_##T##_fmt_1 (T y) \ +{ \ + return IMM >= y ? IMM - y : 0; \ +} + +#define DEF_SAT_U_SUB_IMM_TYPE_CHECK_FMT_2(INDEX, T, IMM) \ +T __attribute__((noinline)) \ +sat_u_sub_imm_type_check##_##INDEX##_##T##_fmt_2 (T y) \ +{ \ + return IMM > y ? IMM - y : 0; \ +} + +#define DEF_SAT_U_SUB_IMM_TYPE_CHECK_FMT_3(INDEX, T, IMM) \ +T __attribute__((noinline)) \ +sat_u_sub_imm_type_check##_##INDEX##_##T##_fmt_3 (T x) \ +{ \ + return x >= IMM ? x - IMM : 0; \ +} + +#define DEF_SAT_U_SUB_IMM_TYPE_CHECK_FMT_4(INDEX, T, IMM) \ +T __attribute__((noinline)) \ +sat_u_sub_imm_type_check##_##INDEX##_##T##_fmt_4 (T x) \ +{ \ + return x > IMM ? x - IMM : 0; \ +} + +#define DEF_SAT_S_SUB_FMT_1(T, UT, MIN, MAX) \ +T __attribute__((noinline)) \ +sat_s_sub_##T##_fmt_1 (T x, T y) \ +{ \ + T minus = (UT)x - (UT)y; \ + return (x ^ y) >= 0 \ + ? minus \ + : (minus ^ x) >= 0 \ + ? minus \ + : x < 0 ? MIN : MAX; \ +} +#define DEF_SAT_S_SUB_FMT_1_WRAP(T, UT, MIN, MAX) \ + DEF_SAT_S_SUB_FMT_1(T, UT, MIN, MAX) + +#define DEF_SAT_S_SUB_FMT_2(T, UT, MIN, MAX) \ +T __attribute__((noinline)) \ +sat_s_sub_##T##_fmt_2 (T x, T y) \ +{ \ + T minus = (UT)x - (UT)y; \ + if ((x ^ y) >= 0 || (minus ^ x) >= 0) \ + return minus; \ + return x < 0 ? MIN : MAX; \ +} +#define DEF_SAT_S_SUB_FMT_2_WRAP(T, UT, MIN, MAX) \ + DEF_SAT_S_SUB_FMT_2(T, UT, MIN, MAX) + +#define DEF_SAT_S_SUB_FMT_3(T, UT, MIN, MAX) \ +T __attribute__((noinline)) \ +sat_s_sub_##T##_fmt_3 (T x, T y) \ +{ \ + T minus; \ + bool overflow = __builtin_sub_overflow (x, y, &minus); \ + return overflow ? x < 0 ? MIN : MAX : minus; \ +} +#define DEF_SAT_S_SUB_FMT_3_WRAP(T, UT, MIN, MAX) \ + DEF_SAT_S_SUB_FMT_3(T, UT, MIN, MAX) + +#define DEF_SAT_S_SUB_FMT_4(T, UT, MIN, MAX) \ +T __attribute__((noinline)) \ +sat_s_sub_##T##_fmt_4 (T x, T y) \ +{ \ + T minus; \ + bool overflow = __builtin_sub_overflow (x, y, &minus); \ + return !overflow ? minus : x < 0 ? MIN : MAX; \ +} +#define DEF_SAT_S_SUB_FMT_4_WRAP(T, UT, MIN, MAX) \ + DEF_SAT_S_SUB_FMT_4(T, UT, MIN, MAX) + +#define RUN_SAT_S_SUB_FMT_1(T, x, y) sat_s_sub_##T##_fmt_1(x, y) +#define RUN_SAT_S_SUB_FMT_1_WRAP(T, x, y) RUN_SAT_S_SUB_FMT_1(T, x, y) + +#define RUN_SAT_S_SUB_FMT_2(T, x, y) sat_s_sub_##T##_fmt_2(x, y) +#define RUN_SAT_S_SUB_FMT_2_WRAP(T, x, y) RUN_SAT_S_SUB_FMT_2(T, x, y) + +#define RUN_SAT_S_SUB_FMT_3(T, x, y) sat_s_sub_##T##_fmt_3(x, y) +#define RUN_SAT_S_SUB_FMT_3_WRAP(T, x, y) RUN_SAT_S_SUB_FMT_3(T, x, y) + +#define RUN_SAT_S_SUB_FMT_4(T, x, y) sat_s_sub_##T##_fmt_4(x, y) +#define RUN_SAT_S_SUB_FMT_4_WRAP(T, x, y) RUN_SAT_S_SUB_FMT_4(T, x, y) + +/******************************************************************************/ +/* Saturation Truncate (unsigned and signed) */ +/******************************************************************************/ + +#define DEF_SAT_U_TRUNC_FMT_1(NT, WT) \ +NT __attribute__((noinline)) \ +sat_u_trunc_##WT##_to_##NT##_fmt_1 (WT x) \ +{ \ + bool overflow = x > (WT)(NT)(-1); \ + return ((NT)x) | (NT)-overflow; \ +} +#define DEF_SAT_U_TRUNC_FMT_1_WRAP(NT, WT) DEF_SAT_U_TRUNC_FMT_1(NT, WT) + +#define DEF_SAT_U_TRUNC_FMT_2(NT, WT) \ +NT __attribute__((noinline)) \ +sat_u_trunc_##WT##_to_##NT##_fmt_2 (WT x) \ +{ \ + WT max = (WT)(NT)-1; \ + return x > max ? (NT) max : (NT)x; \ +} +#define DEF_SAT_U_TRUNC_FMT_2_WRAP(NT, WT) DEF_SAT_U_TRUNC_FMT_2(NT, WT) + +#define DEF_SAT_U_TRUNC_FMT_3(NT, WT) \ +NT __attribute__((noinline)) \ +sat_u_trunc_##WT##_to_##NT##_fmt_3 (WT x) \ +{ \ + WT max = (WT)(NT)-1; \ + return x <= max ? (NT)x : (NT) max; \ +} +#define DEF_SAT_U_TRUNC_FMT_3_WRAP(NT, WT) DEF_SAT_U_TRUNC_FMT_3(NT, WT) + +#define DEF_SAT_U_TRUNC_FMT_4(NT, WT) \ +NT __attribute__((noinline)) \ +sat_u_trunc_##WT##_to_##NT##_fmt_4 (WT x) \ +{ \ + bool not_overflow = x <= (WT)(NT)(-1); \ + return ((NT)x) | (NT)((NT)not_overflow - 1); \ +} +#define DEF_SAT_U_TRUNC_FMT_4_WRAP(NT, WT) DEF_SAT_U_TRUNC_FMT_4(NT, WT) + +#define RUN_SAT_U_TRUNC_FMT_1(NT, WT, x) sat_u_trunc_##WT##_to_##NT##_fmt_1 (x) +#define RUN_SAT_U_TRUNC_FMT_1_WRAP(NT, WT, x) RUN_SAT_U_TRUNC_FMT_1(NT, WT, x) + +#define RUN_SAT_U_TRUNC_FMT_2(NT, WT, x) sat_u_trunc_##WT##_to_##NT##_fmt_2 (x) +#define RUN_SAT_U_TRUNC_FMT_2_WRAP(NT, WT, x) RUN_SAT_U_TRUNC_FMT_2(NT, WT, x) + +#define RUN_SAT_U_TRUNC_FMT_3(NT, WT, x) sat_u_trunc_##WT##_to_##NT##_fmt_3 (x) +#define RUN_SAT_U_TRUNC_FMT_3_WRAP(NT, WT, x) RUN_SAT_U_TRUNC_FMT_3(NT, WT, x) + +#define RUN_SAT_U_TRUNC_FMT_4(NT, WT, x) sat_u_trunc_##WT##_to_##NT##_fmt_4 (x) +#define RUN_SAT_U_TRUNC_FMT_4_WRAP(NT, WT, x) RUN_SAT_U_TRUNC_FMT_4(NT, WT, x) + +#define DEF_SAT_S_TRUNC_FMT_1(NT, WT, NT_MIN, NT_MAX) \ +NT __attribute__((noinline)) \ +sat_s_trunc_##WT##_to_##NT##_fmt_1 (WT x) \ +{ \ + NT trunc = (NT)x; \ + return (WT)NT_MIN <= x && x <= (WT)NT_MAX \ + ? trunc \ + : x < 0 ? NT_MIN : NT_MAX; \ +} +#define DEF_SAT_S_TRUNC_FMT_1_WRAP(NT, WT, NT_MIN, NT_MAX) \ + DEF_SAT_S_TRUNC_FMT_1(NT, WT, NT_MIN, NT_MAX) + +#define DEF_SAT_S_TRUNC_FMT_2(NT, WT, NT_MIN, NT_MAX) \ +NT __attribute__((noinline)) \ +sat_s_trunc_##WT##_to_##NT##_fmt_2 (WT x) \ +{ \ + NT trunc = (NT)x; \ + return (WT)NT_MIN < x && x < (WT)NT_MAX \ + ? trunc \ + : x < 0 ? NT_MIN : NT_MAX; \ +} +#define DEF_SAT_S_TRUNC_FMT_2_WRAP(NT, WT, NT_MIN, NT_MAX) \ + DEF_SAT_S_TRUNC_FMT_2(NT, WT, NT_MIN, NT_MAX) + +#define DEF_SAT_S_TRUNC_FMT_3(NT, WT, NT_MIN, NT_MAX) \ +NT __attribute__((noinline)) \ +sat_s_trunc_##WT##_to_##NT##_fmt_3 (WT x) \ +{ \ + NT trunc = (NT)x; \ + return (WT)NT_MIN < x && x <= (WT)NT_MAX \ + ? trunc \ + : x < 0 ? NT_MIN : NT_MAX; \ +} +#define DEF_SAT_S_TRUNC_FMT_3_WRAP(NT, WT, NT_MIN, NT_MAX) \ + DEF_SAT_S_TRUNC_FMT_3(NT, WT, NT_MIN, NT_MAX) + +#define DEF_SAT_S_TRUNC_FMT_4(NT, WT, NT_MIN, NT_MAX) \ +NT __attribute__((noinline)) \ +sat_s_trunc_##WT##_to_##NT##_fmt_4 (WT x) \ +{ \ + NT trunc = (NT)x; \ + return (WT)NT_MIN <= x && x < (WT)NT_MAX \ + ? trunc \ + : x < 0 ? NT_MIN : NT_MAX; \ +} +#define DEF_SAT_S_TRUNC_FMT_4_WRAP(NT, WT, NT_MIN, NT_MAX) \ + DEF_SAT_S_TRUNC_FMT_4(NT, WT, NT_MIN, NT_MAX) + +#define DEF_SAT_S_TRUNC_FMT_5(NT, WT, NT_MIN, NT_MAX) \ +NT __attribute__((noinline)) \ +sat_s_trunc_##WT##_to_##NT##_fmt_5 (WT x) \ +{ \ + NT trunc = (NT)x; \ + return (WT)NT_MIN > x || x > (WT)NT_MAX \ + ? x < 0 ? NT_MIN : NT_MAX \ + : trunc; \ +} +#define DEF_SAT_S_TRUNC_FMT_5_WRAP(NT, WT, NT_MIN, NT_MAX) \ + DEF_SAT_S_TRUNC_FMT_5(NT, WT, NT_MIN, NT_MAX) + +#define DEF_SAT_S_TRUNC_FMT_6(NT, WT, NT_MIN, NT_MAX) \ +NT __attribute__((noinline)) \ +sat_s_trunc_##WT##_to_##NT##_fmt_6 (WT x) \ +{ \ + NT trunc = (NT)x; \ + return (WT)NT_MIN >= x || x > (WT)NT_MAX \ + ? x < 0 ? NT_MIN : NT_MAX \ + : trunc; \ +} +#define DEF_SAT_S_TRUNC_FMT_6_WRAP(NT, WT, NT_MIN, NT_MAX) \ + DEF_SAT_S_TRUNC_FMT_6(NT, WT, NT_MIN, NT_MAX) + +#define DEF_SAT_S_TRUNC_FMT_7(NT, WT, NT_MIN, NT_MAX) \ +NT __attribute__((noinline)) \ +sat_s_trunc_##WT##_to_##NT##_fmt_7 (WT x) \ +{ \ + NT trunc = (NT)x; \ + return (WT)NT_MIN >= x || x >= (WT)NT_MAX \ + ? x < 0 ? NT_MIN : NT_MAX \ + : trunc; \ +} +#define DEF_SAT_S_TRUNC_FMT_7_WRAP(NT, WT, NT_MIN, NT_MAX) \ + DEF_SAT_S_TRUNC_FMT_7(NT, WT, NT_MIN, NT_MAX) + +#define DEF_SAT_S_TRUNC_FMT_8(NT, WT, NT_MIN, NT_MAX) \ +NT __attribute__((noinline)) \ +sat_s_trunc_##WT##_to_##NT##_fmt_8 (WT x) \ +{ \ + NT trunc = (NT)x; \ + return (WT)NT_MIN > x || x >= (WT)NT_MAX \ + ? x < 0 ? NT_MIN : NT_MAX \ + : trunc; \ +} +#define DEF_SAT_S_TRUNC_FMT_8_WRAP(NT, WT, NT_MIN, NT_MAX) \ + DEF_SAT_S_TRUNC_FMT_8(NT, WT, NT_MIN, NT_MAX) + +#define RUN_SAT_S_TRUNC_FMT_1(NT, WT, x) sat_s_trunc_##WT##_to_##NT##_fmt_1 (x) +#define RUN_SAT_S_TRUNC_FMT_1_WRAP(NT, WT, x) RUN_SAT_S_TRUNC_FMT_1(NT, WT, x) + +#define RUN_SAT_S_TRUNC_FMT_2(NT, WT, x) sat_s_trunc_##WT##_to_##NT##_fmt_2 (x) +#define RUN_SAT_S_TRUNC_FMT_2_WRAP(NT, WT, x) RUN_SAT_S_TRUNC_FMT_2(NT, WT, x) + +#define RUN_SAT_S_TRUNC_FMT_3(NT, WT, x) sat_s_trunc_##WT##_to_##NT##_fmt_3 (x) +#define RUN_SAT_S_TRUNC_FMT_3_WRAP(NT, WT, x) RUN_SAT_S_TRUNC_FMT_3(NT, WT, x) + +#define RUN_SAT_S_TRUNC_FMT_4(NT, WT, x) sat_s_trunc_##WT##_to_##NT##_fmt_4 (x) +#define RUN_SAT_S_TRUNC_FMT_4_WRAP(NT, WT, x) RUN_SAT_S_TRUNC_FMT_4(NT, WT, x) + +#define RUN_SAT_S_TRUNC_FMT_5(NT, WT, x) sat_s_trunc_##WT##_to_##NT##_fmt_5 (x) +#define RUN_SAT_S_TRUNC_FMT_5_WRAP(NT, WT, x) RUN_SAT_S_TRUNC_FMT_5(NT, WT, x) + +#define RUN_SAT_S_TRUNC_FMT_6(NT, WT, x) sat_s_trunc_##WT##_to_##NT##_fmt_6 (x) +#define RUN_SAT_S_TRUNC_FMT_6_WRAP(NT, WT, x) RUN_SAT_S_TRUNC_FMT_6(NT, WT, x) + +#define RUN_SAT_S_TRUNC_FMT_7(NT, WT, x) sat_s_trunc_##WT##_to_##NT##_fmt_7 (x) +#define RUN_SAT_S_TRUNC_FMT_7_WRAP(NT, WT, x) RUN_SAT_S_TRUNC_FMT_7(NT, WT, x) + +#define RUN_SAT_S_TRUNC_FMT_8(NT, WT, x) sat_s_trunc_##WT##_to_##NT##_fmt_8 (x) +#define RUN_SAT_S_TRUNC_FMT_8_WRAP(NT, WT, x) RUN_SAT_S_TRUNC_FMT_8(NT, WT, x) + +#endif diff --git a/gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h b/gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h new file mode 100644 index 00000000000..9f9f7d0bcd1 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h @@ -0,0 +1,375 @@ +#ifndef HAVE_DEFINED_SAT_ARITH_DATA_H +#define HAVE_DEFINED_SAT_ARITH_DATA_H + +#define TEST_UNARY_STRUCT_NAME(T1, T2) test_##T1##_##T2##_s +#define TEST_UNARY_STRUCT_DECL(T1, T2) struct TEST_UNARY_STRUCT_NAME(T1, T2) +#define TEST_UNARY_STRUCT(T1, T2) \ + struct TEST_UNARY_STRUCT_NAME(T1, T2) \ + { \ + T1 to; \ + T2 from; \ + }; + +#define TEST_BINARY_STRUCT_NAME(T, NAME) test_##T##_##NAME##_s +#define TEST_BINARY_STRUCT_DECL(T, NAME) struct TEST_BINARY_STRUCT_NAME(T, NAME) +#define TEST_BINARY_STRUCT(T, NAME) \ + struct TEST_BINARY_STRUCT_NAME(T, NAME) \ + { \ + T a, b; \ + T expect; \ + }; + +#define TEST_UNARY_DATA(T1, T2) t_##T1##_##T2##_s +#define TEST_UNARY_DATA_WRAP(T1, T2) TEST_UNARY_DATA(T1, T2) + +#define TEST_BINARY_DATA(T, NAME) t_##T##_##NAME##_s +#define TEST_BINARY_DATA_WRAP(T, NAME) TEST_BINARY_DATA(T, NAME) + +TEST_UNARY_STRUCT (uint8_t, uint16_t) +TEST_UNARY_STRUCT (uint8_t, uint32_t) +TEST_UNARY_STRUCT (uint8_t, uint64_t) +TEST_UNARY_STRUCT (uint16_t, uint32_t) +TEST_UNARY_STRUCT (uint16_t, uint64_t) +TEST_UNARY_STRUCT (uint32_t, uint64_t) + +TEST_BINARY_STRUCT (int8_t, ssadd) +TEST_BINARY_STRUCT (int16_t, ssadd) +TEST_BINARY_STRUCT (int32_t, ssadd) +TEST_BINARY_STRUCT (int64_t, ssadd) + +TEST_BINARY_STRUCT (int8_t, sssub) +TEST_BINARY_STRUCT (int16_t, sssub) +TEST_BINARY_STRUCT (int32_t, sssub) +TEST_BINARY_STRUCT (int64_t, sssub) + +TEST_UNARY_STRUCT (int8_t, int16_t) +TEST_UNARY_STRUCT (int8_t, int32_t) +TEST_UNARY_STRUCT (int8_t, int64_t) +TEST_UNARY_STRUCT (int16_t, int32_t) +TEST_UNARY_STRUCT (int16_t, int64_t) +TEST_UNARY_STRUCT (int32_t, int64_t) + +TEST_UNARY_STRUCT_DECL(uint8_t, uint16_t) \ + TEST_UNARY_DATA(uint8_t, uint16_t)[] = +{ + { 0, 0}, + { 2, 2}, + {254, 254}, + {255, 255}, + {255, 256}, + {255, 65534}, + {255, 65535}, +}; + +TEST_UNARY_STRUCT_DECL(uint8_t, uint32_t) \ + TEST_UNARY_DATA(uint8_t, uint32_t)[] = +{ + { 0, 0}, + { 2, 2}, + {254, 254}, + {255, 255}, + {255, 256}, + {255, 65534}, + {255, 65535}, + {255, 65536}, + {255, 4294967294}, + {255, 4294967295}, +}; + +TEST_UNARY_STRUCT_DECL(uint8_t, uint64_t) \ + TEST_UNARY_DATA(uint8_t, uint64_t)[] = +{ + { 0, 0}, + { 2, 2}, + {254, 254}, + {255, 255}, + {255, 256}, + {255, 65534}, + {255, 65535}, + {255, 65536}, + {255, 4294967294}, + {255, 4294967295}, + {255, 4294967296}, + {255, 18446744073709551614u}, + {255, 18446744073709551615u}, +}; + +TEST_UNARY_STRUCT_DECL(uint16_t, uint32_t) \ + TEST_UNARY_DATA(uint16_t, uint32_t)[] = +{ + { 0, 0}, + { 5, 5}, + {65534, 65534}, + {65535, 65535}, + {65535, 65536}, + {65535, 4294967294}, + {65535, 4294967295}, +}; + +TEST_UNARY_STRUCT_DECL(uint16_t, uint64_t) \ + TEST_UNARY_DATA(uint16_t, uint64_t)[] = +{ + { 0, 0}, + { 5, 5}, + {65534, 65534}, + {65535, 65535}, + {65535, 65536}, + {65535, 4294967294}, + {65535, 4294967295}, + {65535, 4294967296}, + {65535, 18446744073709551614u}, + {65535, 18446744073709551615u}, +}; + +TEST_UNARY_STRUCT_DECL(uint32_t, uint64_t) \ + TEST_UNARY_DATA(uint32_t, uint64_t)[] = +{ + { 0, 0}, + { 9, 9}, + {4294967294, 4294967294}, + {4294967295, 4294967295}, + {4294967295, 4294967296}, + {4294967295, 18446744073709551614u}, + {4294967295, 18446744073709551615u}, +}; + +TEST_UNARY_STRUCT_DECL(int8_t, int16_t) \ + TEST_UNARY_DATA(int8_t, int16_t)[] = +{ + { 0, 0}, + { -2, -2}, + { 127, 128}, + { 127, 258}, + {-128, -128}, + {-128, -129}, + {-128, -257}, + { 127, 32767}, + {-128, -32768}, +}; + +TEST_UNARY_STRUCT_DECL(int8_t, int32_t) \ + TEST_UNARY_DATA(int8_t, int32_t)[] = +{ + { 0, 0}, + { -2, -2}, + { 127, 128}, + { 127, 258}, + {-128, -128}, + {-128, -129}, + {-128, -257}, + { 127, 32767}, + {-128, -32768}, + { 127, 65536}, + {-128, -65537}, + { 127, 2147483647}, + {-128, -2147483648}, +}; + +TEST_UNARY_STRUCT_DECL(int8_t, int64_t) \ + TEST_UNARY_DATA(int8_t, int64_t)[] = +{ + { 0, 0}, + { -2, -2}, + { 127, 128}, + { 127, 258}, + {-128, -128}, + {-128, -129}, + {-128, -257}, + { 127, 32767}, + {-128, -32768}, + { 127, 65536}, + {-128, -65537}, + { 127, 2147483647}, + {-128, -2147483648}, + { 127, 2147483648ll}, + {-128, -2147483649ll}, + { 127, 9223372036854775807ll}, + {-128, -9223372036854775808ull}, +}; + +TEST_UNARY_STRUCT_DECL(int16_t, int32_t) \ + TEST_UNARY_DATA(int16_t, int32_t)[] = +{ + { 0, 0}, + { -2, -2}, + { 32767, 32768}, + { 32767, 65538}, + {-32768, -32768}, + {-32768, -32769}, + {-32768, -65539}, + { 32767, 32767}, + {-32768, -32768}, + { 32767, 65536}, + {-32768, -65537}, + { 32767, 2147483647}, + {-32768, -2147483648}, +}; + +TEST_UNARY_STRUCT_DECL(int16_t, int64_t) \ + TEST_UNARY_DATA(int16_t, int64_t)[] = +{ + { 0, 0}, + { -2, -2}, + { 32767, 32768}, + { 32767, 65538}, + {-32768, -32768}, + {-32768, -32769}, + {-32768, -65539}, + { 32767, 32767}, + {-32768, -32768}, + { 32767, 65536}, + {-32768, -65537}, + { 32767, 2147483647}, + {-32768, -2147483648}, +}; + +TEST_UNARY_STRUCT_DECL(int32_t, int64_t) \ + TEST_UNARY_DATA(int32_t, int64_t)[] = +{ + { 0, 0}, + { -2, -2}, + { 2147483647, 2147483648ll}, + {-2147483648, -2147483648}, + { 2147483647, 2147483648}, + {-2147483648, -2147483649ll}, + { 2147483647, 9223372036854775807ll}, + {-2147483648, -9223372036854775808ull}, +}; + +TEST_BINARY_STRUCT_DECL(int8_t, ssadd) TEST_BINARY_DATA(int8_t, ssadd)[] = +{ + { 0, 0, 0}, + { 2, 2, 4}, + { 126, 1, 127}, + { 127, 1, 127}, + { 127, 127, 127}, + { -7, -4, -11}, + {-128, -1, -128}, + {-127, -1, -128}, + {-128, -128, -128}, + {-128, 127, -1}, + {-127, 127, 0}, + {-122, 105, -17}, + {-122, 125, 3}, +}; + +TEST_BINARY_STRUCT_DECL(int16_t, ssadd) TEST_BINARY_DATA(int16_t, ssadd)[] = +{ + { 0, 0, 0}, + { 2, 2, 4}, + { 32766, 1, 32767}, + { 32767, 1, 32767}, + { 32767, 32767, 32767}, + { -7, -4, -11}, + {-32768, -1, -32768}, + {-32767, -1, -32768}, + {-32768, -32768, -32768}, + {-32768, 32767, -1}, + {-32767, 32767, 0}, + {-32732, 32712, -20}, + {-32732, 32734, 2}, +}; + +TEST_BINARY_STRUCT_DECL(int32_t, ssadd) TEST_BINARY_DATA(int32_t, ssadd)[] = +{ + { 0, 0, 0}, + { 2, 2, 4}, + { 2147483646, 1, 2147483647}, + { 2147483647, 1, 2147483647}, + { 2147483647, 2147483647, 2147483647}, + { -7, -4, -11}, + {-2147483648, -1, -2147483648}, + {-2147483647, -1, -2147483648}, + {-2147483648, -2147483648, -2147483648}, + {-2147483648, 2147483647, -1}, + {-2147483647, 2147483647, 0}, + {-2147483613, 2147483601, -12}, + {-2147483613, 2147483637, 24}, +}; + +TEST_BINARY_STRUCT_DECL(int64_t, ssadd) TEST_BINARY_DATA(int64_t, ssadd)[] = +{ + { 0, 0, 0}, + { 2, 2, 4}, + { 9223372036854775806ll, 1, 9223372036854775807ll}, + { 9223372036854775807ll, 1, 9223372036854775807ll}, + { 9223372036854775807ll, 9223372036854775807ll, 9223372036854775807ll}, + { -7, -4, -11}, + {-9223372036854775808ull, -1, -9223372036854775808ull}, + { -9223372036854775807ll, -1, -9223372036854775808ull}, + {-9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull}, + {-9223372036854775808ull, 9223372036854775807ll, -1}, + { -9223372036854775807ll, 9223372036854775807ll, 0}, + { -9223372036854775803ll, 9223372036854775800ll, -3}, + { -9223372036854775803ll, 9223372036854775805ll, 2}, +}; + +TEST_BINARY_STRUCT_DECL(int8_t, sssub) TEST_BINARY_DATA(int8_t, sssub)[] = +{ + { 0, 0, 0}, + { 2, 4, -2}, + { 126, -1, 127}, + { 127, -1, 127}, + { 127, -127, 127}, + { -7, -4, -3}, + {-127, 1, -128}, + {-128, 1, -128}, + {-128, 127, -128}, + {-128, -127, -1}, + {-124, -127, 3}, + {-125, -120, -5}, + { 126, 120, 6}, +}; + +TEST_BINARY_STRUCT_DECL(int16_t, sssub) TEST_BINARY_DATA(int16_t, sssub)[] = +{ + { 0, 0, 0}, + { 2, 4, -2}, + { 32766, -1, 32767}, + { 32767, -1, 32767}, + { 32767, -32767, 32767}, + { -7, -4, -3}, + {-32767, 1, -32768}, + {-32768, 1, -32768}, + {-32768, 32767, -32768}, + {-32768, -32767, -1}, + {-32764, -32767, 3}, + {-32765, -32760, -5}, + { 32766, 32760, 6}, +}; + +TEST_BINARY_STRUCT_DECL(int32_t, sssub) TEST_BINARY_DATA(int32_t, sssub)[] = +{ + { 0, 0, 0}, + { 2, 4, -2}, + { 2147483646, -1, 2147483647}, + { 2147483647, -1, 2147483647}, + { 2147483647, -2147483647, 2147483647}, + { -7, -4, -3}, + {-2147483647, 1, -2147483648}, + {-2147483648, 1, -2147483648}, + {-2147483648, 2147483647, -2147483648}, + {-2147483648, -2147483647, -1}, + {-2147483644, -2147483647, 3}, + {-2147483645, -2147483640, -5}, + { 2147483646, 2147483640, 6}, +}; + +TEST_BINARY_STRUCT_DECL(int64_t, sssub) TEST_BINARY_DATA(int64_t, sssub)[] = +{ + { 0, 0, 0}, + { 2, 4, -2}, + { 9223372036854775806ll, -1, 9223372036854775807ll}, + { 9223372036854775807ll, -1, 9223372036854775807ll}, + { 9223372036854775807ll, -9223372036854775807ll, 9223372036854775807ll}, + { -7, -4, -3}, + { -9223372036854775807ll, 1, -9223372036854775808ull}, + {-9223372036854775808ull, 1, -9223372036854775808ull}, + {-9223372036854775808ull, 9223372036854775807ll, -9223372036854775808ull}, + {-9223372036854775808ull, -9223372036854775807ll, -1}, + { -9223372036854775804ll, -9223372036854775807ll, 3}, + { -9223372036854775805ll, -9223372036854775800ll, -5}, + { 9223372036854775806ll, 9223372036854775800ll, 6}, +}; + +#endif diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-1-i16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-1-i16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-1-i32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-1-i32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-1-i64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-1-i64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-1-i8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-1-i8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-2-i16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-2-i16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-2-i16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-2-i16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-2-i32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-2-i32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-2-i32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-2-i32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-2-i64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-2-i64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-2-i64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-2-i64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-2-i8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-2-i8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-2-i8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-2-i8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-3-i16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-3-i16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-3-i16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-3-i16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-3-i32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-3-i32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-3-i32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-3-i32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-3-i64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-3-i64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-3-i64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-3-i64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-3-i8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-3-i8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-3-i8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-3-i8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-4-i16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-4-i16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-4-i16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-4-i16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-4-i32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-4-i32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-4-i32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-4-i32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-4-i64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-4-i64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-4-i64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-4-i64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-4-i8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-4-i8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-4-i8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-4-i8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-1-i16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-1-i16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-1-i16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-1-i16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-1-i32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-1-i32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-1-i32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-1-i32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-1-i64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-1-i64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-1-i64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-1-i64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-1-i8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-1-i8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-1-i8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-1-i8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-2-i16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-2-i16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-2-i16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-2-i16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-2-i32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-2-i32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-2-i32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-2-i32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-2-i64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-2-i64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-2-i64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-2-i64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-2-i8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-2-i8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-2-i8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-2-i8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-3-i16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-3-i16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-3-i16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-3-i16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-3-i32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-3-i32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-3-i32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-3-i32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-3-i64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-3-i64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-3-i64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-3-i64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-3-i8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-3-i8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-3-i8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-3-i8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-4-i16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-4-i16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-4-i16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-4-i16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-4-i32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-4-i32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-4-i32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-4-i32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-4-i64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-4-i64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-4-i64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-4-i64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add-run-4-i8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-4-i8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add-run-4-i8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add-run-4-i8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-1-1.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-1-1.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-1-1.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-1-1.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-1.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-1.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-1.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-1.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-2-1.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-2-1.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-2-1.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-2-1.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-2.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-2.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-2.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-2.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-3-1.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-3-1.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-3-1.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-3-1.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-3.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-3.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-3.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-3.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-4.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-4.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-4.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-4.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-run-1.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-run-1.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-run-1.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-run-1.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-run-2.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-run-2.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-run-2.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-run-2.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-run-3.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-run-3.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-run-3.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-run-3.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_s_add_imm-run-4.c b/gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-run-4.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_s_add_imm-run-4.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_s_add_imm-run-4.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-1-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-1-u16.c similarity index 91% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-1-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-1-u16.c index c138df85332..0a4f6fc4791 100644 --- a/gcc/testsuite/gcc.target/riscv/sat_u_add-1-u16.c +++ b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-1-u16.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-skip-if "" { *-*-* } { "-flto" } } */ -/* { dg-options "-march=rv64gc -mabi=lp64d -O3 -fdump-rtl-expand-details -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-options "-march=rv64gc -O3 -mabi=lp64d -fdump-rtl-expand-details -fno-schedule-insns -fno-schedule-insns2" } */ /* { dg-final { check-function-bodies "**" "" } } */ #include "sat_arith.h" diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-1-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-1-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-1-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-1-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-1-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-1-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-1-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-1-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-1-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-1-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-1-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-1-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-2-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-2-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-2-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-2-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-2-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-2-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-2-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-2-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-2-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-2-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-2-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-2-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-2-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-2-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-2-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-2-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-3-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-3-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-3-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-3-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-3-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-3-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-3-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-3-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-3-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-3-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-3-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-3-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-3-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-3-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-3-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-3-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-4-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-4-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-4-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-4-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-4-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-4-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-4-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-4-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-4-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-4-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-4-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-4-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-4-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-4-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-4-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-4-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-5-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-5-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-5-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-5-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-5-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-5-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-5-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-5-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-5-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-5-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-5-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-5-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-5-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-5-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-5-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-5-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-6-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-6-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-6-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-6-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-6-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-6-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-6-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-6-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-6-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-1-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-1-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-1-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-1-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-1-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-1-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-1-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-1-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-1-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-2-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-2-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-2-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-2-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-2-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-2-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-2-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-2-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-2-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-3-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-3-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-3-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-3-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-3-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-3-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-3-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-3-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-3-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-4-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-4-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-4-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-4-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-4-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-4-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-4-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-4-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-4-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-5-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-5-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-5-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-5-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-5-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-5-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-5-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-5-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-5-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-6-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-6-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-6-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-6-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-6-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-6-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add-run-6-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add-run-6-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add-run-6-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-1-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-1-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-1-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-1-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-1-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-1-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-1-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-1-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-1-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-2-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-2-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-2-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-2-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-2-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-2-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-2-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-2-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-2-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-2-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-2-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-2-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-2-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-2-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-2-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-2-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-3-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-3-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-3-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-3-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-3-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-3-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-3-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-3-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-3-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-3-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-3-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-3-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-3-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-3-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-3-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-3-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-4-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-4-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-4-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-4-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-4-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-4-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-4-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-4-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-4-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-4-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-4-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-4-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-4-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-4-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-4-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-4-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-1-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-1-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-1-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-1-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-1-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-1-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-1-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-1-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-1-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-1-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-1-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-1-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-1-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-1-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-1-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-1-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-2-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-2-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-2-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-2-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-2-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-2-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-2-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-2-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-2-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-2-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-2-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-2-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-2-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-2-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-2-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-2-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-3-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-3-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-3-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-3-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-3-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-3-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-3-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-3-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-3-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-3-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-3-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-3-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-3-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-3-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-3-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-3-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-4-u16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-4-u16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-4-u16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-4-u16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-4-u32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-4-u32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-4-u32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-4-u32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-4-u64.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-4-u64.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-4-u64.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-4-u64.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-4-u8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-4-u8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm-run-4-u8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm-run-4-u8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-1.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-1.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-1.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-1.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-10.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-10.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-10.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-10.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-11.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-11.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-11.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-11.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-12.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-12.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-12.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-12.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-13.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-13.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-13.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-13.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-14.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-14.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-14.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-14.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-15.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-15.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-15.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-15.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-16.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-16.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-16.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-16.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-17.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-17.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-17.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-17.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-18.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-18.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-18.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-18.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-19.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-19.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-19.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-19.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-2.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-2.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-2.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-2.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-20.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-20.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-20.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-20.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-21.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-21.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-21.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-21.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-22.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-22.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-22.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-22.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-23.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-23.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-23.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-23.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-24.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-24.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-24.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-24.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-25.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-25.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-25.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-25.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-26.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-26.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-26.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-26.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-27.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-27.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-27.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-27.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-28.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-28.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-28.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-28.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-29.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-29.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-29.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-29.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-3.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-3.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-3.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-3.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-30.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-30.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-30.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-30.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-31.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-31.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-31.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-31.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-32.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-32.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-32.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-32.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-33.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-33.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-33.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-33.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-34.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-34.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-34.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-34.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-35.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-35.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-35.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-35.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-36.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-36.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-36.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-36.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-37.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-37.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-37.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-37.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-38.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-38.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-38.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-38.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-39.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-39.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-39.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-39.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-4.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-4.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-4.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-4.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-40.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-40.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-40.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-40.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-41.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-41.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-41.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-41.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-42.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-42.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-42.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-42.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-43.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-43.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-43.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-43.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-44.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-44.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-44.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-44.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-45.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-45.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-45.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-45.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-46.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-46.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-46.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-46.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-47.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-47.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-47.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-47.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-48.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-48.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-48.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-48.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-49.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-49.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-49.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-49.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-5.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-5.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-5.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-5.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-50.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-50.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-50.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-50.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-51.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-51.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-51.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-51.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-52.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-52.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-52.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-52.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-53.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-53.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-53.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-53.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-54.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-54.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-54.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-54.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-55.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-55.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-55.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-55.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-56.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-56.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-56.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-56.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-57.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-57.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-57.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-57.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-58.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-58.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-58.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-58.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-59.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-59.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-59.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-59.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-6.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-6.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-6.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-6.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-60.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-60.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-60.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-60.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-7.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-7.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-7.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-7.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-8.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-8.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-8.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-8.c diff --git a/gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-9.c b/gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-9.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/sat_u_add_imm_type_check-9.c rename to gcc/testsuite/gcc.target/riscv/sat/sat_u_add_imm_type_check-9.c diff --git a/gcc/testsuite/gcc.target/riscv/sat/scalar_sat_binary.h b/gcc/testsuite/gcc.target/riscv/sat/scalar_sat_binary.h new file mode 100644 index 00000000000..cbb2d750107 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/sat/scalar_sat_binary.h @@ -0,0 +1,27 @@ +#ifndef HAVE_DEFINED_SCALAR_SAT_BINARY +#define HAVE_DEFINED_SCALAR_SAT_BINARY + +/* To leverage this header files for run test, you need to: + 1. define T as the type, for example uint8_t, + 2. define RUN_SAT_BINARY as run function. + 3. prepare the test_data for test cases. + */ + +int +main () +{ + unsigned i; + T *d; + + for (i = 0; i < sizeof (test_data) / sizeof (test_data[0]); i++) + { + d = test_data[i]; + + if (RUN_SAT_BINARY (T, d[0], d[1]) != d[2]) + __builtin_abort (); + } + + return 0; +} + +#endif diff --git a/gcc/testsuite/gcc.target/riscv/sat/scalar_sat_binary_run_xxx.h b/gcc/testsuite/gcc.target/riscv/sat/scalar_sat_binary_run_xxx.h new file mode 100644 index 00000000000..a7e0d988626 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/sat/scalar_sat_binary_run_xxx.h @@ -0,0 +1,21 @@ +#ifndef HAVE_DEFINED_SCALAR_SAT_BINARY_RUN_XXX +#define HAVE_DEFINED_SCALAR_SAT_BINARY_RUN_XXX + +int +main () +{ + unsigned i; + T d; + + for (i = 0; i < sizeof (DATA) / sizeof (DATA[0]); i++) + { + d = DATA[i]; + + if (RUN_BINARY (d.a, d.b) != d.expect) + __builtin_abort (); + } + + return 0; +} + +#endif