From ea9d5cc80e39746e237dc5281e9492a080d238f4 Mon Sep 17 00:00:00 2001 From: Mihailo Stojanovic Date: Mon, 28 Oct 2019 19:10:42 +0000 Subject: [PATCH] mips.c (DIRECT_BUILTIN_PURE): New macro. * config/mips/mips.c (DIRECT_BUILTIN_PURE): New macro. Add a pure qualifier to the built-in. (MSA_BUILTIN_PURE): New macro. Add a pure qualifier to the MSA built-ins. (struct mips_builtin_description): Add is_pure flag. (mips_init_builtins): Mark built-in as pure if the flag in the corresponding mips_builtin_description struct is set. * gcc.target/mips/mips-builtins-pure.c: New test. From-SVN: r277534 --- gcc/ChangeLog | 8 + gcc/config/mips/mips.c | 1306 ++++++++++---------- gcc/testsuite/ChangeLog | 2 + gcc/testsuite/gcc.target/mips/mips-builtins-pure.c | 20 + 4 files changed, 694 insertions(+), 642 deletions(-) create mode 100644 gcc/testsuite/gcc.target/mips/mips-builtins-pure.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a3fbadf..0dfda99 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2019-10-28 Mihailo Stojanovic + * config/mips/mips.c (DIRECT_BUILTIN_PURE): New macro. Add a + pure qualifier to the built-in. + (MSA_BUILTIN_PURE): New macro. Add a pure qualifier to the MSA + built-ins. + (struct mips_builtin_description): Add is_pure flag. + (mips_init_builtins): Mark built-in as pure if the flag in the + corresponding mips_builtin_description struct is set. + * config/mips/mips-msa.md (msa_insert_): Add an alternative which covers the floating-point input value. Also forbid the split of insert.d pattern for floating-point values. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 3a77097..e337b82 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -15242,6 +15242,9 @@ struct mips_builtin_description { /* Whether the function is available. */ unsigned int (*avail) (void); + + /* Whether the function is pure. */ + bool is_pure; }; AVAIL_ALL (hard_float, TARGET_HARD_FLOAT_ABI) @@ -15273,24 +15276,33 @@ AVAIL_NON_MIPS16 (msa, TARGET_MSA) AVAIL is the name of the availability predicate, without the leading mips_builtin_avail_. */ #define MIPS_BUILTIN(INSN, COND, NAME, BUILTIN_TYPE, \ - FUNCTION_TYPE, AVAIL) \ + FUNCTION_TYPE, AVAIL, PURE) \ { CODE_FOR_mips_ ## INSN, MIPS_FP_COND_ ## COND, \ "__builtin_mips_" NAME, BUILTIN_TYPE, FUNCTION_TYPE, \ - mips_builtin_avail_ ## AVAIL } + mips_builtin_avail_ ## AVAIL, PURE } /* Define __builtin_mips_, which is a MIPS_BUILTIN_DIRECT function mapped to instruction CODE_FOR_mips_, FUNCTION_TYPE and AVAIL are as for MIPS_BUILTIN. */ #define DIRECT_BUILTIN(INSN, FUNCTION_TYPE, AVAIL) \ - MIPS_BUILTIN (INSN, f, #INSN, MIPS_BUILTIN_DIRECT, FUNCTION_TYPE, AVAIL) + MIPS_BUILTIN (INSN, f, #INSN, MIPS_BUILTIN_DIRECT, FUNCTION_TYPE, \ + AVAIL, false) + +/* Define __builtin_mips_, which is a MIPS_BUILTIN_DIRECT pure function + mapped to instruction CODE_FOR_mips_, FUNCTION_TYPE and AVAIL + are as for MIPS_BUILTIN. */ +#define DIRECT_BUILTIN_PURE(INSN, FUNCTION_TYPE, AVAIL) \ + MIPS_BUILTIN (INSN, f, #INSN, MIPS_BUILTIN_DIRECT, FUNCTION_TYPE, \ + AVAIL, true) /* Define __builtin_mips___{s,d} functions, both of which are subject to mips_builtin_avail_. */ #define CMP_SCALAR_BUILTINS(INSN, COND, AVAIL) \ MIPS_BUILTIN (INSN ## _cond_s, COND, #INSN "_" #COND "_s", \ - MIPS_BUILTIN_CMP_SINGLE, MIPS_INT_FTYPE_SF_SF, AVAIL), \ + MIPS_BUILTIN_CMP_SINGLE, MIPS_INT_FTYPE_SF_SF, AVAIL, \ + false), \ MIPS_BUILTIN (INSN ## _cond_d, COND, #INSN "_" #COND "_d", \ - MIPS_BUILTIN_CMP_SINGLE, MIPS_INT_FTYPE_DF_DF, AVAIL) + MIPS_BUILTIN_CMP_SINGLE, MIPS_INT_FTYPE_DF_DF, AVAIL, false) /* Define __builtin_mips_{any,all,upper,lower}___ps. The lower and upper forms are subject to mips_builtin_avail_ @@ -15298,36 +15310,36 @@ AVAIL_NON_MIPS16 (msa, TARGET_MSA) #define CMP_PS_BUILTINS(INSN, COND, AVAIL) \ MIPS_BUILTIN (INSN ## _cond_ps, COND, "any_" #INSN "_" #COND "_ps", \ MIPS_BUILTIN_CMP_ANY, MIPS_INT_FTYPE_V2SF_V2SF, \ - mips3d), \ + mips3d, false), \ MIPS_BUILTIN (INSN ## _cond_ps, COND, "all_" #INSN "_" #COND "_ps", \ MIPS_BUILTIN_CMP_ALL, MIPS_INT_FTYPE_V2SF_V2SF, \ - mips3d), \ + mips3d, false), \ MIPS_BUILTIN (INSN ## _cond_ps, COND, "lower_" #INSN "_" #COND "_ps", \ MIPS_BUILTIN_CMP_LOWER, MIPS_INT_FTYPE_V2SF_V2SF, \ - AVAIL), \ + AVAIL, false), \ MIPS_BUILTIN (INSN ## _cond_ps, COND, "upper_" #INSN "_" #COND "_ps", \ MIPS_BUILTIN_CMP_UPPER, MIPS_INT_FTYPE_V2SF_V2SF, \ - AVAIL) + AVAIL, false) /* Define __builtin_mips_{any,all}___4s. The functions are subject to mips_builtin_avail_mips3d. */ #define CMP_4S_BUILTINS(INSN, COND) \ MIPS_BUILTIN (INSN ## _cond_4s, COND, "any_" #INSN "_" #COND "_4s", \ MIPS_BUILTIN_CMP_ANY, \ - MIPS_INT_FTYPE_V2SF_V2SF_V2SF_V2SF, mips3d), \ + MIPS_INT_FTYPE_V2SF_V2SF_V2SF_V2SF, mips3d, false), \ MIPS_BUILTIN (INSN ## _cond_4s, COND, "all_" #INSN "_" #COND "_4s", \ MIPS_BUILTIN_CMP_ALL, \ - MIPS_INT_FTYPE_V2SF_V2SF_V2SF_V2SF, mips3d) + MIPS_INT_FTYPE_V2SF_V2SF_V2SF_V2SF, mips3d, false) /* Define __builtin_mips_mov{t,f}___ps. The comparison instruction requires mips_builtin_avail_. */ #define MOVTF_BUILTINS(INSN, COND, AVAIL) \ MIPS_BUILTIN (INSN ## _cond_ps, COND, "movt_" #INSN "_" #COND "_ps", \ MIPS_BUILTIN_MOVT, MIPS_V2SF_FTYPE_V2SF_V2SF_V2SF_V2SF, \ - AVAIL), \ + AVAIL, false), \ MIPS_BUILTIN (INSN ## _cond_ps, COND, "movf_" #INSN "_" #COND "_ps", \ MIPS_BUILTIN_MOVF, MIPS_V2SF_FTYPE_V2SF_V2SF_V2SF_V2SF, \ - AVAIL) + AVAIL, false) /* Define all the built-in functions related to C.cond.fmt condition COND. */ #define CMP_BUILTINS(COND) \ @@ -15344,13 +15356,13 @@ AVAIL_NON_MIPS16 (msa, TARGET_MSA) and AVAIL are as for MIPS_BUILTIN. */ #define DIRECT_NO_TARGET_BUILTIN(INSN, FUNCTION_TYPE, AVAIL) \ MIPS_BUILTIN (INSN, f, #INSN, MIPS_BUILTIN_DIRECT_NO_TARGET, \ - FUNCTION_TYPE, AVAIL) + FUNCTION_TYPE, AVAIL, false) /* Define __builtin_mips_bposge. is 32 for the MIPS32 DSP branch instruction. AVAIL is as for MIPS_BUILTIN. */ #define BPOSGE_BUILTIN(VALUE, AVAIL) \ MIPS_BUILTIN (bposge, f, "bposge" #VALUE, \ - MIPS_BUILTIN_BPOSGE ## VALUE, MIPS_SI_FTYPE_VOID, AVAIL) + MIPS_BUILTIN_BPOSGE ## VALUE, MIPS_SI_FTYPE_VOID, AVAIL, false) /* Define a Loongson MIPS_BUILTIN_DIRECT function __builtin_loongson_ for instruction CODE_FOR_loongson_. FUNCTION_TYPE is a @@ -15358,7 +15370,7 @@ AVAIL_NON_MIPS16 (msa, TARGET_MSA) #define LOONGSON_BUILTIN_ALIAS(INSN, FN_NAME, FUNCTION_TYPE) \ { CODE_FOR_loongson_ ## INSN, MIPS_FP_COND_f, \ "__builtin_loongson_" #FN_NAME, MIPS_BUILTIN_DIRECT, \ - FUNCTION_TYPE, mips_builtin_avail_loongson } + FUNCTION_TYPE, mips_builtin_avail_loongson, false } /* Define a Loongson MIPS_BUILTIN_DIRECT function __builtin_loongson_ for instruction CODE_FOR_loongson_. FUNCTION_TYPE is a @@ -15372,13 +15384,21 @@ AVAIL_NON_MIPS16 (msa, TARGET_MSA) #define LOONGSON_BUILTIN_SUFFIX(INSN, SUFFIX, FUNCTION_TYPE) \ LOONGSON_BUILTIN_ALIAS (INSN, INSN ## _ ## SUFFIX, FUNCTION_TYPE) -/* Define an MSA MIPS_BUILTIN_DIRECT function __builtin_msa_ +/* Define an MSA MIPS_BUILTIN_DIRECT pure function __builtin_msa_ + for instruction CODE_FOR_msa_. FUNCTION_TYPE is a builtin_description + field. */ +#define MSA_BUILTIN_PURE(INSN, FUNCTION_TYPE) \ + { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \ + "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT, \ + FUNCTION_TYPE, mips_builtin_avail_msa, true } + +/* Define an MSA MIPS_BUILTIN_DIRECT non-pure function __builtin_msa_ for instruction CODE_FOR_msa_. FUNCTION_TYPE is a builtin_description field. */ #define MSA_BUILTIN(INSN, FUNCTION_TYPE) \ { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \ "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT, \ - FUNCTION_TYPE, mips_builtin_avail_msa } + FUNCTION_TYPE, mips_builtin_avail_msa, false } /* Define a remapped MSA MIPS_BUILTIN_DIRECT function __builtin_msa_ for instruction CODE_FOR_msa_. FUNCTION_TYPE is @@ -15386,7 +15406,7 @@ AVAIL_NON_MIPS16 (msa, TARGET_MSA) #define MSA_BUILTIN_REMAP(INSN, INSN2, FUNCTION_TYPE) \ { CODE_FOR_msa_ ## INSN2, MIPS_FP_COND_f, \ "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT, \ - FUNCTION_TYPE, mips_builtin_avail_msa } + FUNCTION_TYPE, mips_builtin_avail_msa, false } /* Define an MSA MIPS_BUILTIN_MSA_TEST_BRANCH function __builtin_msa_ for instruction CODE_FOR_msa_. FUNCTION_TYPE is a builtin_description @@ -15394,7 +15414,7 @@ AVAIL_NON_MIPS16 (msa, TARGET_MSA) #define MSA_BUILTIN_TEST_BRANCH(INSN, FUNCTION_TYPE) \ { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \ "__builtin_msa_" #INSN, MIPS_BUILTIN_MSA_TEST_BRANCH, \ - FUNCTION_TYPE, mips_builtin_avail_msa } + FUNCTION_TYPE, mips_builtin_avail_msa, false } /* Define an MSA MIPS_BUILTIN_DIRECT_NO_TARGET function __builtin_msa_ for instruction CODE_FOR_msa_. FUNCTION_TYPE is a builtin_description @@ -15402,7 +15422,7 @@ AVAIL_NON_MIPS16 (msa, TARGET_MSA) #define MSA_NO_TARGET_BUILTIN(INSN, FUNCTION_TYPE) \ { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \ "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT_NO_TARGET, \ - FUNCTION_TYPE, mips_builtin_avail_msa } + FUNCTION_TYPE, mips_builtin_avail_msa, false } #define CODE_FOR_mips_sqrt_ps CODE_FOR_sqrtv2sf2 #define CODE_FOR_mips_addq_ph CODE_FOR_addv2hi3 @@ -15647,34 +15667,34 @@ static const struct mips_builtin_description mips_builtins[] = { #define MIPS_SET_FCSR 1 DIRECT_NO_TARGET_BUILTIN (set_fcsr, MIPS_VOID_FTYPE_USI, hard_float), - DIRECT_BUILTIN (pll_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), - DIRECT_BUILTIN (pul_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), - DIRECT_BUILTIN (plu_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), - DIRECT_BUILTIN (puu_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), - DIRECT_BUILTIN (cvt_ps_s, MIPS_V2SF_FTYPE_SF_SF, paired_single), - DIRECT_BUILTIN (cvt_s_pl, MIPS_SF_FTYPE_V2SF, paired_single), - DIRECT_BUILTIN (cvt_s_pu, MIPS_SF_FTYPE_V2SF, paired_single), - DIRECT_BUILTIN (abs_ps, MIPS_V2SF_FTYPE_V2SF, paired_single), - - DIRECT_BUILTIN (alnv_ps, MIPS_V2SF_FTYPE_V2SF_V2SF_INT, paired_single), - DIRECT_BUILTIN (addr_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), - DIRECT_BUILTIN (mulr_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), - DIRECT_BUILTIN (cvt_pw_ps, MIPS_V2SF_FTYPE_V2SF, mips3d), - DIRECT_BUILTIN (cvt_ps_pw, MIPS_V2SF_FTYPE_V2SF, mips3d), - - DIRECT_BUILTIN (recip1_s, MIPS_SF_FTYPE_SF, mips3d), - DIRECT_BUILTIN (recip1_d, MIPS_DF_FTYPE_DF, mips3d), - DIRECT_BUILTIN (recip1_ps, MIPS_V2SF_FTYPE_V2SF, mips3d), - DIRECT_BUILTIN (recip2_s, MIPS_SF_FTYPE_SF_SF, mips3d), - DIRECT_BUILTIN (recip2_d, MIPS_DF_FTYPE_DF_DF, mips3d), - DIRECT_BUILTIN (recip2_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), - - DIRECT_BUILTIN (rsqrt1_s, MIPS_SF_FTYPE_SF, mips3d), - DIRECT_BUILTIN (rsqrt1_d, MIPS_DF_FTYPE_DF, mips3d), - DIRECT_BUILTIN (rsqrt1_ps, MIPS_V2SF_FTYPE_V2SF, mips3d), - DIRECT_BUILTIN (rsqrt2_s, MIPS_SF_FTYPE_SF_SF, mips3d), - DIRECT_BUILTIN (rsqrt2_d, MIPS_DF_FTYPE_DF_DF, mips3d), - DIRECT_BUILTIN (rsqrt2_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), + DIRECT_BUILTIN_PURE (pll_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), + DIRECT_BUILTIN_PURE (pul_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), + DIRECT_BUILTIN_PURE (plu_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), + DIRECT_BUILTIN_PURE (puu_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), + DIRECT_BUILTIN_PURE (cvt_ps_s, MIPS_V2SF_FTYPE_SF_SF, paired_single), + DIRECT_BUILTIN_PURE (cvt_s_pl, MIPS_SF_FTYPE_V2SF, paired_single), + DIRECT_BUILTIN_PURE (cvt_s_pu, MIPS_SF_FTYPE_V2SF, paired_single), + DIRECT_BUILTIN_PURE (abs_ps, MIPS_V2SF_FTYPE_V2SF, paired_single), + + DIRECT_BUILTIN_PURE (alnv_ps, MIPS_V2SF_FTYPE_V2SF_V2SF_INT, paired_single), + DIRECT_BUILTIN_PURE (addr_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), + DIRECT_BUILTIN_PURE (mulr_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), + DIRECT_BUILTIN_PURE (cvt_pw_ps, MIPS_V2SF_FTYPE_V2SF, mips3d), + DIRECT_BUILTIN_PURE (cvt_ps_pw, MIPS_V2SF_FTYPE_V2SF, mips3d), + + DIRECT_BUILTIN_PURE (recip1_s, MIPS_SF_FTYPE_SF, mips3d), + DIRECT_BUILTIN_PURE (recip1_d, MIPS_DF_FTYPE_DF, mips3d), + DIRECT_BUILTIN_PURE (recip1_ps, MIPS_V2SF_FTYPE_V2SF, mips3d), + DIRECT_BUILTIN_PURE (recip2_s, MIPS_SF_FTYPE_SF_SF, mips3d), + DIRECT_BUILTIN_PURE (recip2_d, MIPS_DF_FTYPE_DF_DF, mips3d), + DIRECT_BUILTIN_PURE (recip2_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), + + DIRECT_BUILTIN_PURE (rsqrt1_s, MIPS_SF_FTYPE_SF, mips3d), + DIRECT_BUILTIN_PURE (rsqrt1_d, MIPS_DF_FTYPE_DF, mips3d), + DIRECT_BUILTIN_PURE (rsqrt1_ps, MIPS_V2SF_FTYPE_V2SF, mips3d), + DIRECT_BUILTIN_PURE (rsqrt2_s, MIPS_SF_FTYPE_SF_SF, mips3d), + DIRECT_BUILTIN_PURE (rsqrt2_d, MIPS_DF_FTYPE_DF_DF, mips3d), + DIRECT_BUILTIN_PURE (rsqrt2_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), MIPS_FP_CONDITIONS (CMP_BUILTINS), @@ -15682,150 +15702,150 @@ static const struct mips_builtin_description mips_builtins[] = { DIRECT_BUILTIN (sqrt_ps, MIPS_V2SF_FTYPE_V2SF, sb1_paired_single), /* Built-in functions for the DSP ASE (32-bit and 64-bit). */ - DIRECT_BUILTIN (addq_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (addq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (addq_s_w, MIPS_SI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (addu_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), - DIRECT_BUILTIN (addu_s_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), - DIRECT_BUILTIN (subq_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (subq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (subq_s_w, MIPS_SI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (subu_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), - DIRECT_BUILTIN (subu_s_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), - DIRECT_BUILTIN (addsc, MIPS_SI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (addwc, MIPS_SI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (modsub, MIPS_SI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (raddu_w_qb, MIPS_SI_FTYPE_V4QI, dsp), - DIRECT_BUILTIN (absq_s_ph, MIPS_V2HI_FTYPE_V2HI, dsp), - DIRECT_BUILTIN (absq_s_w, MIPS_SI_FTYPE_SI, dsp), - DIRECT_BUILTIN (precrq_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (precrq_ph_w, MIPS_V2HI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (precrq_rs_ph_w, MIPS_V2HI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (precrqu_s_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (preceq_w_phl, MIPS_SI_FTYPE_V2HI, dsp), - DIRECT_BUILTIN (preceq_w_phr, MIPS_SI_FTYPE_V2HI, dsp), - DIRECT_BUILTIN (precequ_ph_qbl, MIPS_V2HI_FTYPE_V4QI, dsp), - DIRECT_BUILTIN (precequ_ph_qbr, MIPS_V2HI_FTYPE_V4QI, dsp), - DIRECT_BUILTIN (precequ_ph_qbla, MIPS_V2HI_FTYPE_V4QI, dsp), - DIRECT_BUILTIN (precequ_ph_qbra, MIPS_V2HI_FTYPE_V4QI, dsp), - DIRECT_BUILTIN (preceu_ph_qbl, MIPS_V2HI_FTYPE_V4QI, dsp), - DIRECT_BUILTIN (preceu_ph_qbr, MIPS_V2HI_FTYPE_V4QI, dsp), - DIRECT_BUILTIN (preceu_ph_qbla, MIPS_V2HI_FTYPE_V4QI, dsp), - DIRECT_BUILTIN (preceu_ph_qbra, MIPS_V2HI_FTYPE_V4QI, dsp), - DIRECT_BUILTIN (shll_qb, MIPS_V4QI_FTYPE_V4QI_SI, dsp), - DIRECT_BUILTIN (shll_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), - DIRECT_BUILTIN (shll_s_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), - DIRECT_BUILTIN (shll_s_w, MIPS_SI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (shrl_qb, MIPS_V4QI_FTYPE_V4QI_SI, dsp), - DIRECT_BUILTIN (shra_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), - DIRECT_BUILTIN (shra_r_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), - DIRECT_BUILTIN (shra_r_w, MIPS_SI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (muleu_s_ph_qbl, MIPS_V2HI_FTYPE_V4QI_V2HI, dsp), - DIRECT_BUILTIN (muleu_s_ph_qbr, MIPS_V2HI_FTYPE_V4QI_V2HI, dsp), - DIRECT_BUILTIN (mulq_rs_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (muleq_s_w_phl, MIPS_SI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (muleq_s_w_phr, MIPS_SI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (bitrev, MIPS_SI_FTYPE_SI, dsp), - DIRECT_BUILTIN (insv, MIPS_SI_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (repl_qb, MIPS_V4QI_FTYPE_SI, dsp), - DIRECT_BUILTIN (repl_ph, MIPS_V2HI_FTYPE_SI, dsp), + DIRECT_BUILTIN_PURE (addq_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (addq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (addq_s_w, MIPS_SI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (addu_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), + DIRECT_BUILTIN_PURE (addu_s_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), + DIRECT_BUILTIN_PURE (subq_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (subq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (subq_s_w, MIPS_SI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (subu_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), + DIRECT_BUILTIN_PURE (subu_s_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), + DIRECT_BUILTIN_PURE (addsc, MIPS_SI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (addwc, MIPS_SI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (modsub, MIPS_SI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (raddu_w_qb, MIPS_SI_FTYPE_V4QI, dsp), + DIRECT_BUILTIN_PURE (absq_s_ph, MIPS_V2HI_FTYPE_V2HI, dsp), + DIRECT_BUILTIN_PURE (absq_s_w, MIPS_SI_FTYPE_SI, dsp), + DIRECT_BUILTIN_PURE (precrq_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (precrq_ph_w, MIPS_V2HI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (precrq_rs_ph_w, MIPS_V2HI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (precrqu_s_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (preceq_w_phl, MIPS_SI_FTYPE_V2HI, dsp), + DIRECT_BUILTIN_PURE (preceq_w_phr, MIPS_SI_FTYPE_V2HI, dsp), + DIRECT_BUILTIN_PURE (precequ_ph_qbl, MIPS_V2HI_FTYPE_V4QI, dsp), + DIRECT_BUILTIN_PURE (precequ_ph_qbr, MIPS_V2HI_FTYPE_V4QI, dsp), + DIRECT_BUILTIN_PURE (precequ_ph_qbla, MIPS_V2HI_FTYPE_V4QI, dsp), + DIRECT_BUILTIN_PURE (precequ_ph_qbra, MIPS_V2HI_FTYPE_V4QI, dsp), + DIRECT_BUILTIN_PURE (preceu_ph_qbl, MIPS_V2HI_FTYPE_V4QI, dsp), + DIRECT_BUILTIN_PURE (preceu_ph_qbr, MIPS_V2HI_FTYPE_V4QI, dsp), + DIRECT_BUILTIN_PURE (preceu_ph_qbla, MIPS_V2HI_FTYPE_V4QI, dsp), + DIRECT_BUILTIN_PURE (preceu_ph_qbra, MIPS_V2HI_FTYPE_V4QI, dsp), + DIRECT_BUILTIN_PURE (shll_qb, MIPS_V4QI_FTYPE_V4QI_SI, dsp), + DIRECT_BUILTIN_PURE (shll_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), + DIRECT_BUILTIN_PURE (shll_s_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), + DIRECT_BUILTIN_PURE (shll_s_w, MIPS_SI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (shrl_qb, MIPS_V4QI_FTYPE_V4QI_SI, dsp), + DIRECT_BUILTIN_PURE (shra_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), + DIRECT_BUILTIN_PURE (shra_r_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), + DIRECT_BUILTIN_PURE (shra_r_w, MIPS_SI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (muleu_s_ph_qbl, MIPS_V2HI_FTYPE_V4QI_V2HI, dsp), + DIRECT_BUILTIN_PURE (muleu_s_ph_qbr, MIPS_V2HI_FTYPE_V4QI_V2HI, dsp), + DIRECT_BUILTIN_PURE (mulq_rs_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (muleq_s_w_phl, MIPS_SI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (muleq_s_w_phr, MIPS_SI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (bitrev, MIPS_SI_FTYPE_SI, dsp), + DIRECT_BUILTIN_PURE (insv, MIPS_SI_FTYPE_SI_SI, dsp), + DIRECT_BUILTIN_PURE (repl_qb, MIPS_V4QI_FTYPE_SI, dsp), + DIRECT_BUILTIN_PURE (repl_ph, MIPS_V2HI_FTYPE_SI, dsp), DIRECT_NO_TARGET_BUILTIN (cmpu_eq_qb, MIPS_VOID_FTYPE_V4QI_V4QI, dsp), DIRECT_NO_TARGET_BUILTIN (cmpu_lt_qb, MIPS_VOID_FTYPE_V4QI_V4QI, dsp), DIRECT_NO_TARGET_BUILTIN (cmpu_le_qb, MIPS_VOID_FTYPE_V4QI_V4QI, dsp), - DIRECT_BUILTIN (cmpgu_eq_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp), - DIRECT_BUILTIN (cmpgu_lt_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp), - DIRECT_BUILTIN (cmpgu_le_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp), + DIRECT_BUILTIN_PURE (cmpgu_eq_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp), + DIRECT_BUILTIN_PURE (cmpgu_lt_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp), + DIRECT_BUILTIN_PURE (cmpgu_le_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp), DIRECT_NO_TARGET_BUILTIN (cmp_eq_ph, MIPS_VOID_FTYPE_V2HI_V2HI, dsp), DIRECT_NO_TARGET_BUILTIN (cmp_lt_ph, MIPS_VOID_FTYPE_V2HI_V2HI, dsp), DIRECT_NO_TARGET_BUILTIN (cmp_le_ph, MIPS_VOID_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (pick_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), - DIRECT_BUILTIN (pick_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), - DIRECT_BUILTIN (packrl_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (pick_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), + DIRECT_BUILTIN_PURE (pick_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), + DIRECT_BUILTIN_PURE (packrl_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), DIRECT_NO_TARGET_BUILTIN (wrdsp, MIPS_VOID_FTYPE_SI_SI, dsp), - DIRECT_BUILTIN (rddsp, MIPS_SI_FTYPE_SI, dsp), + DIRECT_BUILTIN_PURE (rddsp, MIPS_SI_FTYPE_SI, dsp), DIRECT_BUILTIN (lbux, MIPS_SI_FTYPE_POINTER_SI, dsp), DIRECT_BUILTIN (lhx, MIPS_SI_FTYPE_POINTER_SI, dsp), DIRECT_BUILTIN (lwx, MIPS_SI_FTYPE_POINTER_SI, dsp), BPOSGE_BUILTIN (32, dsp), /* The following are for the MIPS DSP ASE REV 2 (32-bit and 64-bit). */ - DIRECT_BUILTIN (absq_s_qb, MIPS_V4QI_FTYPE_V4QI, dspr2), - DIRECT_BUILTIN (addu_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (addu_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (adduh_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), - DIRECT_BUILTIN (adduh_r_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), - DIRECT_BUILTIN (append, MIPS_SI_FTYPE_SI_SI_SI, dspr2), - DIRECT_BUILTIN (balign, MIPS_SI_FTYPE_SI_SI_SI, dspr2), - DIRECT_BUILTIN (cmpgdu_eq_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2), - DIRECT_BUILTIN (cmpgdu_lt_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2), - DIRECT_BUILTIN (cmpgdu_le_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2), - DIRECT_BUILTIN (mul_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (mul_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (mulq_rs_w, MIPS_SI_FTYPE_SI_SI, dspr2), - DIRECT_BUILTIN (mulq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (mulq_s_w, MIPS_SI_FTYPE_SI_SI, dspr2), - DIRECT_BUILTIN (precr_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (precr_sra_ph_w, MIPS_V2HI_FTYPE_SI_SI_SI, dspr2), - DIRECT_BUILTIN (precr_sra_r_ph_w, MIPS_V2HI_FTYPE_SI_SI_SI, dspr2), - DIRECT_BUILTIN (prepend, MIPS_SI_FTYPE_SI_SI_SI, dspr2), - DIRECT_BUILTIN (shra_qb, MIPS_V4QI_FTYPE_V4QI_SI, dspr2), - DIRECT_BUILTIN (shra_r_qb, MIPS_V4QI_FTYPE_V4QI_SI, dspr2), - DIRECT_BUILTIN (shrl_ph, MIPS_V2HI_FTYPE_V2HI_SI, dspr2), - DIRECT_BUILTIN (subu_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (subu_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (subuh_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), - DIRECT_BUILTIN (subuh_r_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), - DIRECT_BUILTIN (addqh_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (addqh_r_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (addqh_w, MIPS_SI_FTYPE_SI_SI, dspr2), - DIRECT_BUILTIN (addqh_r_w, MIPS_SI_FTYPE_SI_SI, dspr2), - DIRECT_BUILTIN (subqh_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (subqh_r_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), - DIRECT_BUILTIN (subqh_w, MIPS_SI_FTYPE_SI_SI, dspr2), - DIRECT_BUILTIN (subqh_r_w, MIPS_SI_FTYPE_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (absq_s_qb, MIPS_V4QI_FTYPE_V4QI, dspr2), + DIRECT_BUILTIN_PURE (addu_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (addu_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (adduh_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), + DIRECT_BUILTIN_PURE (adduh_r_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), + DIRECT_BUILTIN_PURE (append, MIPS_SI_FTYPE_SI_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (balign, MIPS_SI_FTYPE_SI_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (cmpgdu_eq_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2), + DIRECT_BUILTIN_PURE (cmpgdu_lt_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2), + DIRECT_BUILTIN_PURE (cmpgdu_le_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2), + DIRECT_BUILTIN_PURE (mul_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (mul_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (mulq_rs_w, MIPS_SI_FTYPE_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (mulq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (mulq_s_w, MIPS_SI_FTYPE_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (precr_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (precr_sra_ph_w, MIPS_V2HI_FTYPE_SI_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (precr_sra_r_ph_w, MIPS_V2HI_FTYPE_SI_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (prepend, MIPS_SI_FTYPE_SI_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (shra_qb, MIPS_V4QI_FTYPE_V4QI_SI, dspr2), + DIRECT_BUILTIN_PURE (shra_r_qb, MIPS_V4QI_FTYPE_V4QI_SI, dspr2), + DIRECT_BUILTIN_PURE (shrl_ph, MIPS_V2HI_FTYPE_V2HI_SI, dspr2), + DIRECT_BUILTIN_PURE (subu_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (subu_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (subuh_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), + DIRECT_BUILTIN_PURE (subuh_r_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), + DIRECT_BUILTIN_PURE (addqh_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (addqh_r_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (addqh_w, MIPS_SI_FTYPE_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (addqh_r_w, MIPS_SI_FTYPE_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (subqh_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (subqh_r_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), + DIRECT_BUILTIN_PURE (subqh_w, MIPS_SI_FTYPE_SI_SI, dspr2), + DIRECT_BUILTIN_PURE (subqh_r_w, MIPS_SI_FTYPE_SI_SI, dspr2), /* Built-in functions for the DSP ASE (32-bit only). */ - DIRECT_BUILTIN (dpau_h_qbl, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), - DIRECT_BUILTIN (dpau_h_qbr, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), - DIRECT_BUILTIN (dpsu_h_qbl, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), - DIRECT_BUILTIN (dpsu_h_qbr, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), - DIRECT_BUILTIN (dpaq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), - DIRECT_BUILTIN (dpsq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), - DIRECT_BUILTIN (mulsaq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), - DIRECT_BUILTIN (dpaq_sa_l_w, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), - DIRECT_BUILTIN (dpsq_sa_l_w, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), - DIRECT_BUILTIN (maq_s_w_phl, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), - DIRECT_BUILTIN (maq_s_w_phr, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), - DIRECT_BUILTIN (maq_sa_w_phl, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), - DIRECT_BUILTIN (maq_sa_w_phr, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), - DIRECT_BUILTIN (extr_w, MIPS_SI_FTYPE_DI_SI, dsp_32), - DIRECT_BUILTIN (extr_r_w, MIPS_SI_FTYPE_DI_SI, dsp_32), - DIRECT_BUILTIN (extr_rs_w, MIPS_SI_FTYPE_DI_SI, dsp_32), - DIRECT_BUILTIN (extr_s_h, MIPS_SI_FTYPE_DI_SI, dsp_32), - DIRECT_BUILTIN (extp, MIPS_SI_FTYPE_DI_SI, dsp_32), - DIRECT_BUILTIN (extpdp, MIPS_SI_FTYPE_DI_SI, dsp_32), - DIRECT_BUILTIN (shilo, MIPS_DI_FTYPE_DI_SI, dsp_32), - DIRECT_BUILTIN (mthlip, MIPS_DI_FTYPE_DI_SI, dsp_32), - DIRECT_BUILTIN (madd, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), - DIRECT_BUILTIN (maddu, MIPS_DI_FTYPE_DI_USI_USI, dsp_32), - DIRECT_BUILTIN (msub, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), - DIRECT_BUILTIN (msubu, MIPS_DI_FTYPE_DI_USI_USI, dsp_32), - DIRECT_BUILTIN (mult, MIPS_DI_FTYPE_SI_SI, dsp_32), - DIRECT_BUILTIN (multu, MIPS_DI_FTYPE_USI_USI, dsp_32), + DIRECT_BUILTIN_PURE (dpau_h_qbl, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), + DIRECT_BUILTIN_PURE (dpau_h_qbr, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), + DIRECT_BUILTIN_PURE (dpsu_h_qbl, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), + DIRECT_BUILTIN_PURE (dpsu_h_qbr, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), + DIRECT_BUILTIN_PURE (dpaq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), + DIRECT_BUILTIN_PURE (dpsq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), + DIRECT_BUILTIN_PURE (mulsaq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), + DIRECT_BUILTIN_PURE (dpaq_sa_l_w, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), + DIRECT_BUILTIN_PURE (dpsq_sa_l_w, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), + DIRECT_BUILTIN_PURE (maq_s_w_phl, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), + DIRECT_BUILTIN_PURE (maq_s_w_phr, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), + DIRECT_BUILTIN_PURE (maq_sa_w_phl, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), + DIRECT_BUILTIN_PURE (maq_sa_w_phr, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), + DIRECT_BUILTIN_PURE (extr_w, MIPS_SI_FTYPE_DI_SI, dsp_32), + DIRECT_BUILTIN_PURE (extr_r_w, MIPS_SI_FTYPE_DI_SI, dsp_32), + DIRECT_BUILTIN_PURE (extr_rs_w, MIPS_SI_FTYPE_DI_SI, dsp_32), + DIRECT_BUILTIN_PURE (extr_s_h, MIPS_SI_FTYPE_DI_SI, dsp_32), + DIRECT_BUILTIN_PURE (extp, MIPS_SI_FTYPE_DI_SI, dsp_32), + DIRECT_BUILTIN_PURE (extpdp, MIPS_SI_FTYPE_DI_SI, dsp_32), + DIRECT_BUILTIN_PURE (shilo, MIPS_DI_FTYPE_DI_SI, dsp_32), + DIRECT_BUILTIN_PURE (mthlip, MIPS_DI_FTYPE_DI_SI, dsp_32), + DIRECT_BUILTIN_PURE (madd, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), + DIRECT_BUILTIN_PURE (maddu, MIPS_DI_FTYPE_DI_USI_USI, dsp_32), + DIRECT_BUILTIN_PURE (msub, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), + DIRECT_BUILTIN_PURE (msubu, MIPS_DI_FTYPE_DI_USI_USI, dsp_32), + DIRECT_BUILTIN_PURE (mult, MIPS_DI_FTYPE_SI_SI, dsp_32), + DIRECT_BUILTIN_PURE (multu, MIPS_DI_FTYPE_USI_USI, dsp_32), /* Built-in functions for the DSP ASE (64-bit only). */ DIRECT_BUILTIN (ldx, MIPS_DI_FTYPE_POINTER_SI, dsp_64), /* The following are for the MIPS DSP ASE REV 2 (32-bit only). */ - DIRECT_BUILTIN (dpa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), - DIRECT_BUILTIN (dps_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), - DIRECT_BUILTIN (mulsa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), - DIRECT_BUILTIN (dpax_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), - DIRECT_BUILTIN (dpsx_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), - DIRECT_BUILTIN (dpaqx_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), - DIRECT_BUILTIN (dpaqx_sa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), - DIRECT_BUILTIN (dpsqx_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), - DIRECT_BUILTIN (dpsqx_sa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), + DIRECT_BUILTIN_PURE (dpa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), + DIRECT_BUILTIN_PURE (dps_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), + DIRECT_BUILTIN_PURE (mulsa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), + DIRECT_BUILTIN_PURE (dpax_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), + DIRECT_BUILTIN_PURE (dpsx_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), + DIRECT_BUILTIN_PURE (dpaqx_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), + DIRECT_BUILTIN_PURE (dpaqx_sa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), + DIRECT_BUILTIN_PURE (dpsqx_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), + DIRECT_BUILTIN_PURE (dpsqx_sa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), /* Builtin functions for ST Microelectronics Loongson-2E/2F cores. */ LOONGSON_BUILTIN (packsswh, MIPS_V4HI_FTYPE_V2SI_V2SI), @@ -15932,142 +15952,142 @@ static const struct mips_builtin_description mips_builtins[] = { DIRECT_NO_TARGET_BUILTIN (cache, MIPS_VOID_FTYPE_SI_CVPOINTER, cache), /* Built-in functions for MSA. */ - MSA_BUILTIN (sll_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (sll_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (sll_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (sll_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (slli_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (slli_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (slli_w, MIPS_V4SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (slli_d, MIPS_V2DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (sra_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (sra_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (sra_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (sra_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (srai_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (srai_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (srai_w, MIPS_V4SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (srai_d, MIPS_V2DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (srar_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (srar_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (srar_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (srar_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (srari_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (srari_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (srari_w, MIPS_V4SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (srari_d, MIPS_V2DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (srl_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (srl_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (srl_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (srl_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (srli_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (srli_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (srli_w, MIPS_V4SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (srli_d, MIPS_V2DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (srlr_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (srlr_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (srlr_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (srlr_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (srlri_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (srlri_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (srlri_w, MIPS_V4SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (srlri_d, MIPS_V2DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (bclr_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (bclr_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (bclr_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (bclr_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (bclri_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (bclri_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), - MSA_BUILTIN (bclri_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), - MSA_BUILTIN (bclri_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), - MSA_BUILTIN (bset_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (bset_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (bset_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (bset_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (bseti_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (bseti_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), - MSA_BUILTIN (bseti_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), - MSA_BUILTIN (bseti_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), - MSA_BUILTIN (bneg_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (bneg_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (bneg_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (bneg_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (bnegi_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (bnegi_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), - MSA_BUILTIN (bnegi_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), - MSA_BUILTIN (bnegi_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), - MSA_BUILTIN (binsl_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), - MSA_BUILTIN (binsl_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UV8HI), - MSA_BUILTIN (binsl_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UV4SI), - MSA_BUILTIN (binsl_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UV2DI), - MSA_BUILTIN (binsli_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), - MSA_BUILTIN (binsli_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UQI), - MSA_BUILTIN (binsli_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UQI), - MSA_BUILTIN (binsli_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UQI), - MSA_BUILTIN (binsr_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), - MSA_BUILTIN (binsr_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UV8HI), - MSA_BUILTIN (binsr_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UV4SI), - MSA_BUILTIN (binsr_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UV2DI), - MSA_BUILTIN (binsri_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), - MSA_BUILTIN (binsri_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UQI), - MSA_BUILTIN (binsri_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UQI), - MSA_BUILTIN (binsri_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UQI), - MSA_BUILTIN (addv_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (addv_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (addv_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (addv_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (addvi_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (addvi_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (addvi_w, MIPS_V4SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (addvi_d, MIPS_V2DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (subv_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (subv_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (subv_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (subv_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (subvi_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (subvi_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (subvi_w, MIPS_V4SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (subvi_d, MIPS_V2DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (max_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (max_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (max_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (max_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (maxi_s_b, MIPS_V16QI_FTYPE_V16QI_QI), - MSA_BUILTIN (maxi_s_h, MIPS_V8HI_FTYPE_V8HI_QI), - MSA_BUILTIN (maxi_s_w, MIPS_V4SI_FTYPE_V4SI_QI), - MSA_BUILTIN (maxi_s_d, MIPS_V2DI_FTYPE_V2DI_QI), - MSA_BUILTIN (max_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (max_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (max_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (max_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (maxi_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (maxi_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), - MSA_BUILTIN (maxi_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), - MSA_BUILTIN (maxi_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), - MSA_BUILTIN (min_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (min_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (min_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (min_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (mini_s_b, MIPS_V16QI_FTYPE_V16QI_QI), - MSA_BUILTIN (mini_s_h, MIPS_V8HI_FTYPE_V8HI_QI), - MSA_BUILTIN (mini_s_w, MIPS_V4SI_FTYPE_V4SI_QI), - MSA_BUILTIN (mini_s_d, MIPS_V2DI_FTYPE_V2DI_QI), - MSA_BUILTIN (min_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (min_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (min_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (min_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (mini_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (mini_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), - MSA_BUILTIN (mini_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), - MSA_BUILTIN (mini_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), - MSA_BUILTIN (max_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (max_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (max_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (max_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (min_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (min_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (min_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (min_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (sll_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (sll_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (sll_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (sll_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (slli_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (slli_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (slli_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (slli_d, MIPS_V2DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (sra_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (sra_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (sra_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (sra_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (srai_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (srai_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (srai_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (srai_d, MIPS_V2DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (srar_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (srar_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (srar_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (srar_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (srari_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (srari_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (srari_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (srari_d, MIPS_V2DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (srl_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (srl_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (srl_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (srl_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (srli_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (srli_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (srli_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (srli_d, MIPS_V2DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (srlr_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (srlr_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (srlr_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (srlr_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (srlri_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (srlri_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (srlri_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (srlri_d, MIPS_V2DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (bclr_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (bclr_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (bclr_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (bclr_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (bclri_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (bclri_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), + MSA_BUILTIN_PURE (bclri_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), + MSA_BUILTIN_PURE (bclri_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), + MSA_BUILTIN_PURE (bset_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (bset_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (bset_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (bset_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (bseti_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (bseti_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), + MSA_BUILTIN_PURE (bseti_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), + MSA_BUILTIN_PURE (bseti_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), + MSA_BUILTIN_PURE (bneg_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (bneg_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (bneg_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (bneg_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (bnegi_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (bnegi_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), + MSA_BUILTIN_PURE (bnegi_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), + MSA_BUILTIN_PURE (bnegi_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), + MSA_BUILTIN_PURE (binsl_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), + MSA_BUILTIN_PURE (binsl_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UV8HI), + MSA_BUILTIN_PURE (binsl_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UV4SI), + MSA_BUILTIN_PURE (binsl_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UV2DI), + MSA_BUILTIN_PURE (binsli_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), + MSA_BUILTIN_PURE (binsli_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UQI), + MSA_BUILTIN_PURE (binsli_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UQI), + MSA_BUILTIN_PURE (binsli_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UQI), + MSA_BUILTIN_PURE (binsr_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), + MSA_BUILTIN_PURE (binsr_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UV8HI), + MSA_BUILTIN_PURE (binsr_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UV4SI), + MSA_BUILTIN_PURE (binsr_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UV2DI), + MSA_BUILTIN_PURE (binsri_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), + MSA_BUILTIN_PURE (binsri_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UQI), + MSA_BUILTIN_PURE (binsri_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UQI), + MSA_BUILTIN_PURE (binsri_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UQI), + MSA_BUILTIN_PURE (addv_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (addv_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (addv_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (addv_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (addvi_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (addvi_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (addvi_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (addvi_d, MIPS_V2DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (subv_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (subv_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (subv_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (subv_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (subvi_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (subvi_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (subvi_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (subvi_d, MIPS_V2DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (max_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (max_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (max_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (max_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (maxi_s_b, MIPS_V16QI_FTYPE_V16QI_QI), + MSA_BUILTIN_PURE (maxi_s_h, MIPS_V8HI_FTYPE_V8HI_QI), + MSA_BUILTIN_PURE (maxi_s_w, MIPS_V4SI_FTYPE_V4SI_QI), + MSA_BUILTIN_PURE (maxi_s_d, MIPS_V2DI_FTYPE_V2DI_QI), + MSA_BUILTIN_PURE (max_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (max_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (max_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (max_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (maxi_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (maxi_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), + MSA_BUILTIN_PURE (maxi_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), + MSA_BUILTIN_PURE (maxi_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), + MSA_BUILTIN_PURE (min_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (min_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (min_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (min_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (mini_s_b, MIPS_V16QI_FTYPE_V16QI_QI), + MSA_BUILTIN_PURE (mini_s_h, MIPS_V8HI_FTYPE_V8HI_QI), + MSA_BUILTIN_PURE (mini_s_w, MIPS_V4SI_FTYPE_V4SI_QI), + MSA_BUILTIN_PURE (mini_s_d, MIPS_V2DI_FTYPE_V2DI_QI), + MSA_BUILTIN_PURE (min_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (min_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (min_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (min_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (mini_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (mini_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), + MSA_BUILTIN_PURE (mini_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), + MSA_BUILTIN_PURE (mini_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), + MSA_BUILTIN_PURE (max_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (max_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (max_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (max_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (min_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (min_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (min_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (min_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), MSA_BUILTIN (ceq_b, MIPS_V16QI_FTYPE_V16QI_V16QI), MSA_BUILTIN (ceq_h, MIPS_V8HI_FTYPE_V8HI_V8HI), MSA_BUILTIN (ceq_w, MIPS_V4SI_FTYPE_V4SI_V4SI), @@ -16116,223 +16136,223 @@ static const struct mips_builtin_description mips_builtins[] = { MSA_NO_TARGET_BUILTIN (st_h, MIPS_VOID_FTYPE_V8HI_CVPOINTER_SI), MSA_NO_TARGET_BUILTIN (st_w, MIPS_VOID_FTYPE_V4SI_CVPOINTER_SI), MSA_NO_TARGET_BUILTIN (st_d, MIPS_VOID_FTYPE_V2DI_CVPOINTER_SI), - MSA_BUILTIN (sat_s_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (sat_s_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (sat_s_w, MIPS_V4SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (sat_s_d, MIPS_V2DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (sat_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (sat_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), - MSA_BUILTIN (sat_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), - MSA_BUILTIN (sat_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), - MSA_BUILTIN (add_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (add_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (add_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (add_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (adds_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (adds_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (adds_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (adds_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (adds_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (adds_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (adds_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (adds_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (adds_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (adds_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (adds_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (adds_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (ave_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (ave_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (ave_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (ave_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (ave_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (ave_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (ave_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (ave_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (aver_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (aver_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (aver_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (aver_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (aver_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (aver_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (aver_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (aver_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (subs_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (subs_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (subs_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (subs_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (subs_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (subs_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (subs_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (subs_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (subsuu_s_b, MIPS_V16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (subsuu_s_h, MIPS_V8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (subsuu_s_w, MIPS_V4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (subsuu_s_d, MIPS_V2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (subsus_u_b, MIPS_UV16QI_FTYPE_UV16QI_V16QI), - MSA_BUILTIN (subsus_u_h, MIPS_UV8HI_FTYPE_UV8HI_V8HI), - MSA_BUILTIN (subsus_u_w, MIPS_UV4SI_FTYPE_UV4SI_V4SI), - MSA_BUILTIN (subsus_u_d, MIPS_UV2DI_FTYPE_UV2DI_V2DI), - MSA_BUILTIN (asub_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (asub_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (asub_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (asub_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (asub_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (asub_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (asub_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (asub_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (mulv_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (mulv_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (mulv_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (mulv_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (maddv_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI), - MSA_BUILTIN (maddv_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), - MSA_BUILTIN (maddv_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), - MSA_BUILTIN (maddv_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI), - MSA_BUILTIN (msubv_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI), - MSA_BUILTIN (msubv_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), - MSA_BUILTIN (msubv_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), - MSA_BUILTIN (msubv_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI), - MSA_BUILTIN (div_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (div_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (div_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (div_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (div_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (div_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (div_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (div_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (hadd_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (hadd_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (hadd_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (hadd_u_h, MIPS_UV8HI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (hadd_u_w, MIPS_UV4SI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (hadd_u_d, MIPS_UV2DI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (hsub_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (hsub_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (hsub_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (hsub_u_h, MIPS_V8HI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (hsub_u_w, MIPS_V4SI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (hsub_u_d, MIPS_V2DI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (mod_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (mod_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (mod_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (mod_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (mod_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (mod_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (mod_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (mod_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), - MSA_BUILTIN (dotp_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (dotp_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (dotp_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (dotp_u_h, MIPS_UV8HI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (dotp_u_w, MIPS_UV4SI_FTYPE_UV8HI_UV8HI), - MSA_BUILTIN (dotp_u_d, MIPS_UV2DI_FTYPE_UV4SI_UV4SI), - MSA_BUILTIN (dpadd_s_h, MIPS_V8HI_FTYPE_V8HI_V16QI_V16QI), - MSA_BUILTIN (dpadd_s_w, MIPS_V4SI_FTYPE_V4SI_V8HI_V8HI), - MSA_BUILTIN (dpadd_s_d, MIPS_V2DI_FTYPE_V2DI_V4SI_V4SI), - MSA_BUILTIN (dpadd_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV16QI_UV16QI), - MSA_BUILTIN (dpadd_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV8HI_UV8HI), - MSA_BUILTIN (dpadd_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV4SI_UV4SI), - MSA_BUILTIN (dpsub_s_h, MIPS_V8HI_FTYPE_V8HI_V16QI_V16QI), - MSA_BUILTIN (dpsub_s_w, MIPS_V4SI_FTYPE_V4SI_V8HI_V8HI), - MSA_BUILTIN (dpsub_s_d, MIPS_V2DI_FTYPE_V2DI_V4SI_V4SI), - MSA_BUILTIN (dpsub_u_h, MIPS_V8HI_FTYPE_V8HI_UV16QI_UV16QI), - MSA_BUILTIN (dpsub_u_w, MIPS_V4SI_FTYPE_V4SI_UV8HI_UV8HI), - MSA_BUILTIN (dpsub_u_d, MIPS_V2DI_FTYPE_V2DI_UV4SI_UV4SI), - MSA_BUILTIN (sld_b, MIPS_V16QI_FTYPE_V16QI_V16QI_SI), - MSA_BUILTIN (sld_h, MIPS_V8HI_FTYPE_V8HI_V8HI_SI), - MSA_BUILTIN (sld_w, MIPS_V4SI_FTYPE_V4SI_V4SI_SI), - MSA_BUILTIN (sld_d, MIPS_V2DI_FTYPE_V2DI_V2DI_SI), - MSA_BUILTIN (sldi_b, MIPS_V16QI_FTYPE_V16QI_V16QI_UQI), - MSA_BUILTIN (sldi_h, MIPS_V8HI_FTYPE_V8HI_V8HI_UQI), - MSA_BUILTIN (sldi_w, MIPS_V4SI_FTYPE_V4SI_V4SI_UQI), - MSA_BUILTIN (sldi_d, MIPS_V2DI_FTYPE_V2DI_V2DI_UQI), - MSA_BUILTIN (splat_b, MIPS_V16QI_FTYPE_V16QI_SI), - MSA_BUILTIN (splat_h, MIPS_V8HI_FTYPE_V8HI_SI), - MSA_BUILTIN (splat_w, MIPS_V4SI_FTYPE_V4SI_SI), - MSA_BUILTIN (splat_d, MIPS_V2DI_FTYPE_V2DI_SI), - MSA_BUILTIN (splati_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (splati_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (splati_w, MIPS_V4SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (splati_d, MIPS_V2DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (pckev_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (pckev_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (pckev_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (pckev_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (pckod_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (pckod_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (pckod_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (pckod_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (ilvl_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (ilvl_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (ilvl_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (ilvl_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (ilvr_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (ilvr_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (ilvr_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (ilvr_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (ilvev_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (ilvev_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (ilvev_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (ilvev_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (ilvod_b, MIPS_V16QI_FTYPE_V16QI_V16QI), - MSA_BUILTIN (ilvod_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (ilvod_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (ilvod_d, MIPS_V2DI_FTYPE_V2DI_V2DI), - MSA_BUILTIN (vshf_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI), - MSA_BUILTIN (vshf_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), - MSA_BUILTIN (vshf_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), - MSA_BUILTIN (vshf_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI), - MSA_BUILTIN (and_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (andi_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (or_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (ori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (nor_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (nori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (xor_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), - MSA_BUILTIN (xori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), - MSA_BUILTIN (bmnz_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), - MSA_BUILTIN (bmnzi_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), - MSA_BUILTIN (bmz_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), - MSA_BUILTIN (bmzi_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), - MSA_BUILTIN (bsel_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), - MSA_BUILTIN (bseli_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), - MSA_BUILTIN (shf_b, MIPS_V16QI_FTYPE_V16QI_UQI), - MSA_BUILTIN (shf_h, MIPS_V8HI_FTYPE_V8HI_UQI), - MSA_BUILTIN (shf_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (sat_s_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (sat_s_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (sat_s_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (sat_s_d, MIPS_V2DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (sat_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (sat_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), + MSA_BUILTIN_PURE (sat_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), + MSA_BUILTIN_PURE (sat_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), + MSA_BUILTIN_PURE (add_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (add_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (add_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (add_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (adds_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (adds_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (adds_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (adds_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (adds_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (adds_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (adds_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (adds_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (adds_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (adds_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (adds_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (adds_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (ave_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (ave_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (ave_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (ave_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (ave_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (ave_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (ave_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (ave_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (aver_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (aver_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (aver_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (aver_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (aver_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (aver_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (aver_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (aver_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (subs_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (subs_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (subs_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (subs_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (subs_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (subs_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (subs_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (subs_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (subsuu_s_b, MIPS_V16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (subsuu_s_h, MIPS_V8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (subsuu_s_w, MIPS_V4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (subsuu_s_d, MIPS_V2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (subsus_u_b, MIPS_UV16QI_FTYPE_UV16QI_V16QI), + MSA_BUILTIN_PURE (subsus_u_h, MIPS_UV8HI_FTYPE_UV8HI_V8HI), + MSA_BUILTIN_PURE (subsus_u_w, MIPS_UV4SI_FTYPE_UV4SI_V4SI), + MSA_BUILTIN_PURE (subsus_u_d, MIPS_UV2DI_FTYPE_UV2DI_V2DI), + MSA_BUILTIN_PURE (asub_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (asub_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (asub_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (asub_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (asub_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (asub_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (asub_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (asub_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (mulv_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (mulv_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (mulv_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (mulv_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (maddv_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI), + MSA_BUILTIN_PURE (maddv_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), + MSA_BUILTIN_PURE (maddv_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), + MSA_BUILTIN_PURE (maddv_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI), + MSA_BUILTIN_PURE (msubv_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI), + MSA_BUILTIN_PURE (msubv_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), + MSA_BUILTIN_PURE (msubv_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), + MSA_BUILTIN_PURE (msubv_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI), + MSA_BUILTIN_PURE (div_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (div_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (div_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (div_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (div_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (div_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (div_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (div_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (hadd_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (hadd_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (hadd_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (hadd_u_h, MIPS_UV8HI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (hadd_u_w, MIPS_UV4SI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (hadd_u_d, MIPS_UV2DI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (hsub_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (hsub_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (hsub_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (hsub_u_h, MIPS_V8HI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (hsub_u_w, MIPS_V4SI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (hsub_u_d, MIPS_V2DI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (mod_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (mod_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (mod_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (mod_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (mod_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (mod_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (mod_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (mod_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), + MSA_BUILTIN_PURE (dotp_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (dotp_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (dotp_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (dotp_u_h, MIPS_UV8HI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (dotp_u_w, MIPS_UV4SI_FTYPE_UV8HI_UV8HI), + MSA_BUILTIN_PURE (dotp_u_d, MIPS_UV2DI_FTYPE_UV4SI_UV4SI), + MSA_BUILTIN_PURE (dpadd_s_h, MIPS_V8HI_FTYPE_V8HI_V16QI_V16QI), + MSA_BUILTIN_PURE (dpadd_s_w, MIPS_V4SI_FTYPE_V4SI_V8HI_V8HI), + MSA_BUILTIN_PURE (dpadd_s_d, MIPS_V2DI_FTYPE_V2DI_V4SI_V4SI), + MSA_BUILTIN_PURE (dpadd_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV16QI_UV16QI), + MSA_BUILTIN_PURE (dpadd_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV8HI_UV8HI), + MSA_BUILTIN_PURE (dpadd_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV4SI_UV4SI), + MSA_BUILTIN_PURE (dpsub_s_h, MIPS_V8HI_FTYPE_V8HI_V16QI_V16QI), + MSA_BUILTIN_PURE (dpsub_s_w, MIPS_V4SI_FTYPE_V4SI_V8HI_V8HI), + MSA_BUILTIN_PURE (dpsub_s_d, MIPS_V2DI_FTYPE_V2DI_V4SI_V4SI), + MSA_BUILTIN_PURE (dpsub_u_h, MIPS_V8HI_FTYPE_V8HI_UV16QI_UV16QI), + MSA_BUILTIN_PURE (dpsub_u_w, MIPS_V4SI_FTYPE_V4SI_UV8HI_UV8HI), + MSA_BUILTIN_PURE (dpsub_u_d, MIPS_V2DI_FTYPE_V2DI_UV4SI_UV4SI), + MSA_BUILTIN_PURE (sld_b, MIPS_V16QI_FTYPE_V16QI_V16QI_SI), + MSA_BUILTIN_PURE (sld_h, MIPS_V8HI_FTYPE_V8HI_V8HI_SI), + MSA_BUILTIN_PURE (sld_w, MIPS_V4SI_FTYPE_V4SI_V4SI_SI), + MSA_BUILTIN_PURE (sld_d, MIPS_V2DI_FTYPE_V2DI_V2DI_SI), + MSA_BUILTIN_PURE (sldi_b, MIPS_V16QI_FTYPE_V16QI_V16QI_UQI), + MSA_BUILTIN_PURE (sldi_h, MIPS_V8HI_FTYPE_V8HI_V8HI_UQI), + MSA_BUILTIN_PURE (sldi_w, MIPS_V4SI_FTYPE_V4SI_V4SI_UQI), + MSA_BUILTIN_PURE (sldi_d, MIPS_V2DI_FTYPE_V2DI_V2DI_UQI), + MSA_BUILTIN_PURE (splat_b, MIPS_V16QI_FTYPE_V16QI_SI), + MSA_BUILTIN_PURE (splat_h, MIPS_V8HI_FTYPE_V8HI_SI), + MSA_BUILTIN_PURE (splat_w, MIPS_V4SI_FTYPE_V4SI_SI), + MSA_BUILTIN_PURE (splat_d, MIPS_V2DI_FTYPE_V2DI_SI), + MSA_BUILTIN_PURE (splati_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (splati_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (splati_w, MIPS_V4SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (splati_d, MIPS_V2DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (pckev_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (pckev_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (pckev_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (pckev_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (pckod_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (pckod_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (pckod_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (pckod_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (ilvl_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (ilvl_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (ilvl_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (ilvl_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (ilvr_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (ilvr_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (ilvr_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (ilvr_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (ilvev_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (ilvev_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (ilvev_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (ilvev_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (ilvod_b, MIPS_V16QI_FTYPE_V16QI_V16QI), + MSA_BUILTIN_PURE (ilvod_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (ilvod_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (ilvod_d, MIPS_V2DI_FTYPE_V2DI_V2DI), + MSA_BUILTIN_PURE (vshf_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI), + MSA_BUILTIN_PURE (vshf_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), + MSA_BUILTIN_PURE (vshf_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), + MSA_BUILTIN_PURE (vshf_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI), + MSA_BUILTIN_PURE (and_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (andi_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (or_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (ori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (nor_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (nori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (xor_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), + MSA_BUILTIN_PURE (xori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), + MSA_BUILTIN_PURE (bmnz_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), + MSA_BUILTIN_PURE (bmnzi_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), + MSA_BUILTIN_PURE (bmz_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), + MSA_BUILTIN_PURE (bmzi_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), + MSA_BUILTIN_PURE (bsel_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), + MSA_BUILTIN_PURE (bseli_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), + MSA_BUILTIN_PURE (shf_b, MIPS_V16QI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (shf_h, MIPS_V8HI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (shf_w, MIPS_V4SI_FTYPE_V4SI_UQI), MSA_BUILTIN_TEST_BRANCH (bnz_v, MIPS_SI_FTYPE_UV16QI), MSA_BUILTIN_TEST_BRANCH (bz_v, MIPS_SI_FTYPE_UV16QI), - MSA_BUILTIN (fill_b, MIPS_V16QI_FTYPE_SI), - MSA_BUILTIN (fill_h, MIPS_V8HI_FTYPE_SI), - MSA_BUILTIN (fill_w, MIPS_V4SI_FTYPE_SI), - MSA_BUILTIN (fill_d, MIPS_V2DI_FTYPE_DI), - MSA_BUILTIN (pcnt_b, MIPS_V16QI_FTYPE_V16QI), - MSA_BUILTIN (pcnt_h, MIPS_V8HI_FTYPE_V8HI), - MSA_BUILTIN (pcnt_w, MIPS_V4SI_FTYPE_V4SI), - MSA_BUILTIN (pcnt_d, MIPS_V2DI_FTYPE_V2DI), - MSA_BUILTIN (nloc_b, MIPS_V16QI_FTYPE_V16QI), - MSA_BUILTIN (nloc_h, MIPS_V8HI_FTYPE_V8HI), - MSA_BUILTIN (nloc_w, MIPS_V4SI_FTYPE_V4SI), - MSA_BUILTIN (nloc_d, MIPS_V2DI_FTYPE_V2DI), - MSA_BUILTIN (nlzc_b, MIPS_V16QI_FTYPE_V16QI), - MSA_BUILTIN (nlzc_h, MIPS_V8HI_FTYPE_V8HI), - MSA_BUILTIN (nlzc_w, MIPS_V4SI_FTYPE_V4SI), - MSA_BUILTIN (nlzc_d, MIPS_V2DI_FTYPE_V2DI), - MSA_BUILTIN (copy_s_b, MIPS_SI_FTYPE_V16QI_UQI), - MSA_BUILTIN (copy_s_h, MIPS_SI_FTYPE_V8HI_UQI), - MSA_BUILTIN (copy_s_w, MIPS_SI_FTYPE_V4SI_UQI), - MSA_BUILTIN (copy_s_d, MIPS_DI_FTYPE_V2DI_UQI), - MSA_BUILTIN (copy_u_b, MIPS_USI_FTYPE_V16QI_UQI), - MSA_BUILTIN (copy_u_h, MIPS_USI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (fill_b, MIPS_V16QI_FTYPE_SI), + MSA_BUILTIN_PURE (fill_h, MIPS_V8HI_FTYPE_SI), + MSA_BUILTIN_PURE (fill_w, MIPS_V4SI_FTYPE_SI), + MSA_BUILTIN_PURE (fill_d, MIPS_V2DI_FTYPE_DI), + MSA_BUILTIN_PURE (pcnt_b, MIPS_V16QI_FTYPE_V16QI), + MSA_BUILTIN_PURE (pcnt_h, MIPS_V8HI_FTYPE_V8HI), + MSA_BUILTIN_PURE (pcnt_w, MIPS_V4SI_FTYPE_V4SI), + MSA_BUILTIN_PURE (pcnt_d, MIPS_V2DI_FTYPE_V2DI), + MSA_BUILTIN_PURE (nloc_b, MIPS_V16QI_FTYPE_V16QI), + MSA_BUILTIN_PURE (nloc_h, MIPS_V8HI_FTYPE_V8HI), + MSA_BUILTIN_PURE (nloc_w, MIPS_V4SI_FTYPE_V4SI), + MSA_BUILTIN_PURE (nloc_d, MIPS_V2DI_FTYPE_V2DI), + MSA_BUILTIN_PURE (nlzc_b, MIPS_V16QI_FTYPE_V16QI), + MSA_BUILTIN_PURE (nlzc_h, MIPS_V8HI_FTYPE_V8HI), + MSA_BUILTIN_PURE (nlzc_w, MIPS_V4SI_FTYPE_V4SI), + MSA_BUILTIN_PURE (nlzc_d, MIPS_V2DI_FTYPE_V2DI), + MSA_BUILTIN_PURE (copy_s_b, MIPS_SI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (copy_s_h, MIPS_SI_FTYPE_V8HI_UQI), + MSA_BUILTIN_PURE (copy_s_w, MIPS_SI_FTYPE_V4SI_UQI), + MSA_BUILTIN_PURE (copy_s_d, MIPS_DI_FTYPE_V2DI_UQI), + MSA_BUILTIN_PURE (copy_u_b, MIPS_USI_FTYPE_V16QI_UQI), + MSA_BUILTIN_PURE (copy_u_h, MIPS_USI_FTYPE_V8HI_UQI), MSA_BUILTIN_REMAP (copy_u_w, copy_s_w, MIPS_USI_FTYPE_V4SI_UQI), MSA_BUILTIN_REMAP (copy_u_d, copy_s_d, MIPS_UDI_FTYPE_V2DI_UQI), - MSA_BUILTIN (insert_b, MIPS_V16QI_FTYPE_V16QI_UQI_SI), - MSA_BUILTIN (insert_h, MIPS_V8HI_FTYPE_V8HI_UQI_SI), - MSA_BUILTIN (insert_w, MIPS_V4SI_FTYPE_V4SI_UQI_SI), - MSA_BUILTIN (insert_d, MIPS_V2DI_FTYPE_V2DI_UQI_DI), - MSA_BUILTIN (insve_b, MIPS_V16QI_FTYPE_V16QI_UQI_V16QI), - MSA_BUILTIN (insve_h, MIPS_V8HI_FTYPE_V8HI_UQI_V8HI), - MSA_BUILTIN (insve_w, MIPS_V4SI_FTYPE_V4SI_UQI_V4SI), - MSA_BUILTIN (insve_d, MIPS_V2DI_FTYPE_V2DI_UQI_V2DI), + MSA_BUILTIN_PURE (insert_b, MIPS_V16QI_FTYPE_V16QI_UQI_SI), + MSA_BUILTIN_PURE (insert_h, MIPS_V8HI_FTYPE_V8HI_UQI_SI), + MSA_BUILTIN_PURE (insert_w, MIPS_V4SI_FTYPE_V4SI_UQI_SI), + MSA_BUILTIN_PURE (insert_d, MIPS_V2DI_FTYPE_V2DI_UQI_DI), + MSA_BUILTIN_PURE (insve_b, MIPS_V16QI_FTYPE_V16QI_UQI_V16QI), + MSA_BUILTIN_PURE (insve_h, MIPS_V8HI_FTYPE_V8HI_UQI_V8HI), + MSA_BUILTIN_PURE (insve_w, MIPS_V4SI_FTYPE_V4SI_UQI_V4SI), + MSA_BUILTIN_PURE (insve_d, MIPS_V2DI_FTYPE_V2DI_UQI_V2DI), MSA_BUILTIN_TEST_BRANCH (bnz_b, MIPS_SI_FTYPE_UV16QI), MSA_BUILTIN_TEST_BRANCH (bnz_h, MIPS_SI_FTYPE_UV8HI), MSA_BUILTIN_TEST_BRANCH (bnz_w, MIPS_SI_FTYPE_UV4SI), @@ -16341,127 +16361,127 @@ static const struct mips_builtin_description mips_builtins[] = { MSA_BUILTIN_TEST_BRANCH (bz_h, MIPS_SI_FTYPE_UV8HI), MSA_BUILTIN_TEST_BRANCH (bz_w, MIPS_SI_FTYPE_UV4SI), MSA_BUILTIN_TEST_BRANCH (bz_d, MIPS_SI_FTYPE_UV2DI), - MSA_BUILTIN (ldi_b, MIPS_V16QI_FTYPE_HI), - MSA_BUILTIN (ldi_h, MIPS_V8HI_FTYPE_HI), - MSA_BUILTIN (ldi_w, MIPS_V4SI_FTYPE_HI), - MSA_BUILTIN (ldi_d, MIPS_V2DI_FTYPE_HI), - MSA_BUILTIN (fcaf_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fcaf_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fcor_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fcor_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fcun_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fcun_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fcune_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fcune_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fcueq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fcueq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fceq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fceq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fcne_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fcne_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fclt_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fclt_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fcult_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fcult_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fcle_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fcle_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fcule_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fcule_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsaf_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsaf_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsor_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsor_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsun_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsun_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsune_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsune_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsueq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsueq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fseq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fseq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsne_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsne_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fslt_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fslt_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsult_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsult_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsle_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsle_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsule_w, MIPS_V4SI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsule_d, MIPS_V2DI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fadd_w, MIPS_V4SF_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fadd_d, MIPS_V2DF_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fsub_w, MIPS_V4SF_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fsub_d, MIPS_V2DF_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fmul_w, MIPS_V4SF_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fmul_d, MIPS_V2DF_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fdiv_w, MIPS_V4SF_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fdiv_d, MIPS_V2DF_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fmadd_w, MIPS_V4SF_FTYPE_V4SF_V4SF_V4SF), - MSA_BUILTIN (fmadd_d, MIPS_V2DF_FTYPE_V2DF_V2DF_V2DF), - MSA_BUILTIN (fmsub_w, MIPS_V4SF_FTYPE_V4SF_V4SF_V4SF), - MSA_BUILTIN (fmsub_d, MIPS_V2DF_FTYPE_V2DF_V2DF_V2DF), - MSA_BUILTIN (fexp2_w, MIPS_V4SF_FTYPE_V4SF_V4SI), - MSA_BUILTIN (fexp2_d, MIPS_V2DF_FTYPE_V2DF_V2DI), - MSA_BUILTIN (fexdo_h, MIPS_V8HI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fexdo_w, MIPS_V4SF_FTYPE_V2DF_V2DF), - MSA_BUILTIN (ftq_h, MIPS_V8HI_FTYPE_V4SF_V4SF), - MSA_BUILTIN (ftq_w, MIPS_V4SI_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fmin_w, MIPS_V4SF_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fmin_d, MIPS_V2DF_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fmin_a_w, MIPS_V4SF_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fmin_a_d, MIPS_V2DF_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fmax_w, MIPS_V4SF_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fmax_d, MIPS_V2DF_FTYPE_V2DF_V2DF), - MSA_BUILTIN (fmax_a_w, MIPS_V4SF_FTYPE_V4SF_V4SF), - MSA_BUILTIN (fmax_a_d, MIPS_V2DF_FTYPE_V2DF_V2DF), - MSA_BUILTIN (mul_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (mul_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (mulr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI), - MSA_BUILTIN (mulr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI), - MSA_BUILTIN (madd_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), - MSA_BUILTIN (madd_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), - MSA_BUILTIN (maddr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), - MSA_BUILTIN (maddr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), - MSA_BUILTIN (msub_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), - MSA_BUILTIN (msub_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), - MSA_BUILTIN (msubr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), - MSA_BUILTIN (msubr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), - MSA_BUILTIN (fclass_w, MIPS_V4SI_FTYPE_V4SF), - MSA_BUILTIN (fclass_d, MIPS_V2DI_FTYPE_V2DF), - MSA_BUILTIN (fsqrt_w, MIPS_V4SF_FTYPE_V4SF), - MSA_BUILTIN (fsqrt_d, MIPS_V2DF_FTYPE_V2DF), - MSA_BUILTIN (frcp_w, MIPS_V4SF_FTYPE_V4SF), - MSA_BUILTIN (frcp_d, MIPS_V2DF_FTYPE_V2DF), - MSA_BUILTIN (frint_w, MIPS_V4SF_FTYPE_V4SF), - MSA_BUILTIN (frint_d, MIPS_V2DF_FTYPE_V2DF), - MSA_BUILTIN (frsqrt_w, MIPS_V4SF_FTYPE_V4SF), - MSA_BUILTIN (frsqrt_d, MIPS_V2DF_FTYPE_V2DF), - MSA_BUILTIN (flog2_w, MIPS_V4SF_FTYPE_V4SF), - MSA_BUILTIN (flog2_d, MIPS_V2DF_FTYPE_V2DF), - MSA_BUILTIN (fexupl_w, MIPS_V4SF_FTYPE_V8HI), - MSA_BUILTIN (fexupl_d, MIPS_V2DF_FTYPE_V4SF), - MSA_BUILTIN (fexupr_w, MIPS_V4SF_FTYPE_V8HI), - MSA_BUILTIN (fexupr_d, MIPS_V2DF_FTYPE_V4SF), - MSA_BUILTIN (ffql_w, MIPS_V4SF_FTYPE_V8HI), - MSA_BUILTIN (ffql_d, MIPS_V2DF_FTYPE_V4SI), - MSA_BUILTIN (ffqr_w, MIPS_V4SF_FTYPE_V8HI), - MSA_BUILTIN (ffqr_d, MIPS_V2DF_FTYPE_V4SI), - MSA_BUILTIN (ftint_s_w, MIPS_V4SI_FTYPE_V4SF), - MSA_BUILTIN (ftint_s_d, MIPS_V2DI_FTYPE_V2DF), - MSA_BUILTIN (ftint_u_w, MIPS_UV4SI_FTYPE_V4SF), - MSA_BUILTIN (ftint_u_d, MIPS_UV2DI_FTYPE_V2DF), - MSA_BUILTIN (ftrunc_s_w, MIPS_V4SI_FTYPE_V4SF), - MSA_BUILTIN (ftrunc_s_d, MIPS_V2DI_FTYPE_V2DF), - MSA_BUILTIN (ftrunc_u_w, MIPS_UV4SI_FTYPE_V4SF), - MSA_BUILTIN (ftrunc_u_d, MIPS_UV2DI_FTYPE_V2DF), - MSA_BUILTIN (ffint_s_w, MIPS_V4SF_FTYPE_V4SI), - MSA_BUILTIN (ffint_s_d, MIPS_V2DF_FTYPE_V2DI), - MSA_BUILTIN (ffint_u_w, MIPS_V4SF_FTYPE_UV4SI), - MSA_BUILTIN (ffint_u_d, MIPS_V2DF_FTYPE_UV2DI), + MSA_BUILTIN_PURE (ldi_b, MIPS_V16QI_FTYPE_HI), + MSA_BUILTIN_PURE (ldi_h, MIPS_V8HI_FTYPE_HI), + MSA_BUILTIN_PURE (ldi_w, MIPS_V4SI_FTYPE_HI), + MSA_BUILTIN_PURE (ldi_d, MIPS_V2DI_FTYPE_HI), + MSA_BUILTIN_PURE (fcaf_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fcaf_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fcor_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fcor_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fcun_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fcun_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fcune_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fcune_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fcueq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fcueq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fceq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fceq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fcne_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fcne_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fclt_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fclt_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fcult_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fcult_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fcle_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fcle_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fcule_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fcule_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsaf_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsaf_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsor_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsor_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsun_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsun_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsune_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsune_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsueq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsueq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fseq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fseq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsne_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsne_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fslt_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fslt_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsult_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsult_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsle_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsle_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsule_w, MIPS_V4SI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsule_d, MIPS_V2DI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fadd_w, MIPS_V4SF_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fadd_d, MIPS_V2DF_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fsub_w, MIPS_V4SF_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fsub_d, MIPS_V2DF_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fmul_w, MIPS_V4SF_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fmul_d, MIPS_V2DF_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fdiv_w, MIPS_V4SF_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fdiv_d, MIPS_V2DF_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fmadd_w, MIPS_V4SF_FTYPE_V4SF_V4SF_V4SF), + MSA_BUILTIN_PURE (fmadd_d, MIPS_V2DF_FTYPE_V2DF_V2DF_V2DF), + MSA_BUILTIN_PURE (fmsub_w, MIPS_V4SF_FTYPE_V4SF_V4SF_V4SF), + MSA_BUILTIN_PURE (fmsub_d, MIPS_V2DF_FTYPE_V2DF_V2DF_V2DF), + MSA_BUILTIN_PURE (fexp2_w, MIPS_V4SF_FTYPE_V4SF_V4SI), + MSA_BUILTIN_PURE (fexp2_d, MIPS_V2DF_FTYPE_V2DF_V2DI), + MSA_BUILTIN_PURE (fexdo_h, MIPS_V8HI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fexdo_w, MIPS_V4SF_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (ftq_h, MIPS_V8HI_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (ftq_w, MIPS_V4SI_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fmin_w, MIPS_V4SF_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fmin_d, MIPS_V2DF_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fmin_a_w, MIPS_V4SF_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fmin_a_d, MIPS_V2DF_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fmax_w, MIPS_V4SF_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fmax_d, MIPS_V2DF_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (fmax_a_w, MIPS_V4SF_FTYPE_V4SF_V4SF), + MSA_BUILTIN_PURE (fmax_a_d, MIPS_V2DF_FTYPE_V2DF_V2DF), + MSA_BUILTIN_PURE (mul_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (mul_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (mulr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI), + MSA_BUILTIN_PURE (mulr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI), + MSA_BUILTIN_PURE (madd_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), + MSA_BUILTIN_PURE (madd_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), + MSA_BUILTIN_PURE (maddr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), + MSA_BUILTIN_PURE (maddr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), + MSA_BUILTIN_PURE (msub_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), + MSA_BUILTIN_PURE (msub_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), + MSA_BUILTIN_PURE (msubr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), + MSA_BUILTIN_PURE (msubr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), + MSA_BUILTIN_PURE (fclass_w, MIPS_V4SI_FTYPE_V4SF), + MSA_BUILTIN_PURE (fclass_d, MIPS_V2DI_FTYPE_V2DF), + MSA_BUILTIN_PURE (fsqrt_w, MIPS_V4SF_FTYPE_V4SF), + MSA_BUILTIN_PURE (fsqrt_d, MIPS_V2DF_FTYPE_V2DF), + MSA_BUILTIN_PURE (frcp_w, MIPS_V4SF_FTYPE_V4SF), + MSA_BUILTIN_PURE (frcp_d, MIPS_V2DF_FTYPE_V2DF), + MSA_BUILTIN_PURE (frint_w, MIPS_V4SF_FTYPE_V4SF), + MSA_BUILTIN_PURE (frint_d, MIPS_V2DF_FTYPE_V2DF), + MSA_BUILTIN_PURE (frsqrt_w, MIPS_V4SF_FTYPE_V4SF), + MSA_BUILTIN_PURE (frsqrt_d, MIPS_V2DF_FTYPE_V2DF), + MSA_BUILTIN_PURE (flog2_w, MIPS_V4SF_FTYPE_V4SF), + MSA_BUILTIN_PURE (flog2_d, MIPS_V2DF_FTYPE_V2DF), + MSA_BUILTIN_PURE (fexupl_w, MIPS_V4SF_FTYPE_V8HI), + MSA_BUILTIN_PURE (fexupl_d, MIPS_V2DF_FTYPE_V4SF), + MSA_BUILTIN_PURE (fexupr_w, MIPS_V4SF_FTYPE_V8HI), + MSA_BUILTIN_PURE (fexupr_d, MIPS_V2DF_FTYPE_V4SF), + MSA_BUILTIN_PURE (ffql_w, MIPS_V4SF_FTYPE_V8HI), + MSA_BUILTIN_PURE (ffql_d, MIPS_V2DF_FTYPE_V4SI), + MSA_BUILTIN_PURE (ffqr_w, MIPS_V4SF_FTYPE_V8HI), + MSA_BUILTIN_PURE (ffqr_d, MIPS_V2DF_FTYPE_V4SI), + MSA_BUILTIN_PURE (ftint_s_w, MIPS_V4SI_FTYPE_V4SF), + MSA_BUILTIN_PURE (ftint_s_d, MIPS_V2DI_FTYPE_V2DF), + MSA_BUILTIN_PURE (ftint_u_w, MIPS_UV4SI_FTYPE_V4SF), + MSA_BUILTIN_PURE (ftint_u_d, MIPS_UV2DI_FTYPE_V2DF), + MSA_BUILTIN_PURE (ftrunc_s_w, MIPS_V4SI_FTYPE_V4SF), + MSA_BUILTIN_PURE (ftrunc_s_d, MIPS_V2DI_FTYPE_V2DF), + MSA_BUILTIN_PURE (ftrunc_u_w, MIPS_UV4SI_FTYPE_V4SF), + MSA_BUILTIN_PURE (ftrunc_u_d, MIPS_UV2DI_FTYPE_V2DF), + MSA_BUILTIN_PURE (ffint_s_w, MIPS_V4SF_FTYPE_V4SI), + MSA_BUILTIN_PURE (ffint_s_d, MIPS_V2DF_FTYPE_V2DI), + MSA_BUILTIN_PURE (ffint_u_w, MIPS_V4SF_FTYPE_UV4SI), + MSA_BUILTIN_PURE (ffint_u_d, MIPS_V2DF_FTYPE_UV2DI), MSA_NO_TARGET_BUILTIN (ctcmsa, MIPS_VOID_FTYPE_UQI_SI), - MSA_BUILTIN (cfcmsa, MIPS_SI_FTYPE_UQI), - MSA_BUILTIN (move_v, MIPS_V16QI_FTYPE_V16QI), + MSA_BUILTIN_PURE (cfcmsa, MIPS_SI_FTYPE_UQI), + MSA_BUILTIN_PURE (move_v, MIPS_V16QI_FTYPE_V16QI), }; /* Index I is the function declaration for mips_builtins[I], or null if the @@ -16612,6 +16632,8 @@ mips_init_builtins (void) = add_builtin_function (d->name, mips_build_function_type (d->function_type), i, BUILT_IN_MD, NULL, NULL); + if (mips_builtin_decls[i] && d->is_pure) + DECL_PURE_P (mips_builtin_decls[i]) = 1; mips_get_builtin_decl_index[d->icode] = i; } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e5cecf4..06ca68a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,7 @@ 2019-10-28 Mihailo Stojanovic + * gcc.target/mips/mips-builtins-pure.c: New test. + * gcc.target/mips/msa-insert-split.c: New test. 2019-10-28 Andrew Burgess diff --git a/gcc/testsuite/gcc.target/mips/mips-builtins-pure.c b/gcc/testsuite/gcc.target/mips/mips-builtins-pure.c new file mode 100644 index 0000000..08e550a --- /dev/null +++ b/gcc/testsuite/gcc.target/mips/mips-builtins-pure.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-mfp64 -mhard-float -mmsa" } */ +/* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */ + +typedef double v2f64 __attribute__ ((vector_size (16))); +typedef long long v2i64 __attribute__ ((vector_size (16))); +typedef int v4i32 __attribute__ ((vector_size (16))); + +long long foo(const v2f64* a) +{ + v2f64 x; + v2i64 y; + + x = (v2f64)__builtin_msa_shf_w((v4i32)*a, 0xff); + y = __builtin_msa_fcun_d(*a, x); + + return y[0]; +} + +/* { dg-final { scan-assembler-times "ld" 1 } } */ -- 2.7.4