comparison gcc/config/mips/mips.c @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 /* Subroutines used for MIPS code generation. 1 /* Subroutines used for MIPS code generation.
2 Copyright (C) 1989-2018 Free Software Foundation, Inc. 2 Copyright (C) 1989-2020 Free Software Foundation, Inc.
3 Contributed by A. Lichnewsky, lich@inria.inria.fr. 3 Contributed by A. Lichnewsky, lich@inria.inria.fr.
4 Changes by Michael Meissner, meissner@osf.org. 4 Changes by Michael Meissner, meissner@osf.org.
5 64-bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and 5 64-bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
6 Brendan Eich, brendan@microunity.com. 6 Brendan Eich, brendan@microunity.com.
7 7
834 DEFAULT_COSTS 834 DEFAULT_COSTS
835 }, 835 },
836 { /* Loongson-2F */ 836 { /* Loongson-2F */
837 DEFAULT_COSTS 837 DEFAULT_COSTS
838 }, 838 },
839 { /* Loongson-3A */ 839 { /* Loongson gs464. */
840 DEFAULT_COSTS
841 },
842 { /* Loongson gs464e. */
843 DEFAULT_COSTS
844 },
845 { /* Loongson gs264e. */
840 DEFAULT_COSTS 846 DEFAULT_COSTS
841 }, 847 },
842 { /* M4k */ 848 { /* M4k */
843 DEFAULT_COSTS 849 DEFAULT_COSTS
844 }, 850 },
2401 into register R. If R does not get allocated a hard register, and 2407 into register R. If R does not get allocated a hard register, and
2402 R is used in an operand that allows both registers and memory 2408 R is used in an operand that allows both registers and memory
2403 references, reload will consider forcing C into memory and using 2409 references, reload will consider forcing C into memory and using
2404 one of the instruction's memory alternatives. Returning false 2410 one of the instruction's memory alternatives. Returning false
2405 here will force it to use an input reload instead. */ 2411 here will force it to use an input reload instead. */
2406 if (CONST_INT_P (x) && mips_legitimate_constant_p (mode, x)) 2412 if ((CONST_INT_P (x) || GET_CODE (x) == CONST_VECTOR)
2413 && mips_legitimate_constant_p (mode, x))
2407 return true; 2414 return true;
2408 2415
2409 split_const (x, &base, &offset); 2416 split_const (x, &base, &offset);
2410 if (mips_symbolic_constant_p (base, SYMBOL_CONTEXT_LEA, &type)) 2417 if (mips_symbolic_constant_p (base, SYMBOL_CONTEXT_LEA, &type))
2411 { 2418 {
3023 3030
3024 static void 3031 static void
3025 mips_emit_move_or_split (rtx dest, rtx src, enum mips_split_type split_type) 3032 mips_emit_move_or_split (rtx dest, rtx src, enum mips_split_type split_type)
3026 { 3033 {
3027 if (mips_split_move_p (dest, src, split_type)) 3034 if (mips_split_move_p (dest, src, split_type))
3028 mips_split_move (dest, src, split_type); 3035 mips_split_move (dest, src, split_type, NULL);
3029 else 3036 else
3030 mips_emit_move (dest, src); 3037 mips_emit_move (dest, src);
3031 } 3038 }
3032 3039
3033 /* Emit an instruction of the form (set TARGET (CODE OP0)). */ 3040 /* Emit an instruction of the form (set TARGET (CODE OP0)). */
4772 /* Otherwise split all multiword moves. */ 4779 /* Otherwise split all multiword moves. */
4773 return size > UNITS_PER_WORD; 4780 return size > UNITS_PER_WORD;
4774 } 4781 }
4775 4782
4776 /* Split a move from SRC to DEST, given that mips_split_move_p holds. 4783 /* Split a move from SRC to DEST, given that mips_split_move_p holds.
4777 SPLIT_TYPE describes the split condition. */ 4784 SPLIT_TYPE describes the split condition. INSN is the insn being
4785 split, if we know it, NULL otherwise. */
4778 4786
4779 void 4787 void
4780 mips_split_move (rtx dest, rtx src, enum mips_split_type split_type) 4788 mips_split_move (rtx dest, rtx src, enum mips_split_type split_type, rtx insn_)
4781 { 4789 {
4782 rtx low_dest; 4790 rtx low_dest;
4783 4791
4784 gcc_checking_assert (mips_split_move_p (dest, src, split_type)); 4792 gcc_checking_assert (mips_split_move_p (dest, src, split_type));
4785 if (MSA_SUPPORTED_MODE_P (GET_MODE (dest))) 4793 if (MSA_SUPPORTED_MODE_P (GET_MODE (dest)))
4833 } 4841 }
4834 else 4842 else
4835 { 4843 {
4836 mips_emit_move (low_dest, mips_subword (src, false)); 4844 mips_emit_move (low_dest, mips_subword (src, false));
4837 mips_emit_move (mips_subword (dest, true), mips_subword (src, true)); 4845 mips_emit_move (mips_subword (dest, true), mips_subword (src, true));
4846 }
4847 }
4848
4849 /* This is a hack. See if the next insn uses DEST and if so, see if we
4850 can forward SRC for DEST. This is most useful if the next insn is a
4851 simple store. */
4852 rtx_insn *insn = (rtx_insn *)insn_;
4853 struct mips_address_info addr = {};
4854 if (insn)
4855 {
4856 rtx_insn *next = next_nonnote_nondebug_insn_bb (insn);
4857 if (next)
4858 {
4859 rtx set = single_set (next);
4860 if (set && SET_SRC (set) == dest)
4861 {
4862 if (MEM_P (src))
4863 {
4864 rtx tmp = XEXP (src, 0);
4865 mips_classify_address (&addr, tmp, GET_MODE (tmp), true);
4866 if (addr.reg && !reg_overlap_mentioned_p (dest, addr.reg))
4867 validate_change (next, &SET_SRC (set), src, false);
4868 }
4869 else
4870 validate_change (next, &SET_SRC (set), src, false);
4871 }
4838 } 4872 }
4839 } 4873 }
4840 } 4874 }
4841 4875
4842 /* Return the split type for instruction INSN. */ 4876 /* Return the split type for instruction INSN. */
5062 holds. */ 5096 holds. */
5063 5097
5064 void 5098 void
5065 mips_split_move_insn (rtx dest, rtx src, rtx insn) 5099 mips_split_move_insn (rtx dest, rtx src, rtx insn)
5066 { 5100 {
5067 mips_split_move (dest, src, mips_insn_split_type (insn)); 5101 mips_split_move (dest, src, mips_insn_split_type (insn), insn);
5068 } 5102 }
5069 5103
5070 /* Return the appropriate instructions to move SRC into DEST. Assume 5104 /* Return the appropriate instructions to move SRC into DEST. Assume
5071 that SRC is operand 1 and DEST is operand 0. */ 5105 that SRC is operand 1 and DEST is operand 0. */
5072 5106
5941 } 5975 }
5942 5976
5943 /* Implement TARGET_FUNCTION_ARG. */ 5977 /* Implement TARGET_FUNCTION_ARG. */
5944 5978
5945 static rtx 5979 static rtx
5946 mips_function_arg (cumulative_args_t cum_v, machine_mode mode, 5980 mips_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
5947 const_tree type, bool named)
5948 { 5981 {
5949 CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v); 5982 CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
5950 struct mips_arg_info info; 5983 struct mips_arg_info info;
5951 5984
5952 /* We will be called with a mode of VOIDmode after the last argument 5985 /* We will be called with an end marker after the last argument
5953 has been seen. Whatever we return will be passed to the call expander. 5986 has been seen. Whatever we return will be passed to the call expander.
5954 If we need a MIPS16 fp_code, return a REG with the code stored as 5987 If we need a MIPS16 fp_code, return a REG with the code stored as
5955 the mode. */ 5988 the mode. */
5956 if (mode == VOIDmode) 5989 if (arg.end_marker_p ())
5957 { 5990 {
5958 if (TARGET_MIPS16 && cum->fp_code != 0) 5991 if (TARGET_MIPS16 && cum->fp_code != 0)
5959 return gen_rtx_REG ((machine_mode) cum->fp_code, 0); 5992 return gen_rtx_REG ((machine_mode) cum->fp_code, 0);
5960 else 5993 else
5961 return NULL; 5994 return NULL;
5962 } 5995 }
5963 5996
5964 mips_get_arg_info (&info, cum, mode, type, named); 5997 mips_get_arg_info (&info, cum, arg.mode, arg.type, arg.named);
5965 5998
5966 /* Return straight away if the whole argument is passed on the stack. */ 5999 /* Return straight away if the whole argument is passed on the stack. */
5967 if (info.reg_offset == MAX_ARGS_IN_REGISTERS) 6000 if (info.reg_offset == MAX_ARGS_IN_REGISTERS)
5968 return NULL; 6001 return NULL;
5969 6002
5970 /* The n32 and n64 ABIs say that if any 64-bit chunk of the structure 6003 /* The n32 and n64 ABIs say that if any 64-bit chunk of the structure
5971 contains a double in its entirety, then that 64-bit chunk is passed 6004 contains a double in its entirety, then that 64-bit chunk is passed
5972 in a floating-point register. */ 6005 in a floating-point register. */
5973 if (TARGET_NEWABI 6006 if (TARGET_NEWABI
5974 && TARGET_HARD_FLOAT 6007 && TARGET_HARD_FLOAT
5975 && named 6008 && arg.named
5976 && type != 0 6009 && arg.type != 0
5977 && TREE_CODE (type) == RECORD_TYPE 6010 && TREE_CODE (arg.type) == RECORD_TYPE
5978 && TYPE_SIZE_UNIT (type) 6011 && TYPE_SIZE_UNIT (arg.type)
5979 && tree_fits_uhwi_p (TYPE_SIZE_UNIT (type))) 6012 && tree_fits_uhwi_p (TYPE_SIZE_UNIT (arg.type)))
5980 { 6013 {
5981 tree field; 6014 tree field;
5982 6015
5983 /* First check to see if there is any such field. */ 6016 /* First check to see if there is any such field. */
5984 for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field)) 6017 for (field = TYPE_FIELDS (arg.type); field; field = DECL_CHAIN (field))
5985 if (TREE_CODE (field) == FIELD_DECL 6018 if (TREE_CODE (field) == FIELD_DECL
5986 && SCALAR_FLOAT_TYPE_P (TREE_TYPE (field)) 6019 && SCALAR_FLOAT_TYPE_P (TREE_TYPE (field))
5987 && TYPE_PRECISION (TREE_TYPE (field)) == BITS_PER_WORD 6020 && TYPE_PRECISION (TREE_TYPE (field)) == BITS_PER_WORD
5988 && tree_fits_shwi_p (bit_position (field)) 6021 && tree_fits_shwi_p (bit_position (field))
5989 && int_bit_position (field) % BITS_PER_WORD == 0) 6022 && int_bit_position (field) % BITS_PER_WORD == 0)
5998 HOST_WIDE_INT bitpos; 6031 HOST_WIDE_INT bitpos;
5999 rtx ret; 6032 rtx ret;
6000 6033
6001 /* assign_parms checks the mode of ENTRY_PARM, so we must 6034 /* assign_parms checks the mode of ENTRY_PARM, so we must
6002 use the actual mode here. */ 6035 use the actual mode here. */
6003 ret = gen_rtx_PARALLEL (mode, rtvec_alloc (info.reg_words)); 6036 ret = gen_rtx_PARALLEL (arg.mode, rtvec_alloc (info.reg_words));
6004 6037
6005 bitpos = 0; 6038 bitpos = 0;
6006 field = TYPE_FIELDS (type); 6039 field = TYPE_FIELDS (arg.type);
6007 for (i = 0; i < info.reg_words; i++) 6040 for (i = 0; i < info.reg_words; i++)
6008 { 6041 {
6009 rtx reg; 6042 rtx reg;
6010 6043
6011 for (; field; field = DECL_CHAIN (field)) 6044 for (; field; field = DECL_CHAIN (field))
6034 /* Handle the n32/n64 conventions for passing complex floating-point 6067 /* Handle the n32/n64 conventions for passing complex floating-point
6035 arguments in FPR pairs. The real part goes in the lower register 6068 arguments in FPR pairs. The real part goes in the lower register
6036 and the imaginary part goes in the upper register. */ 6069 and the imaginary part goes in the upper register. */
6037 if (TARGET_NEWABI 6070 if (TARGET_NEWABI
6038 && info.fpr_p 6071 && info.fpr_p
6039 && GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT) 6072 && GET_MODE_CLASS (arg.mode) == MODE_COMPLEX_FLOAT)
6040 { 6073 {
6041 rtx real, imag; 6074 rtx real, imag;
6042 machine_mode inner; 6075 machine_mode inner;
6043 unsigned int regno; 6076 unsigned int regno;
6044 6077
6045 inner = GET_MODE_INNER (mode); 6078 inner = GET_MODE_INNER (arg.mode);
6046 regno = FP_ARG_FIRST + info.reg_offset; 6079 regno = FP_ARG_FIRST + info.reg_offset;
6047 if (info.reg_words * UNITS_PER_WORD == GET_MODE_SIZE (inner)) 6080 if (info.reg_words * UNITS_PER_WORD == GET_MODE_SIZE (inner))
6048 { 6081 {
6049 /* Real part in registers, imaginary part on stack. */ 6082 /* Real part in registers, imaginary part on stack. */
6050 gcc_assert (info.stack_words == info.reg_words); 6083 gcc_assert (info.stack_words == info.reg_words);
6058 const0_rtx); 6091 const0_rtx);
6059 imag = gen_rtx_EXPR_LIST (VOIDmode, 6092 imag = gen_rtx_EXPR_LIST (VOIDmode,
6060 gen_rtx_REG (inner, 6093 gen_rtx_REG (inner,
6061 regno + info.reg_words / 2), 6094 regno + info.reg_words / 2),
6062 GEN_INT (GET_MODE_SIZE (inner))); 6095 GEN_INT (GET_MODE_SIZE (inner)));
6063 return gen_rtx_PARALLEL (mode, gen_rtvec (2, real, imag)); 6096 return gen_rtx_PARALLEL (arg.mode, gen_rtvec (2, real, imag));
6064 } 6097 }
6065 } 6098 }
6066 6099
6067 return gen_rtx_REG (mode, mips_arg_regno (&info, TARGET_HARD_FLOAT)); 6100 return gen_rtx_REG (arg.mode, mips_arg_regno (&info, TARGET_HARD_FLOAT));
6068 } 6101 }
6069 6102
6070 /* Implement TARGET_FUNCTION_ARG_ADVANCE. */ 6103 /* Implement TARGET_FUNCTION_ARG_ADVANCE. */
6071 6104
6072 static void 6105 static void
6073 mips_function_arg_advance (cumulative_args_t cum_v, machine_mode mode, 6106 mips_function_arg_advance (cumulative_args_t cum_v,
6074 const_tree type, bool named) 6107 const function_arg_info &arg)
6075 { 6108 {
6076 CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v); 6109 CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
6077 struct mips_arg_info info; 6110 struct mips_arg_info info;
6078 6111
6079 mips_get_arg_info (&info, cum, mode, type, named); 6112 mips_get_arg_info (&info, cum, arg.mode, arg.type, arg.named);
6080 6113
6081 if (!info.fpr_p) 6114 if (!info.fpr_p)
6082 cum->gp_reg_found = true; 6115 cum->gp_reg_found = true;
6083 6116
6084 /* See the comment above the CUMULATIVE_ARGS structure in mips.h for 6117 /* See the comment above the CUMULATIVE_ARGS structure in mips.h for
6085 an explanation of what this code does. It assumes that we're using 6118 an explanation of what this code does. It assumes that we're using
6086 either the o32 or the o64 ABI, both of which pass at most 2 arguments 6119 either the o32 or the o64 ABI, both of which pass at most 2 arguments
6087 in FPRs. */ 6120 in FPRs. */
6088 if (cum->arg_number < 2 && info.fpr_p) 6121 if (cum->arg_number < 2 && info.fpr_p)
6089 cum->fp_code += (mode == SFmode ? 1 : 2) << (cum->arg_number * 2); 6122 cum->fp_code += (arg.mode == SFmode ? 1 : 2) << (cum->arg_number * 2);
6090 6123
6091 /* Advance the register count. This has the effect of setting 6124 /* Advance the register count. This has the effect of setting
6092 num_gprs to MAX_ARGS_IN_REGISTERS if a doubleword-aligned 6125 num_gprs to MAX_ARGS_IN_REGISTERS if a doubleword-aligned
6093 argument required us to skip the final GPR and pass the whole 6126 argument required us to skip the final GPR and pass the whole
6094 argument on the stack. */ 6127 argument on the stack. */
6105 } 6138 }
6106 6139
6107 /* Implement TARGET_ARG_PARTIAL_BYTES. */ 6140 /* Implement TARGET_ARG_PARTIAL_BYTES. */
6108 6141
6109 static int 6142 static int
6110 mips_arg_partial_bytes (cumulative_args_t cum, 6143 mips_arg_partial_bytes (cumulative_args_t cum, const function_arg_info &arg)
6111 machine_mode mode, tree type, bool named)
6112 { 6144 {
6113 struct mips_arg_info info; 6145 struct mips_arg_info info;
6114 6146
6115 mips_get_arg_info (&info, get_cumulative_args (cum), mode, type, named); 6147 mips_get_arg_info (&info, get_cumulative_args (cum),
6148 arg.mode, arg.type, arg.named);
6116 return info.stack_words > 0 ? info.reg_words * UNITS_PER_WORD : 0; 6149 return info.stack_words > 0 ? info.reg_words * UNITS_PER_WORD : 0;
6117 } 6150 }
6118 6151
6119 /* Implement TARGET_FUNCTION_ARG_BOUNDARY. Every parameter gets at 6152 /* Implement TARGET_FUNCTION_ARG_BOUNDARY. Every parameter gets at
6120 least PARM_BOUNDARY bits of alignment, but will be given anything up 6153 least PARM_BOUNDARY bits of alignment, but will be given anything up
6200 } 6233 }
6201 6234
6202 /* Return nonzero when an argument must be passed by reference. */ 6235 /* Return nonzero when an argument must be passed by reference. */
6203 6236
6204 static bool 6237 static bool
6205 mips_pass_by_reference (cumulative_args_t cum ATTRIBUTE_UNUSED, 6238 mips_pass_by_reference (cumulative_args_t, const function_arg_info &arg)
6206 machine_mode mode, const_tree type,
6207 bool named ATTRIBUTE_UNUSED)
6208 { 6239 {
6209 if (mips_abi == ABI_EABI) 6240 if (mips_abi == ABI_EABI)
6210 { 6241 {
6211 int size; 6242 int size;
6212 6243
6213 /* ??? How should SCmode be handled? */ 6244 /* ??? How should SCmode be handled? */
6214 if (mode == DImode || mode == DFmode 6245 if (arg.mode == DImode || arg.mode == DFmode
6215 || mode == DQmode || mode == UDQmode 6246 || arg.mode == DQmode || arg.mode == UDQmode
6216 || mode == DAmode || mode == UDAmode) 6247 || arg.mode == DAmode || arg.mode == UDAmode)
6217 return 0; 6248 return 0;
6218 6249
6219 size = type ? int_size_in_bytes (type) : GET_MODE_SIZE (mode); 6250 size = arg.type_size_in_bytes ();
6220 return size == -1 || size > UNITS_PER_WORD; 6251 return size == -1 || size > UNITS_PER_WORD;
6221 } 6252 }
6222 else 6253 else
6223 { 6254 {
6224 /* If we have a variable-sized parameter, we have no choice. */ 6255 /* If we have a variable-sized parameter, we have no choice. */
6225 return targetm.calls.must_pass_in_stack (mode, type); 6256 return targetm.calls.must_pass_in_stack (arg);
6226 } 6257 }
6227 } 6258 }
6228 6259
6229 /* Implement TARGET_CALLEE_COPIES. */ 6260 /* Implement TARGET_CALLEE_COPIES. */
6230 6261
6231 static bool 6262 static bool
6232 mips_callee_copies (cumulative_args_t cum ATTRIBUTE_UNUSED, 6263 mips_callee_copies (cumulative_args_t, const function_arg_info &arg)
6233 machine_mode mode ATTRIBUTE_UNUSED, 6264 {
6234 const_tree type ATTRIBUTE_UNUSED, bool named) 6265 return mips_abi == ABI_EABI && arg.named;
6235 {
6236 return mips_abi == ABI_EABI && named;
6237 } 6266 }
6238 6267
6239 /* See whether VALTYPE is a record whose fields should be returned in 6268 /* See whether VALTYPE is a record whose fields should be returned in
6240 floating-point registers. If so, return the number of fields and 6269 floating-point registers. If so, return the number of fields and
6241 list them in FIELDS (which should have two elements). Return 0 6270 list them in FIELDS (which should have two elements). Return 0
6511 } 6540 }
6512 6541
6513 /* Implement TARGET_SETUP_INCOMING_VARARGS. */ 6542 /* Implement TARGET_SETUP_INCOMING_VARARGS. */
6514 6543
6515 static void 6544 static void
6516 mips_setup_incoming_varargs (cumulative_args_t cum, machine_mode mode, 6545 mips_setup_incoming_varargs (cumulative_args_t cum,
6517 tree type, int *pretend_size ATTRIBUTE_UNUSED, 6546 const function_arg_info &arg,
6518 int no_rtl) 6547 int *pretend_size ATTRIBUTE_UNUSED, int no_rtl)
6519 { 6548 {
6520 CUMULATIVE_ARGS local_cum; 6549 CUMULATIVE_ARGS local_cum;
6521 int gp_saved, fp_saved; 6550 int gp_saved, fp_saved;
6522 6551
6523 /* The caller has advanced CUM up to, but not beyond, the last named 6552 /* The caller has advanced CUM up to, but not beyond, the last named
6524 argument. Advance a local copy of CUM past the last "real" named 6553 argument. Advance a local copy of CUM past the last "real" named
6525 argument, to find out how many registers are left over. */ 6554 argument, to find out how many registers are left over. */
6526 local_cum = *get_cumulative_args (cum); 6555 local_cum = *get_cumulative_args (cum);
6527 mips_function_arg_advance (pack_cumulative_args (&local_cum), mode, type, 6556 mips_function_arg_advance (pack_cumulative_args (&local_cum), arg);
6528 true);
6529 6557
6530 /* Found out how many registers we need to save. */ 6558 /* Found out how many registers we need to save. */
6531 gp_saved = MAX_ARGS_IN_REGISTERS - local_cum.num_gprs; 6559 gp_saved = MAX_ARGS_IN_REGISTERS - local_cum.num_gprs;
6532 fp_saved = (EABI_FLOAT_VARARGS_P 6560 fp_saved = (EABI_FLOAT_VARARGS_P
6533 ? MAX_ARGS_IN_REGISTERS - local_cum.num_fprs 6561 ? MAX_ARGS_IN_REGISTERS - local_cum.num_fprs
6745 { 6773 {
6746 tree addr, t, type_size, rounded_size, valist_tmp; 6774 tree addr, t, type_size, rounded_size, valist_tmp;
6747 unsigned HOST_WIDE_INT align, boundary; 6775 unsigned HOST_WIDE_INT align, boundary;
6748 bool indirect; 6776 bool indirect;
6749 6777
6750 indirect = pass_by_reference (NULL, TYPE_MODE (type), type, false); 6778 indirect = pass_va_arg_by_reference (type);
6751 if (indirect) 6779 if (indirect)
6752 type = build_pointer_type (type); 6780 type = build_pointer_type (type);
6753 6781
6754 align = PARM_BOUNDARY / BITS_PER_UNIT; 6782 align = PARM_BOUNDARY / BITS_PER_UNIT;
6755 boundary = targetm.calls.function_arg_boundary (TYPE_MODE (type), type); 6783 boundary = targetm.calls.function_arg_boundary (TYPE_MODE (type), type);
6832 gimple_seq *post_p) 6860 gimple_seq *post_p)
6833 { 6861 {
6834 tree addr; 6862 tree addr;
6835 bool indirect_p; 6863 bool indirect_p;
6836 6864
6837 indirect_p = pass_by_reference (NULL, TYPE_MODE (type), type, 0); 6865 indirect_p = pass_va_arg_by_reference (type);
6838 if (indirect_p) 6866 if (indirect_p)
6839 type = build_pointer_type (type); 6867 type = build_pointer_type (type);
6840 6868
6841 if (!EABI_FLOAT_VARARGS_P) 6869 if (!EABI_FLOAT_VARARGS_P)
6842 addr = mips_std_gimplify_va_arg_expr (valist, type, pre_p, post_p); 6870 addr = mips_std_gimplify_va_arg_expr (valist, type, pre_p, post_p);
7273 if (mode == SFmode) 7301 if (mode == SFmode)
7274 mips_output_32bit_xfer (direction, gparg, fparg); 7302 mips_output_32bit_xfer (direction, gparg, fparg);
7275 else 7303 else
7276 mips_output_64bit_xfer (direction, gparg, fparg); 7304 mips_output_64bit_xfer (direction, gparg, fparg);
7277 7305
7278 mips_function_arg_advance (pack_cumulative_args (&cum), mode, NULL, true); 7306 function_arg_info arg (mode, /*named=*/true);
7307 mips_function_arg_advance (pack_cumulative_args (&cum), arg);
7279 } 7308 }
7280 } 7309 }
7281 7310
7282 /* Write a MIPS16 stub for the current function. This stub is used 7311 /* Write a MIPS16 stub for the current function. This stub is used
7283 for functions which take arguments in the floating-point registers. 7312 for functions which take arguments in the floating-point registers.
7903 enum by_pieces_operation op, 7932 enum by_pieces_operation op,
7904 bool speed_p) 7933 bool speed_p)
7905 { 7934 {
7906 if (op == STORE_BY_PIECES) 7935 if (op == STORE_BY_PIECES)
7907 return mips_store_by_pieces_p (size, align); 7936 return mips_store_by_pieces_p (size, align);
7908 if (op == MOVE_BY_PIECES && HAVE_movmemsi) 7937 if (op == MOVE_BY_PIECES && HAVE_cpymemsi)
7909 { 7938 {
7910 /* movmemsi is meant to generate code that is at least as good as 7939 /* cpymemsi is meant to generate code that is at least as good as
7911 move_by_pieces. However, movmemsi effectively uses a by-pieces 7940 move_by_pieces. However, cpymemsi effectively uses a by-pieces
7912 implementation both for moves smaller than a word and for 7941 implementation both for moves smaller than a word and for
7913 word-aligned moves of no more than MIPS_MAX_MOVE_BYTES_STRAIGHT 7942 word-aligned moves of no more than MIPS_MAX_MOVE_BYTES_STRAIGHT
7914 bytes. We should allow the tree-level optimisers to do such 7943 bytes. We should allow the tree-level optimisers to do such
7915 moves by pieces, as it often exposes other optimization 7944 moves by pieces, as it often exposes other optimization
7916 opportunities. We might as well continue to use movmemsi at 7945 opportunities. We might as well continue to use cpymemsi at
7917 the rtl level though, as it produces better code when 7946 the rtl level though, as it produces better code when
7918 scheduling is disabled (such as at -O). */ 7947 scheduling is disabled (such as at -O). */
7919 if (currently_expanding_to_rtl) 7948 if (currently_expanding_to_rtl)
7920 return false; 7949 return false;
7921 if (align < BITS_PER_WORD) 7950 if (align < BITS_PER_WORD)
8056 if (offset < length) 8085 if (offset < length)
8057 { 8086 {
8058 src = adjust_address (src, BLKmode, offset); 8087 src = adjust_address (src, BLKmode, offset);
8059 dest = adjust_address (dest, BLKmode, offset); 8088 dest = adjust_address (dest, BLKmode, offset);
8060 move_by_pieces (dest, src, length - offset, 8089 move_by_pieces (dest, src, length - offset,
8061 MIN (MEM_ALIGN (src), MEM_ALIGN (dest)), 0); 8090 MIN (MEM_ALIGN (src), MEM_ALIGN (dest)), RETURN_BEGIN);
8062 } 8091 }
8063 } 8092 }
8064 8093
8065 /* Helper function for doing a loop-based block operation on memory 8094 /* Helper function for doing a loop-based block operation on memory
8066 reference MEM. Each iteration of the loop will operate on LENGTH 8095 reference MEM. Each iteration of the loop will operate on LENGTH
8130 else 8159 else
8131 /* Temporary fix for PR79150. */ 8160 /* Temporary fix for PR79150. */
8132 emit_insn (gen_nop ()); 8161 emit_insn (gen_nop ());
8133 } 8162 }
8134 8163
8135 /* Expand a movmemsi instruction, which copies LENGTH bytes from 8164 /* Expand a cpymemsi instruction, which copies LENGTH bytes from
8136 memory reference SRC to memory reference DEST. */ 8165 memory reference SRC to memory reference DEST. */
8137 8166
8138 bool 8167 bool
8139 mips_expand_block_move (rtx dest, rtx src, rtx length) 8168 mips_expand_block_move (rtx dest, rtx src, rtx length)
8140 { 8169 {
9553 static machine_mode 9582 static machine_mode
9554 mips_dwarf_frame_reg_mode (int regno) 9583 mips_dwarf_frame_reg_mode (int regno)
9555 { 9584 {
9556 machine_mode mode = default_dwarf_frame_reg_mode (regno); 9585 machine_mode mode = default_dwarf_frame_reg_mode (regno);
9557 9586
9558 if (FP_REG_P (regno) && mips_abi == ABI_32 && TARGET_FLOAT64) 9587 if (FP_REG_P (regno) && mips_abi == ABI_32 && !TARGET_FLOAT32)
9559 mode = SImode; 9588 mode = SImode;
9560 9589
9561 return mode; 9590 return mode;
9562 } 9591 }
9563 9592
9744 void 9773 void
9745 mips_declare_object_name (FILE *stream, const char *name, 9774 mips_declare_object_name (FILE *stream, const char *name,
9746 tree decl ATTRIBUTE_UNUSED) 9775 tree decl ATTRIBUTE_UNUSED)
9747 { 9776 {
9748 #ifdef ASM_OUTPUT_TYPE_DIRECTIVE 9777 #ifdef ASM_OUTPUT_TYPE_DIRECTIVE
9749 ASM_OUTPUT_TYPE_DIRECTIVE (stream, name, "object"); 9778 #ifdef USE_GNU_UNIQUE_OBJECT
9779 /* As in elfos.h. */
9780 if (USE_GNU_UNIQUE_OBJECT && DECL_ONE_ONLY (decl)
9781 && (!DECL_ARTIFICIAL (decl) || !TREE_READONLY (decl)))
9782 ASM_OUTPUT_TYPE_DIRECTIVE (stream, name, "gnu_unique_object");
9783 else
9784 #endif
9785 ASM_OUTPUT_TYPE_DIRECTIVE (stream, name, "object");
9750 #endif 9786 #endif
9751 9787
9752 size_directive_output = 0; 9788 size_directive_output = 0;
9753 if (!flag_inhibit_size_directive && DECL_SIZE (decl)) 9789 if (!flag_inhibit_size_directive && DECL_SIZE (decl))
9754 { 9790 {
10606 /* If the global pointer is call-saved, try to use a call-clobbered 10642 /* If the global pointer is call-saved, try to use a call-clobbered
10607 alternative. */ 10643 alternative. */
10608 if (TARGET_CALL_SAVED_GP && crtl->is_leaf) 10644 if (TARGET_CALL_SAVED_GP && crtl->is_leaf)
10609 for (regno = GP_REG_FIRST; regno <= GP_REG_LAST; regno++) 10645 for (regno = GP_REG_FIRST; regno <= GP_REG_LAST; regno++)
10610 if (!df_regs_ever_live_p (regno) 10646 if (!df_regs_ever_live_p (regno)
10611 && call_really_used_regs[regno] 10647 && call_used_regs[regno]
10612 && !fixed_regs[regno] 10648 && !fixed_regs[regno]
10613 && regno != PIC_FUNCTION_ADDR_REGNUM) 10649 && regno != PIC_FUNCTION_ADDR_REGNUM)
10614 return regno; 10650 return regno;
10615 10651
10616 return GLOBAL_POINTER_REGNUM; 10652 return GLOBAL_POINTER_REGNUM;
10759 if (regno == STACK_POINTER_REGNUM) 10795 if (regno == STACK_POINTER_REGNUM)
10760 return false; 10796 return false;
10761 10797
10762 /* Otherwise, return true for registers that aren't ordinarily 10798 /* Otherwise, return true for registers that aren't ordinarily
10763 call-clobbered. */ 10799 call-clobbered. */
10764 return call_really_used_regs[regno]; 10800 return call_used_regs[regno];
10765 } 10801 }
10766 10802
10767 return false; 10803 return false;
10768 } 10804 }
10769 10805
10782 if (cfun->machine->interrupt_handler_p 10818 if (cfun->machine->interrupt_handler_p
10783 && mips_interrupt_extra_call_saved_reg_p (regno)) 10819 && mips_interrupt_extra_call_saved_reg_p (regno))
10784 return true; 10820 return true;
10785 10821
10786 /* call_insns preserve $28 unless they explicitly say otherwise, 10822 /* call_insns preserve $28 unless they explicitly say otherwise,
10787 so call_really_used_regs[] treats $28 as call-saved. However, 10823 so call_used_regs[] treats $28 as call-saved. However,
10788 we want the ABI property rather than the default call_insn 10824 we want the ABI property rather than the default call_insn
10789 property here. */ 10825 property here. */
10790 return (regno == GLOBAL_POINTER_REGNUM 10826 return (regno == GLOBAL_POINTER_REGNUM
10791 ? TARGET_CALL_SAVED_GP 10827 ? TARGET_CALL_SAVED_GP
10792 : !call_really_used_regs[regno]); 10828 : !call_used_regs[regno]);
10793 } 10829 }
10794 10830
10795 /* Return true if the function body might clobber register REGNO. 10831 /* Return true if the function body might clobber register REGNO.
10796 We know that REGNO is call-saved. */ 10832 We know that REGNO is call-saved. */
10797 10833
11943 11979
11944 static void 11980 static void
11945 mips_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size) 11981 mips_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size)
11946 { 11982 {
11947 if (TARGET_MIPS16) 11983 if (TARGET_MIPS16)
11948 sorry ("-fstack-check=specific not implemented for MIPS16"); 11984 sorry ("%<-fstack-check=specific%> not implemented for MIPS16");
11949 11985
11950 /* See if we have a constant small number of probes to generate. If so, 11986 /* See if we have a constant small number of probes to generate. If so,
11951 that's the easy case. */ 11987 that's the easy case. */
11952 if (first + size <= 32768) 11988 if (first + size <= 32768)
11953 { 11989 {
12795 CCFmode because CCFmode double-precision compares will write a 12831 CCFmode because CCFmode double-precision compares will write a
12796 64-bit value to a register. */ 12832 64-bit value to a register. */
12797 if (mode == CCFmode) 12833 if (mode == CCFmode)
12798 return !(TARGET_FLOATXX && (regno & 1) != 0); 12834 return !(TARGET_FLOATXX && (regno & 1) != 0);
12799 12835
12800 /* Allow 64-bit vector modes for Loongson-2E/2F. */ 12836 /* Allow 64-bit vector modes for Loongson MultiMedia extensions
12801 if (TARGET_LOONGSON_VECTORS 12837 Instructions (MMI). */
12838 if (TARGET_LOONGSON_MMI
12802 && (mode == V2SImode 12839 && (mode == V2SImode
12803 || mode == V4HImode 12840 || mode == V4HImode
12804 || mode == V8QImode 12841 || mode == V8QImode
12805 || mode == DImode)) 12842 || mode == DImode))
12806 return true; 12843 return true;
12897 single-precision registers are not considered callee-saved for o32 12934 single-precision registers are not considered callee-saved for o32
12898 FPXX as they will be clobbered when run on an FR=1 FPU. MSA vector 12935 FPXX as they will be clobbered when run on an FR=1 FPU. MSA vector
12899 registers with MODE > 64 bits are part clobbered too. */ 12936 registers with MODE > 64 bits are part clobbered too. */
12900 12937
12901 static bool 12938 static bool
12902 mips_hard_regno_call_part_clobbered (unsigned int regno, machine_mode mode) 12939 mips_hard_regno_call_part_clobbered (unsigned int, unsigned int regno,
12940 machine_mode mode)
12903 { 12941 {
12904 if (TARGET_FLOATXX 12942 if (TARGET_FLOATXX
12905 && hard_regno_nregs (regno, mode) == 1 12943 && hard_regno_nregs (regno, mode) == 1
12906 && FP_REG_P (regno) 12944 && FP_REG_P (regno)
12907 && (regno & 1) != 0) 12945 && (regno & 1) != 0)
12943 { 12981 {
12944 int size; 12982 int size;
12945 HARD_REG_SET left; 12983 HARD_REG_SET left;
12946 12984
12947 size = 0x8000; 12985 size = 0x8000;
12948 COPY_HARD_REG_SET (left, reg_class_contents[(int) rclass]); 12986 left = reg_class_contents[rclass];
12949 if (hard_reg_set_intersect_p (left, reg_class_contents[(int) ST_REGS])) 12987 if (hard_reg_set_intersect_p (left, reg_class_contents[(int) ST_REGS]))
12950 { 12988 {
12951 if (mips_hard_regno_mode_ok (ST_REG_FIRST, mode)) 12989 if (mips_hard_regno_mode_ok (ST_REG_FIRST, mode))
12952 size = MIN (size, 4); 12990 size = MIN (size, 4);
12953 12991
12954 AND_COMPL_HARD_REG_SET (left, reg_class_contents[(int) ST_REGS]); 12992 left &= ~reg_class_contents[ST_REGS];
12955 } 12993 }
12956 if (hard_reg_set_intersect_p (left, reg_class_contents[(int) FP_REGS])) 12994 if (hard_reg_set_intersect_p (left, reg_class_contents[(int) FP_REGS]))
12957 { 12995 {
12958 if (mips_hard_regno_mode_ok (FP_REG_FIRST, mode)) 12996 if (mips_hard_regno_mode_ok (FP_REG_FIRST, mode))
12959 { 12997 {
12961 size = MIN (size, UNITS_PER_MSA_REG); 12999 size = MIN (size, UNITS_PER_MSA_REG);
12962 else 13000 else
12963 size = MIN (size, UNITS_PER_FPREG); 13001 size = MIN (size, UNITS_PER_FPREG);
12964 } 13002 }
12965 13003
12966 AND_COMPL_HARD_REG_SET (left, reg_class_contents[(int) FP_REGS]); 13004 left &= ~reg_class_contents[FP_REGS];
12967 } 13005 }
12968 if (!hard_reg_set_empty_p (left)) 13006 if (!hard_reg_set_empty_p (left))
12969 size = MIN (size, UNITS_PER_WORD); 13007 size = MIN (size, UNITS_PER_WORD);
12970 return (GET_MODE_SIZE (mode) + size - 1) / size; 13008 return (GET_MODE_SIZE (mode) + size - 1) / size;
12971 } 13009 }
13366 return TARGET_DSP; 13404 return TARGET_DSP;
13367 13405
13368 case E_V2SImode: 13406 case E_V2SImode:
13369 case E_V4HImode: 13407 case E_V4HImode:
13370 case E_V8QImode: 13408 case E_V8QImode:
13371 return TARGET_LOONGSON_VECTORS; 13409 return TARGET_LOONGSON_MMI;
13372 13410
13373 default: 13411 default:
13374 return MSA_SUPPORTED_MODE_P (mode); 13412 return MSA_SUPPORTED_MODE_P (mode);
13375 } 13413 }
13376 } 13414 }
13420 break; 13458 break;
13421 } 13459 }
13422 return word_mode; 13460 return word_mode;
13423 } 13461 }
13424 13462
13425 /* Implement TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES. */ 13463 /* Implement TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES. */
13426 13464
13427 static void 13465 static unsigned int
13428 mips_autovectorize_vector_sizes (vector_sizes *sizes) 13466 mips_autovectorize_vector_modes (vector_modes *modes, bool)
13429 { 13467 {
13430 if (ISA_HAS_MSA) 13468 if (ISA_HAS_MSA)
13431 sizes->safe_push (16); 13469 modes->safe_push (V16QImode);
13470 return 0;
13432 } 13471 }
13433 13472
13434 /* Implement TARGET_INIT_LIBFUNCS. */ 13473 /* Implement TARGET_INIT_LIBFUNCS. */
13435 13474
13436 static void 13475 static void
14599 case PROCESSOR_R9000: 14638 case PROCESSOR_R9000:
14600 case PROCESSOR_OCTEON: 14639 case PROCESSOR_OCTEON:
14601 case PROCESSOR_OCTEON2: 14640 case PROCESSOR_OCTEON2:
14602 case PROCESSOR_OCTEON3: 14641 case PROCESSOR_OCTEON3:
14603 case PROCESSOR_I6400: 14642 case PROCESSOR_I6400:
14643 case PROCESSOR_GS264E:
14604 return 2; 14644 return 2;
14605 14645
14606 case PROCESSOR_SB1: 14646 case PROCESSOR_SB1:
14607 case PROCESSOR_SB1A: 14647 case PROCESSOR_SB1A:
14608 /* This is actually 4, but we get better performance if we claim 3. 14648 /* This is actually 4, but we get better performance if we claim 3.
14611 reach the theoretical max of 4. */ 14651 reach the theoretical max of 4. */
14612 return 3; 14652 return 3;
14613 14653
14614 case PROCESSOR_LOONGSON_2E: 14654 case PROCESSOR_LOONGSON_2E:
14615 case PROCESSOR_LOONGSON_2F: 14655 case PROCESSOR_LOONGSON_2F:
14616 case PROCESSOR_LOONGSON_3A: 14656 case PROCESSOR_GS464:
14657 case PROCESSOR_GS464E:
14617 case PROCESSOR_P5600: 14658 case PROCESSOR_P5600:
14618 case PROCESSOR_P6600: 14659 case PROCESSOR_P6600:
14619 return 4; 14660 return 4;
14620 14661
14621 case PROCESSOR_XLP: 14662 case PROCESSOR_XLP:
14743 { 14784 {
14744 /* Can schedule up to 4 of the 6 function units in any one cycle. */ 14785 /* Can schedule up to 4 of the 6 function units in any one cycle. */
14745 if (TUNE_SB1) 14786 if (TUNE_SB1)
14746 return 4; 14787 return 4;
14747 14788
14748 if (TUNE_LOONGSON_2EF || TUNE_LOONGSON_3A) 14789 if (TUNE_LOONGSON_2EF || TUNE_GS464 || TUNE_GS464E)
14749 return 4; 14790 return 4;
14750 14791
14751 if (TUNE_OCTEON) 14792 if (TUNE_OCTEON || TUNE_GS264E)
14752 return 2; 14793 return 2;
14753 14794
14754 if (TUNE_P5600 || TUNE_P6600 || TUNE_I6400) 14795 if (TUNE_P5600 || TUNE_P6600 || TUNE_I6400)
14755 return 4; 14796 return 4;
14756 14797
14855 and INSN. */ 14896 and INSN. */
14856 14897
14857 static bool 14898 static bool
14858 vr4130_true_reg_dependence_p (rtx insn) 14899 vr4130_true_reg_dependence_p (rtx insn)
14859 { 14900 {
14860 note_stores (PATTERN (vr4130_last_insn), 14901 note_stores (vr4130_last_insn, vr4130_true_reg_dependence_p_1, &insn);
14861 vr4130_true_reg_dependence_p_1, &insn);
14862 return insn == 0; 14902 return insn == 0;
14863 } 14903 }
14864 14904
14865 /* A TUNE_MIPS4130 helper function. Given that INSN1 is at the head of 14905 /* A TUNE_MIPS4130 helper function. Given that INSN1 is at the head of
14866 the ready queue and that INSN2 is the instruction after it, return 14906 the ready queue and that INSN2 is the instruction after it, return
15139 return write; 15179 return write;
15140 15180
15141 /* store_retained / load_retained. */ 15181 /* store_retained / load_retained. */
15142 return GEN_INT (INTVAL (write) + 6); 15182 return GEN_INT (INTVAL (write) + 6);
15143 } 15183 }
15184
15185 /* Loongson EXT2 only implements pref hint=0 (prefetch for load) and hint=1
15186 (prefetch for store), other hint just scale to hint = 0 and hint = 1. */
15187
15188 rtx
15189 mips_loongson_ext2_prefetch_cookie (rtx write, rtx)
15190 {
15191 /* store. */
15192 if (INTVAL (write) == 1)
15193 return GEN_INT (INTVAL (write));
15194
15195 /* load. */
15196 if (INTVAL (write) == 0)
15197 return GEN_INT (INTVAL (write));
15198
15199 gcc_unreachable ();
15200 }
15201
15144 15202
15145 /* Flags that indicate when a built-in function is available. 15203 /* Flags that indicate when a built-in function is available.
15146 15204
15147 BUILTIN_AVAIL_NON_MIPS16 15205 BUILTIN_AVAIL_NON_MIPS16
15148 The function is available on the current target if !TARGET_MIPS16. 15206 The function is available on the current target if !TARGET_MIPS16.
15190 /* The function's prototype. */ 15248 /* The function's prototype. */
15191 enum mips_function_type function_type; 15249 enum mips_function_type function_type;
15192 15250
15193 /* Whether the function is available. */ 15251 /* Whether the function is available. */
15194 unsigned int (*avail) (void); 15252 unsigned int (*avail) (void);
15253
15254 /* Whether the function is pure. */
15255 bool is_pure;
15195 }; 15256 };
15196 15257
15197 AVAIL_ALL (hard_float, TARGET_HARD_FLOAT_ABI) 15258 AVAIL_ALL (hard_float, TARGET_HARD_FLOAT_ABI)
15198 AVAIL_NON_MIPS16 (paired_single, TARGET_PAIRED_SINGLE_FLOAT) 15259 AVAIL_NON_MIPS16 (paired_single, TARGET_PAIRED_SINGLE_FLOAT)
15199 AVAIL_NON_MIPS16 (sb1_paired_single, TARGET_SB1 && TARGET_PAIRED_SINGLE_FLOAT) 15260 AVAIL_NON_MIPS16 (sb1_paired_single, TARGET_SB1 && TARGET_PAIRED_SINGLE_FLOAT)
15201 AVAIL_NON_MIPS16 (dsp, TARGET_DSP) 15262 AVAIL_NON_MIPS16 (dsp, TARGET_DSP)
15202 AVAIL_NON_MIPS16 (dspr2, TARGET_DSPR2) 15263 AVAIL_NON_MIPS16 (dspr2, TARGET_DSPR2)
15203 AVAIL_NON_MIPS16 (dsp_32, !TARGET_64BIT && TARGET_DSP) 15264 AVAIL_NON_MIPS16 (dsp_32, !TARGET_64BIT && TARGET_DSP)
15204 AVAIL_NON_MIPS16 (dsp_64, TARGET_64BIT && TARGET_DSP) 15265 AVAIL_NON_MIPS16 (dsp_64, TARGET_64BIT && TARGET_DSP)
15205 AVAIL_NON_MIPS16 (dspr2_32, !TARGET_64BIT && TARGET_DSPR2) 15266 AVAIL_NON_MIPS16 (dspr2_32, !TARGET_64BIT && TARGET_DSPR2)
15206 AVAIL_NON_MIPS16 (loongson, TARGET_LOONGSON_VECTORS) 15267 AVAIL_NON_MIPS16 (loongson, TARGET_LOONGSON_MMI)
15207 AVAIL_NON_MIPS16 (cache, TARGET_CACHE_BUILTIN) 15268 AVAIL_NON_MIPS16 (cache, TARGET_CACHE_BUILTIN)
15208 AVAIL_NON_MIPS16 (msa, TARGET_MSA) 15269 AVAIL_NON_MIPS16 (msa, TARGET_MSA)
15209 15270
15210 /* Construct a mips_builtin_description from the given arguments. 15271 /* Construct a mips_builtin_description from the given arguments.
15211 15272
15221 BUILTIN_TYPE and FUNCTION_TYPE are mips_builtin_description fields. 15282 BUILTIN_TYPE and FUNCTION_TYPE are mips_builtin_description fields.
15222 15283
15223 AVAIL is the name of the availability predicate, without the leading 15284 AVAIL is the name of the availability predicate, without the leading
15224 mips_builtin_avail_. */ 15285 mips_builtin_avail_. */
15225 #define MIPS_BUILTIN(INSN, COND, NAME, BUILTIN_TYPE, \ 15286 #define MIPS_BUILTIN(INSN, COND, NAME, BUILTIN_TYPE, \
15226 FUNCTION_TYPE, AVAIL) \ 15287 FUNCTION_TYPE, AVAIL, PURE) \
15227 { CODE_FOR_mips_ ## INSN, MIPS_FP_COND_ ## COND, \ 15288 { CODE_FOR_mips_ ## INSN, MIPS_FP_COND_ ## COND, \
15228 "__builtin_mips_" NAME, BUILTIN_TYPE, FUNCTION_TYPE, \ 15289 "__builtin_mips_" NAME, BUILTIN_TYPE, FUNCTION_TYPE, \
15229 mips_builtin_avail_ ## AVAIL } 15290 mips_builtin_avail_ ## AVAIL, PURE }
15230 15291
15231 /* Define __builtin_mips_<INSN>, which is a MIPS_BUILTIN_DIRECT function 15292 /* Define __builtin_mips_<INSN>, which is a MIPS_BUILTIN_DIRECT function
15232 mapped to instruction CODE_FOR_mips_<INSN>, FUNCTION_TYPE and AVAIL 15293 mapped to instruction CODE_FOR_mips_<INSN>, FUNCTION_TYPE and AVAIL
15233 are as for MIPS_BUILTIN. */ 15294 are as for MIPS_BUILTIN. */
15234 #define DIRECT_BUILTIN(INSN, FUNCTION_TYPE, AVAIL) \ 15295 #define DIRECT_BUILTIN(INSN, FUNCTION_TYPE, AVAIL) \
15235 MIPS_BUILTIN (INSN, f, #INSN, MIPS_BUILTIN_DIRECT, FUNCTION_TYPE, AVAIL) 15296 MIPS_BUILTIN (INSN, f, #INSN, MIPS_BUILTIN_DIRECT, FUNCTION_TYPE, \
15297 AVAIL, false)
15298
15299 /* Define __builtin_mips_<INSN>, which is a MIPS_BUILTIN_DIRECT pure function
15300 mapped to instruction CODE_FOR_mips_<INSN>, FUNCTION_TYPE and AVAIL
15301 are as for MIPS_BUILTIN. */
15302 #define DIRECT_BUILTIN_PURE(INSN, FUNCTION_TYPE, AVAIL) \
15303 MIPS_BUILTIN (INSN, f, #INSN, MIPS_BUILTIN_DIRECT, FUNCTION_TYPE, \
15304 AVAIL, true)
15236 15305
15237 /* Define __builtin_mips_<INSN>_<COND>_{s,d} functions, both of which 15306 /* Define __builtin_mips_<INSN>_<COND>_{s,d} functions, both of which
15238 are subject to mips_builtin_avail_<AVAIL>. */ 15307 are subject to mips_builtin_avail_<AVAIL>. */
15239 #define CMP_SCALAR_BUILTINS(INSN, COND, AVAIL) \ 15308 #define CMP_SCALAR_BUILTINS(INSN, COND, AVAIL) \
15240 MIPS_BUILTIN (INSN ## _cond_s, COND, #INSN "_" #COND "_s", \ 15309 MIPS_BUILTIN (INSN ## _cond_s, COND, #INSN "_" #COND "_s", \
15241 MIPS_BUILTIN_CMP_SINGLE, MIPS_INT_FTYPE_SF_SF, AVAIL), \ 15310 MIPS_BUILTIN_CMP_SINGLE, MIPS_INT_FTYPE_SF_SF, AVAIL, \
15311 false), \
15242 MIPS_BUILTIN (INSN ## _cond_d, COND, #INSN "_" #COND "_d", \ 15312 MIPS_BUILTIN (INSN ## _cond_d, COND, #INSN "_" #COND "_d", \
15243 MIPS_BUILTIN_CMP_SINGLE, MIPS_INT_FTYPE_DF_DF, AVAIL) 15313 MIPS_BUILTIN_CMP_SINGLE, MIPS_INT_FTYPE_DF_DF, AVAIL, false)
15244 15314
15245 /* Define __builtin_mips_{any,all,upper,lower}_<INSN>_<COND>_ps. 15315 /* Define __builtin_mips_{any,all,upper,lower}_<INSN>_<COND>_ps.
15246 The lower and upper forms are subject to mips_builtin_avail_<AVAIL> 15316 The lower and upper forms are subject to mips_builtin_avail_<AVAIL>
15247 while the any and all forms are subject to mips_builtin_avail_mips3d. */ 15317 while the any and all forms are subject to mips_builtin_avail_mips3d. */
15248 #define CMP_PS_BUILTINS(INSN, COND, AVAIL) \ 15318 #define CMP_PS_BUILTINS(INSN, COND, AVAIL) \
15249 MIPS_BUILTIN (INSN ## _cond_ps, COND, "any_" #INSN "_" #COND "_ps", \ 15319 MIPS_BUILTIN (INSN ## _cond_ps, COND, "any_" #INSN "_" #COND "_ps", \
15250 MIPS_BUILTIN_CMP_ANY, MIPS_INT_FTYPE_V2SF_V2SF, \ 15320 MIPS_BUILTIN_CMP_ANY, MIPS_INT_FTYPE_V2SF_V2SF, \
15251 mips3d), \ 15321 mips3d, false), \
15252 MIPS_BUILTIN (INSN ## _cond_ps, COND, "all_" #INSN "_" #COND "_ps", \ 15322 MIPS_BUILTIN (INSN ## _cond_ps, COND, "all_" #INSN "_" #COND "_ps", \
15253 MIPS_BUILTIN_CMP_ALL, MIPS_INT_FTYPE_V2SF_V2SF, \ 15323 MIPS_BUILTIN_CMP_ALL, MIPS_INT_FTYPE_V2SF_V2SF, \
15254 mips3d), \ 15324 mips3d, false), \
15255 MIPS_BUILTIN (INSN ## _cond_ps, COND, "lower_" #INSN "_" #COND "_ps", \ 15325 MIPS_BUILTIN (INSN ## _cond_ps, COND, "lower_" #INSN "_" #COND "_ps", \
15256 MIPS_BUILTIN_CMP_LOWER, MIPS_INT_FTYPE_V2SF_V2SF, \ 15326 MIPS_BUILTIN_CMP_LOWER, MIPS_INT_FTYPE_V2SF_V2SF, \
15257 AVAIL), \ 15327 AVAIL, false), \
15258 MIPS_BUILTIN (INSN ## _cond_ps, COND, "upper_" #INSN "_" #COND "_ps", \ 15328 MIPS_BUILTIN (INSN ## _cond_ps, COND, "upper_" #INSN "_" #COND "_ps", \
15259 MIPS_BUILTIN_CMP_UPPER, MIPS_INT_FTYPE_V2SF_V2SF, \ 15329 MIPS_BUILTIN_CMP_UPPER, MIPS_INT_FTYPE_V2SF_V2SF, \
15260 AVAIL) 15330 AVAIL, false)
15261 15331
15262 /* Define __builtin_mips_{any,all}_<INSN>_<COND>_4s. The functions 15332 /* Define __builtin_mips_{any,all}_<INSN>_<COND>_4s. The functions
15263 are subject to mips_builtin_avail_mips3d. */ 15333 are subject to mips_builtin_avail_mips3d. */
15264 #define CMP_4S_BUILTINS(INSN, COND) \ 15334 #define CMP_4S_BUILTINS(INSN, COND) \
15265 MIPS_BUILTIN (INSN ## _cond_4s, COND, "any_" #INSN "_" #COND "_4s", \ 15335 MIPS_BUILTIN (INSN ## _cond_4s, COND, "any_" #INSN "_" #COND "_4s", \
15266 MIPS_BUILTIN_CMP_ANY, \ 15336 MIPS_BUILTIN_CMP_ANY, \
15267 MIPS_INT_FTYPE_V2SF_V2SF_V2SF_V2SF, mips3d), \ 15337 MIPS_INT_FTYPE_V2SF_V2SF_V2SF_V2SF, mips3d, false), \
15268 MIPS_BUILTIN (INSN ## _cond_4s, COND, "all_" #INSN "_" #COND "_4s", \ 15338 MIPS_BUILTIN (INSN ## _cond_4s, COND, "all_" #INSN "_" #COND "_4s", \
15269 MIPS_BUILTIN_CMP_ALL, \ 15339 MIPS_BUILTIN_CMP_ALL, \
15270 MIPS_INT_FTYPE_V2SF_V2SF_V2SF_V2SF, mips3d) 15340 MIPS_INT_FTYPE_V2SF_V2SF_V2SF_V2SF, mips3d, false)
15271 15341
15272 /* Define __builtin_mips_mov{t,f}_<INSN>_<COND>_ps. The comparison 15342 /* Define __builtin_mips_mov{t,f}_<INSN>_<COND>_ps. The comparison
15273 instruction requires mips_builtin_avail_<AVAIL>. */ 15343 instruction requires mips_builtin_avail_<AVAIL>. */
15274 #define MOVTF_BUILTINS(INSN, COND, AVAIL) \ 15344 #define MOVTF_BUILTINS(INSN, COND, AVAIL) \
15275 MIPS_BUILTIN (INSN ## _cond_ps, COND, "movt_" #INSN "_" #COND "_ps", \ 15345 MIPS_BUILTIN (INSN ## _cond_ps, COND, "movt_" #INSN "_" #COND "_ps", \
15276 MIPS_BUILTIN_MOVT, MIPS_V2SF_FTYPE_V2SF_V2SF_V2SF_V2SF, \ 15346 MIPS_BUILTIN_MOVT, MIPS_V2SF_FTYPE_V2SF_V2SF_V2SF_V2SF, \
15277 AVAIL), \ 15347 AVAIL, false), \
15278 MIPS_BUILTIN (INSN ## _cond_ps, COND, "movf_" #INSN "_" #COND "_ps", \ 15348 MIPS_BUILTIN (INSN ## _cond_ps, COND, "movf_" #INSN "_" #COND "_ps", \
15279 MIPS_BUILTIN_MOVF, MIPS_V2SF_FTYPE_V2SF_V2SF_V2SF_V2SF, \ 15349 MIPS_BUILTIN_MOVF, MIPS_V2SF_FTYPE_V2SF_V2SF_V2SF_V2SF, \
15280 AVAIL) 15350 AVAIL, false)
15281 15351
15282 /* Define all the built-in functions related to C.cond.fmt condition COND. */ 15352 /* Define all the built-in functions related to C.cond.fmt condition COND. */
15283 #define CMP_BUILTINS(COND) \ 15353 #define CMP_BUILTINS(COND) \
15284 MOVTF_BUILTINS (c, COND, paired_single), \ 15354 MOVTF_BUILTINS (c, COND, paired_single), \
15285 MOVTF_BUILTINS (cabs, COND, mips3d), \ 15355 MOVTF_BUILTINS (cabs, COND, mips3d), \
15292 /* Define __builtin_mips_<INSN>, which is a MIPS_BUILTIN_DIRECT_NO_TARGET 15362 /* Define __builtin_mips_<INSN>, which is a MIPS_BUILTIN_DIRECT_NO_TARGET
15293 function mapped to instruction CODE_FOR_mips_<INSN>, FUNCTION_TYPE 15363 function mapped to instruction CODE_FOR_mips_<INSN>, FUNCTION_TYPE
15294 and AVAIL are as for MIPS_BUILTIN. */ 15364 and AVAIL are as for MIPS_BUILTIN. */
15295 #define DIRECT_NO_TARGET_BUILTIN(INSN, FUNCTION_TYPE, AVAIL) \ 15365 #define DIRECT_NO_TARGET_BUILTIN(INSN, FUNCTION_TYPE, AVAIL) \
15296 MIPS_BUILTIN (INSN, f, #INSN, MIPS_BUILTIN_DIRECT_NO_TARGET, \ 15366 MIPS_BUILTIN (INSN, f, #INSN, MIPS_BUILTIN_DIRECT_NO_TARGET, \
15297 FUNCTION_TYPE, AVAIL) 15367 FUNCTION_TYPE, AVAIL, false)
15298 15368
15299 /* Define __builtin_mips_bposge<VALUE>. <VALUE> is 32 for the MIPS32 DSP 15369 /* Define __builtin_mips_bposge<VALUE>. <VALUE> is 32 for the MIPS32 DSP
15300 branch instruction. AVAIL is as for MIPS_BUILTIN. */ 15370 branch instruction. AVAIL is as for MIPS_BUILTIN. */
15301 #define BPOSGE_BUILTIN(VALUE, AVAIL) \ 15371 #define BPOSGE_BUILTIN(VALUE, AVAIL) \
15302 MIPS_BUILTIN (bposge, f, "bposge" #VALUE, \ 15372 MIPS_BUILTIN (bposge, f, "bposge" #VALUE, \
15303 MIPS_BUILTIN_BPOSGE ## VALUE, MIPS_SI_FTYPE_VOID, AVAIL) 15373 MIPS_BUILTIN_BPOSGE ## VALUE, MIPS_SI_FTYPE_VOID, AVAIL, false)
15304 15374
15305 /* Define a Loongson MIPS_BUILTIN_DIRECT function __builtin_loongson_<FN_NAME> 15375 /* Define a Loongson MIPS_BUILTIN_DIRECT function __builtin_loongson_<FN_NAME>
15306 for instruction CODE_FOR_loongson_<INSN>. FUNCTION_TYPE is a 15376 for instruction CODE_FOR_loongson_<INSN>. FUNCTION_TYPE is a
15307 builtin_description field. */ 15377 builtin_description field. */
15308 #define LOONGSON_BUILTIN_ALIAS(INSN, FN_NAME, FUNCTION_TYPE) \ 15378 #define LOONGSON_BUILTIN_ALIAS(INSN, FN_NAME, FUNCTION_TYPE) \
15309 { CODE_FOR_loongson_ ## INSN, MIPS_FP_COND_f, \ 15379 { CODE_FOR_loongson_ ## INSN, MIPS_FP_COND_f, \
15310 "__builtin_loongson_" #FN_NAME, MIPS_BUILTIN_DIRECT, \ 15380 "__builtin_loongson_" #FN_NAME, MIPS_BUILTIN_DIRECT, \
15311 FUNCTION_TYPE, mips_builtin_avail_loongson } 15381 FUNCTION_TYPE, mips_builtin_avail_loongson, false }
15312 15382
15313 /* Define a Loongson MIPS_BUILTIN_DIRECT function __builtin_loongson_<INSN> 15383 /* Define a Loongson MIPS_BUILTIN_DIRECT function __builtin_loongson_<INSN>
15314 for instruction CODE_FOR_loongson_<INSN>. FUNCTION_TYPE is a 15384 for instruction CODE_FOR_loongson_<INSN>. FUNCTION_TYPE is a
15315 builtin_description field. */ 15385 builtin_description field. */
15316 #define LOONGSON_BUILTIN(INSN, FUNCTION_TYPE) \ 15386 #define LOONGSON_BUILTIN(INSN, FUNCTION_TYPE) \
15320 We use functions of this form when the same insn can be usefully applied 15390 We use functions of this form when the same insn can be usefully applied
15321 to more than one datatype. */ 15391 to more than one datatype. */
15322 #define LOONGSON_BUILTIN_SUFFIX(INSN, SUFFIX, FUNCTION_TYPE) \ 15392 #define LOONGSON_BUILTIN_SUFFIX(INSN, SUFFIX, FUNCTION_TYPE) \
15323 LOONGSON_BUILTIN_ALIAS (INSN, INSN ## _ ## SUFFIX, FUNCTION_TYPE) 15393 LOONGSON_BUILTIN_ALIAS (INSN, INSN ## _ ## SUFFIX, FUNCTION_TYPE)
15324 15394
15325 /* Define an MSA MIPS_BUILTIN_DIRECT function __builtin_msa_<INSN> 15395 /* Define an MSA MIPS_BUILTIN_DIRECT pure function __builtin_msa_<INSN>
15396 for instruction CODE_FOR_msa_<INSN>. FUNCTION_TYPE is a builtin_description
15397 field. */
15398 #define MSA_BUILTIN_PURE(INSN, FUNCTION_TYPE) \
15399 { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \
15400 "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT, \
15401 FUNCTION_TYPE, mips_builtin_avail_msa, true }
15402
15403 /* Define an MSA MIPS_BUILTIN_DIRECT non-pure function __builtin_msa_<INSN>
15326 for instruction CODE_FOR_msa_<INSN>. FUNCTION_TYPE is a builtin_description 15404 for instruction CODE_FOR_msa_<INSN>. FUNCTION_TYPE is a builtin_description
15327 field. */ 15405 field. */
15328 #define MSA_BUILTIN(INSN, FUNCTION_TYPE) \ 15406 #define MSA_BUILTIN(INSN, FUNCTION_TYPE) \
15329 { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \ 15407 { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \
15330 "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT, \ 15408 "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT, \
15331 FUNCTION_TYPE, mips_builtin_avail_msa } 15409 FUNCTION_TYPE, mips_builtin_avail_msa, false }
15332 15410
15333 /* Define a remapped MSA MIPS_BUILTIN_DIRECT function __builtin_msa_<INSN> 15411 /* Define a remapped MSA MIPS_BUILTIN_DIRECT function __builtin_msa_<INSN>
15334 for instruction CODE_FOR_msa_<INSN2>. FUNCTION_TYPE is 15412 for instruction CODE_FOR_msa_<INSN2>. FUNCTION_TYPE is
15335 a builtin_description field. */ 15413 a builtin_description field. */
15336 #define MSA_BUILTIN_REMAP(INSN, INSN2, FUNCTION_TYPE) \ 15414 #define MSA_BUILTIN_REMAP(INSN, INSN2, FUNCTION_TYPE) \
15337 { CODE_FOR_msa_ ## INSN2, MIPS_FP_COND_f, \ 15415 { CODE_FOR_msa_ ## INSN2, MIPS_FP_COND_f, \
15338 "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT, \ 15416 "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT, \
15339 FUNCTION_TYPE, mips_builtin_avail_msa } 15417 FUNCTION_TYPE, mips_builtin_avail_msa, false }
15340 15418
15341 /* Define an MSA MIPS_BUILTIN_MSA_TEST_BRANCH function __builtin_msa_<INSN> 15419 /* Define an MSA MIPS_BUILTIN_MSA_TEST_BRANCH function __builtin_msa_<INSN>
15342 for instruction CODE_FOR_msa_<INSN>. FUNCTION_TYPE is a builtin_description 15420 for instruction CODE_FOR_msa_<INSN>. FUNCTION_TYPE is a builtin_description
15343 field. */ 15421 field. */
15344 #define MSA_BUILTIN_TEST_BRANCH(INSN, FUNCTION_TYPE) \ 15422 #define MSA_BUILTIN_TEST_BRANCH(INSN, FUNCTION_TYPE) \
15345 { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \ 15423 { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \
15346 "__builtin_msa_" #INSN, MIPS_BUILTIN_MSA_TEST_BRANCH, \ 15424 "__builtin_msa_" #INSN, MIPS_BUILTIN_MSA_TEST_BRANCH, \
15347 FUNCTION_TYPE, mips_builtin_avail_msa } 15425 FUNCTION_TYPE, mips_builtin_avail_msa, false }
15348 15426
15349 /* Define an MSA MIPS_BUILTIN_DIRECT_NO_TARGET function __builtin_msa_<INSN> 15427 /* Define an MSA MIPS_BUILTIN_DIRECT_NO_TARGET function __builtin_msa_<INSN>
15350 for instruction CODE_FOR_msa_<INSN>. FUNCTION_TYPE is a builtin_description 15428 for instruction CODE_FOR_msa_<INSN>. FUNCTION_TYPE is a builtin_description
15351 field. */ 15429 field. */
15352 #define MSA_NO_TARGET_BUILTIN(INSN, FUNCTION_TYPE) \ 15430 #define MSA_NO_TARGET_BUILTIN(INSN, FUNCTION_TYPE) \
15353 { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \ 15431 { CODE_FOR_msa_ ## INSN, MIPS_FP_COND_f, \
15354 "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT_NO_TARGET, \ 15432 "__builtin_msa_" #INSN, MIPS_BUILTIN_DIRECT_NO_TARGET, \
15355 FUNCTION_TYPE, mips_builtin_avail_msa } 15433 FUNCTION_TYPE, mips_builtin_avail_msa, false }
15356 15434
15357 #define CODE_FOR_mips_sqrt_ps CODE_FOR_sqrtv2sf2 15435 #define CODE_FOR_mips_sqrt_ps CODE_FOR_sqrtv2sf2
15358 #define CODE_FOR_mips_addq_ph CODE_FOR_addv2hi3 15436 #define CODE_FOR_mips_addq_ph CODE_FOR_addv2hi3
15359 #define CODE_FOR_mips_addu_qb CODE_FOR_addv4qi3 15437 #define CODE_FOR_mips_addu_qb CODE_FOR_addv4qi3
15360 #define CODE_FOR_mips_subq_ph CODE_FOR_subv2hi3 15438 #define CODE_FOR_mips_subq_ph CODE_FOR_subv2hi3
15595 #define MIPS_GET_FCSR 0 15673 #define MIPS_GET_FCSR 0
15596 DIRECT_BUILTIN (get_fcsr, MIPS_USI_FTYPE_VOID, hard_float), 15674 DIRECT_BUILTIN (get_fcsr, MIPS_USI_FTYPE_VOID, hard_float),
15597 #define MIPS_SET_FCSR 1 15675 #define MIPS_SET_FCSR 1
15598 DIRECT_NO_TARGET_BUILTIN (set_fcsr, MIPS_VOID_FTYPE_USI, hard_float), 15676 DIRECT_NO_TARGET_BUILTIN (set_fcsr, MIPS_VOID_FTYPE_USI, hard_float),
15599 15677
15600 DIRECT_BUILTIN (pll_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), 15678 DIRECT_BUILTIN_PURE (pll_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single),
15601 DIRECT_BUILTIN (pul_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), 15679 DIRECT_BUILTIN_PURE (pul_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single),
15602 DIRECT_BUILTIN (plu_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), 15680 DIRECT_BUILTIN_PURE (plu_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single),
15603 DIRECT_BUILTIN (puu_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single), 15681 DIRECT_BUILTIN_PURE (puu_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, paired_single),
15604 DIRECT_BUILTIN (cvt_ps_s, MIPS_V2SF_FTYPE_SF_SF, paired_single), 15682 DIRECT_BUILTIN_PURE (cvt_ps_s, MIPS_V2SF_FTYPE_SF_SF, paired_single),
15605 DIRECT_BUILTIN (cvt_s_pl, MIPS_SF_FTYPE_V2SF, paired_single), 15683 DIRECT_BUILTIN_PURE (cvt_s_pl, MIPS_SF_FTYPE_V2SF, paired_single),
15606 DIRECT_BUILTIN (cvt_s_pu, MIPS_SF_FTYPE_V2SF, paired_single), 15684 DIRECT_BUILTIN_PURE (cvt_s_pu, MIPS_SF_FTYPE_V2SF, paired_single),
15607 DIRECT_BUILTIN (abs_ps, MIPS_V2SF_FTYPE_V2SF, paired_single), 15685 DIRECT_BUILTIN_PURE (abs_ps, MIPS_V2SF_FTYPE_V2SF, paired_single),
15608 15686
15609 DIRECT_BUILTIN (alnv_ps, MIPS_V2SF_FTYPE_V2SF_V2SF_INT, paired_single), 15687 DIRECT_BUILTIN_PURE (alnv_ps, MIPS_V2SF_FTYPE_V2SF_V2SF_INT, paired_single),
15610 DIRECT_BUILTIN (addr_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), 15688 DIRECT_BUILTIN_PURE (addr_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d),
15611 DIRECT_BUILTIN (mulr_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), 15689 DIRECT_BUILTIN_PURE (mulr_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d),
15612 DIRECT_BUILTIN (cvt_pw_ps, MIPS_V2SF_FTYPE_V2SF, mips3d), 15690 DIRECT_BUILTIN_PURE (cvt_pw_ps, MIPS_V2SF_FTYPE_V2SF, mips3d),
15613 DIRECT_BUILTIN (cvt_ps_pw, MIPS_V2SF_FTYPE_V2SF, mips3d), 15691 DIRECT_BUILTIN_PURE (cvt_ps_pw, MIPS_V2SF_FTYPE_V2SF, mips3d),
15614 15692
15615 DIRECT_BUILTIN (recip1_s, MIPS_SF_FTYPE_SF, mips3d), 15693 DIRECT_BUILTIN_PURE (recip1_s, MIPS_SF_FTYPE_SF, mips3d),
15616 DIRECT_BUILTIN (recip1_d, MIPS_DF_FTYPE_DF, mips3d), 15694 DIRECT_BUILTIN_PURE (recip1_d, MIPS_DF_FTYPE_DF, mips3d),
15617 DIRECT_BUILTIN (recip1_ps, MIPS_V2SF_FTYPE_V2SF, mips3d), 15695 DIRECT_BUILTIN_PURE (recip1_ps, MIPS_V2SF_FTYPE_V2SF, mips3d),
15618 DIRECT_BUILTIN (recip2_s, MIPS_SF_FTYPE_SF_SF, mips3d), 15696 DIRECT_BUILTIN_PURE (recip2_s, MIPS_SF_FTYPE_SF_SF, mips3d),
15619 DIRECT_BUILTIN (recip2_d, MIPS_DF_FTYPE_DF_DF, mips3d), 15697 DIRECT_BUILTIN_PURE (recip2_d, MIPS_DF_FTYPE_DF_DF, mips3d),
15620 DIRECT_BUILTIN (recip2_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), 15698 DIRECT_BUILTIN_PURE (recip2_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d),
15621 15699
15622 DIRECT_BUILTIN (rsqrt1_s, MIPS_SF_FTYPE_SF, mips3d), 15700 DIRECT_BUILTIN_PURE (rsqrt1_s, MIPS_SF_FTYPE_SF, mips3d),
15623 DIRECT_BUILTIN (rsqrt1_d, MIPS_DF_FTYPE_DF, mips3d), 15701 DIRECT_BUILTIN_PURE (rsqrt1_d, MIPS_DF_FTYPE_DF, mips3d),
15624 DIRECT_BUILTIN (rsqrt1_ps, MIPS_V2SF_FTYPE_V2SF, mips3d), 15702 DIRECT_BUILTIN_PURE (rsqrt1_ps, MIPS_V2SF_FTYPE_V2SF, mips3d),
15625 DIRECT_BUILTIN (rsqrt2_s, MIPS_SF_FTYPE_SF_SF, mips3d), 15703 DIRECT_BUILTIN_PURE (rsqrt2_s, MIPS_SF_FTYPE_SF_SF, mips3d),
15626 DIRECT_BUILTIN (rsqrt2_d, MIPS_DF_FTYPE_DF_DF, mips3d), 15704 DIRECT_BUILTIN_PURE (rsqrt2_d, MIPS_DF_FTYPE_DF_DF, mips3d),
15627 DIRECT_BUILTIN (rsqrt2_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d), 15705 DIRECT_BUILTIN_PURE (rsqrt2_ps, MIPS_V2SF_FTYPE_V2SF_V2SF, mips3d),
15628 15706
15629 MIPS_FP_CONDITIONS (CMP_BUILTINS), 15707 MIPS_FP_CONDITIONS (CMP_BUILTINS),
15630 15708
15631 /* Built-in functions for the SB-1 processor. */ 15709 /* Built-in functions for the SB-1 processor. */
15632 DIRECT_BUILTIN (sqrt_ps, MIPS_V2SF_FTYPE_V2SF, sb1_paired_single), 15710 DIRECT_BUILTIN (sqrt_ps, MIPS_V2SF_FTYPE_V2SF, sb1_paired_single),
15633 15711
15634 /* Built-in functions for the DSP ASE (32-bit and 64-bit). */ 15712 /* Built-in functions for the DSP ASE (32-bit and 64-bit). */
15635 DIRECT_BUILTIN (addq_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), 15713 DIRECT_BUILTIN_PURE (addq_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp),
15636 DIRECT_BUILTIN (addq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), 15714 DIRECT_BUILTIN_PURE (addq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp),
15637 DIRECT_BUILTIN (addq_s_w, MIPS_SI_FTYPE_SI_SI, dsp), 15715 DIRECT_BUILTIN_PURE (addq_s_w, MIPS_SI_FTYPE_SI_SI, dsp),
15638 DIRECT_BUILTIN (addu_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), 15716 DIRECT_BUILTIN_PURE (addu_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp),
15639 DIRECT_BUILTIN (addu_s_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), 15717 DIRECT_BUILTIN_PURE (addu_s_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp),
15640 DIRECT_BUILTIN (subq_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), 15718 DIRECT_BUILTIN_PURE (subq_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp),
15641 DIRECT_BUILTIN (subq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), 15719 DIRECT_BUILTIN_PURE (subq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp),
15642 DIRECT_BUILTIN (subq_s_w, MIPS_SI_FTYPE_SI_SI, dsp), 15720 DIRECT_BUILTIN_PURE (subq_s_w, MIPS_SI_FTYPE_SI_SI, dsp),
15643 DIRECT_BUILTIN (subu_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), 15721 DIRECT_BUILTIN_PURE (subu_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp),
15644 DIRECT_BUILTIN (subu_s_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), 15722 DIRECT_BUILTIN_PURE (subu_s_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp),
15645 DIRECT_BUILTIN (addsc, MIPS_SI_FTYPE_SI_SI, dsp), 15723 DIRECT_BUILTIN_PURE (addsc, MIPS_SI_FTYPE_SI_SI, dsp),
15646 DIRECT_BUILTIN (addwc, MIPS_SI_FTYPE_SI_SI, dsp), 15724 DIRECT_BUILTIN_PURE (addwc, MIPS_SI_FTYPE_SI_SI, dsp),
15647 DIRECT_BUILTIN (modsub, MIPS_SI_FTYPE_SI_SI, dsp), 15725 DIRECT_BUILTIN_PURE (modsub, MIPS_SI_FTYPE_SI_SI, dsp),
15648 DIRECT_BUILTIN (raddu_w_qb, MIPS_SI_FTYPE_V4QI, dsp), 15726 DIRECT_BUILTIN_PURE (raddu_w_qb, MIPS_SI_FTYPE_V4QI, dsp),
15649 DIRECT_BUILTIN (absq_s_ph, MIPS_V2HI_FTYPE_V2HI, dsp), 15727 DIRECT_BUILTIN_PURE (absq_s_ph, MIPS_V2HI_FTYPE_V2HI, dsp),
15650 DIRECT_BUILTIN (absq_s_w, MIPS_SI_FTYPE_SI, dsp), 15728 DIRECT_BUILTIN_PURE (absq_s_w, MIPS_SI_FTYPE_SI, dsp),
15651 DIRECT_BUILTIN (precrq_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dsp), 15729 DIRECT_BUILTIN_PURE (precrq_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dsp),
15652 DIRECT_BUILTIN (precrq_ph_w, MIPS_V2HI_FTYPE_SI_SI, dsp), 15730 DIRECT_BUILTIN_PURE (precrq_ph_w, MIPS_V2HI_FTYPE_SI_SI, dsp),
15653 DIRECT_BUILTIN (precrq_rs_ph_w, MIPS_V2HI_FTYPE_SI_SI, dsp), 15731 DIRECT_BUILTIN_PURE (precrq_rs_ph_w, MIPS_V2HI_FTYPE_SI_SI, dsp),
15654 DIRECT_BUILTIN (precrqu_s_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dsp), 15732 DIRECT_BUILTIN_PURE (precrqu_s_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dsp),
15655 DIRECT_BUILTIN (preceq_w_phl, MIPS_SI_FTYPE_V2HI, dsp), 15733 DIRECT_BUILTIN_PURE (preceq_w_phl, MIPS_SI_FTYPE_V2HI, dsp),
15656 DIRECT_BUILTIN (preceq_w_phr, MIPS_SI_FTYPE_V2HI, dsp), 15734 DIRECT_BUILTIN_PURE (preceq_w_phr, MIPS_SI_FTYPE_V2HI, dsp),
15657 DIRECT_BUILTIN (precequ_ph_qbl, MIPS_V2HI_FTYPE_V4QI, dsp), 15735 DIRECT_BUILTIN_PURE (precequ_ph_qbl, MIPS_V2HI_FTYPE_V4QI, dsp),
15658 DIRECT_BUILTIN (precequ_ph_qbr, MIPS_V2HI_FTYPE_V4QI, dsp), 15736 DIRECT_BUILTIN_PURE (precequ_ph_qbr, MIPS_V2HI_FTYPE_V4QI, dsp),
15659 DIRECT_BUILTIN (precequ_ph_qbla, MIPS_V2HI_FTYPE_V4QI, dsp), 15737 DIRECT_BUILTIN_PURE (precequ_ph_qbla, MIPS_V2HI_FTYPE_V4QI, dsp),
15660 DIRECT_BUILTIN (precequ_ph_qbra, MIPS_V2HI_FTYPE_V4QI, dsp), 15738 DIRECT_BUILTIN_PURE (precequ_ph_qbra, MIPS_V2HI_FTYPE_V4QI, dsp),
15661 DIRECT_BUILTIN (preceu_ph_qbl, MIPS_V2HI_FTYPE_V4QI, dsp), 15739 DIRECT_BUILTIN_PURE (preceu_ph_qbl, MIPS_V2HI_FTYPE_V4QI, dsp),
15662 DIRECT_BUILTIN (preceu_ph_qbr, MIPS_V2HI_FTYPE_V4QI, dsp), 15740 DIRECT_BUILTIN_PURE (preceu_ph_qbr, MIPS_V2HI_FTYPE_V4QI, dsp),
15663 DIRECT_BUILTIN (preceu_ph_qbla, MIPS_V2HI_FTYPE_V4QI, dsp), 15741 DIRECT_BUILTIN_PURE (preceu_ph_qbla, MIPS_V2HI_FTYPE_V4QI, dsp),
15664 DIRECT_BUILTIN (preceu_ph_qbra, MIPS_V2HI_FTYPE_V4QI, dsp), 15742 DIRECT_BUILTIN_PURE (preceu_ph_qbra, MIPS_V2HI_FTYPE_V4QI, dsp),
15665 DIRECT_BUILTIN (shll_qb, MIPS_V4QI_FTYPE_V4QI_SI, dsp), 15743 DIRECT_BUILTIN_PURE (shll_qb, MIPS_V4QI_FTYPE_V4QI_SI, dsp),
15666 DIRECT_BUILTIN (shll_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), 15744 DIRECT_BUILTIN_PURE (shll_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp),
15667 DIRECT_BUILTIN (shll_s_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), 15745 DIRECT_BUILTIN_PURE (shll_s_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp),
15668 DIRECT_BUILTIN (shll_s_w, MIPS_SI_FTYPE_SI_SI, dsp), 15746 DIRECT_BUILTIN_PURE (shll_s_w, MIPS_SI_FTYPE_SI_SI, dsp),
15669 DIRECT_BUILTIN (shrl_qb, MIPS_V4QI_FTYPE_V4QI_SI, dsp), 15747 DIRECT_BUILTIN_PURE (shrl_qb, MIPS_V4QI_FTYPE_V4QI_SI, dsp),
15670 DIRECT_BUILTIN (shra_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), 15748 DIRECT_BUILTIN_PURE (shra_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp),
15671 DIRECT_BUILTIN (shra_r_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp), 15749 DIRECT_BUILTIN_PURE (shra_r_ph, MIPS_V2HI_FTYPE_V2HI_SI, dsp),
15672 DIRECT_BUILTIN (shra_r_w, MIPS_SI_FTYPE_SI_SI, dsp), 15750 DIRECT_BUILTIN_PURE (shra_r_w, MIPS_SI_FTYPE_SI_SI, dsp),
15673 DIRECT_BUILTIN (muleu_s_ph_qbl, MIPS_V2HI_FTYPE_V4QI_V2HI, dsp), 15751 DIRECT_BUILTIN_PURE (muleu_s_ph_qbl, MIPS_V2HI_FTYPE_V4QI_V2HI, dsp),
15674 DIRECT_BUILTIN (muleu_s_ph_qbr, MIPS_V2HI_FTYPE_V4QI_V2HI, dsp), 15752 DIRECT_BUILTIN_PURE (muleu_s_ph_qbr, MIPS_V2HI_FTYPE_V4QI_V2HI, dsp),
15675 DIRECT_BUILTIN (mulq_rs_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), 15753 DIRECT_BUILTIN_PURE (mulq_rs_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp),
15676 DIRECT_BUILTIN (muleq_s_w_phl, MIPS_SI_FTYPE_V2HI_V2HI, dsp), 15754 DIRECT_BUILTIN_PURE (muleq_s_w_phl, MIPS_SI_FTYPE_V2HI_V2HI, dsp),
15677 DIRECT_BUILTIN (muleq_s_w_phr, MIPS_SI_FTYPE_V2HI_V2HI, dsp), 15755 DIRECT_BUILTIN_PURE (muleq_s_w_phr, MIPS_SI_FTYPE_V2HI_V2HI, dsp),
15678 DIRECT_BUILTIN (bitrev, MIPS_SI_FTYPE_SI, dsp), 15756 DIRECT_BUILTIN_PURE (bitrev, MIPS_SI_FTYPE_SI, dsp),
15679 DIRECT_BUILTIN (insv, MIPS_SI_FTYPE_SI_SI, dsp), 15757 DIRECT_BUILTIN_PURE (insv, MIPS_SI_FTYPE_SI_SI, dsp),
15680 DIRECT_BUILTIN (repl_qb, MIPS_V4QI_FTYPE_SI, dsp), 15758 DIRECT_BUILTIN_PURE (repl_qb, MIPS_V4QI_FTYPE_SI, dsp),
15681 DIRECT_BUILTIN (repl_ph, MIPS_V2HI_FTYPE_SI, dsp), 15759 DIRECT_BUILTIN_PURE (repl_ph, MIPS_V2HI_FTYPE_SI, dsp),
15682 DIRECT_NO_TARGET_BUILTIN (cmpu_eq_qb, MIPS_VOID_FTYPE_V4QI_V4QI, dsp), 15760 DIRECT_NO_TARGET_BUILTIN (cmpu_eq_qb, MIPS_VOID_FTYPE_V4QI_V4QI, dsp),
15683 DIRECT_NO_TARGET_BUILTIN (cmpu_lt_qb, MIPS_VOID_FTYPE_V4QI_V4QI, dsp), 15761 DIRECT_NO_TARGET_BUILTIN (cmpu_lt_qb, MIPS_VOID_FTYPE_V4QI_V4QI, dsp),
15684 DIRECT_NO_TARGET_BUILTIN (cmpu_le_qb, MIPS_VOID_FTYPE_V4QI_V4QI, dsp), 15762 DIRECT_NO_TARGET_BUILTIN (cmpu_le_qb, MIPS_VOID_FTYPE_V4QI_V4QI, dsp),
15685 DIRECT_BUILTIN (cmpgu_eq_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp), 15763 DIRECT_BUILTIN_PURE (cmpgu_eq_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp),
15686 DIRECT_BUILTIN (cmpgu_lt_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp), 15764 DIRECT_BUILTIN_PURE (cmpgu_lt_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp),
15687 DIRECT_BUILTIN (cmpgu_le_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp), 15765 DIRECT_BUILTIN_PURE (cmpgu_le_qb, MIPS_SI_FTYPE_V4QI_V4QI, dsp),
15688 DIRECT_NO_TARGET_BUILTIN (cmp_eq_ph, MIPS_VOID_FTYPE_V2HI_V2HI, dsp), 15766 DIRECT_NO_TARGET_BUILTIN (cmp_eq_ph, MIPS_VOID_FTYPE_V2HI_V2HI, dsp),
15689 DIRECT_NO_TARGET_BUILTIN (cmp_lt_ph, MIPS_VOID_FTYPE_V2HI_V2HI, dsp), 15767 DIRECT_NO_TARGET_BUILTIN (cmp_lt_ph, MIPS_VOID_FTYPE_V2HI_V2HI, dsp),
15690 DIRECT_NO_TARGET_BUILTIN (cmp_le_ph, MIPS_VOID_FTYPE_V2HI_V2HI, dsp), 15768 DIRECT_NO_TARGET_BUILTIN (cmp_le_ph, MIPS_VOID_FTYPE_V2HI_V2HI, dsp),
15691 DIRECT_BUILTIN (pick_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp), 15769 DIRECT_BUILTIN_PURE (pick_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dsp),
15692 DIRECT_BUILTIN (pick_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), 15770 DIRECT_BUILTIN_PURE (pick_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp),
15693 DIRECT_BUILTIN (packrl_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp), 15771 DIRECT_BUILTIN_PURE (packrl_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dsp),
15694 DIRECT_NO_TARGET_BUILTIN (wrdsp, MIPS_VOID_FTYPE_SI_SI, dsp), 15772 DIRECT_NO_TARGET_BUILTIN (wrdsp, MIPS_VOID_FTYPE_SI_SI, dsp),
15695 DIRECT_BUILTIN (rddsp, MIPS_SI_FTYPE_SI, dsp), 15773 DIRECT_BUILTIN_PURE (rddsp, MIPS_SI_FTYPE_SI, dsp),
15696 DIRECT_BUILTIN (lbux, MIPS_SI_FTYPE_POINTER_SI, dsp), 15774 DIRECT_BUILTIN (lbux, MIPS_SI_FTYPE_POINTER_SI, dsp),
15697 DIRECT_BUILTIN (lhx, MIPS_SI_FTYPE_POINTER_SI, dsp), 15775 DIRECT_BUILTIN (lhx, MIPS_SI_FTYPE_POINTER_SI, dsp),
15698 DIRECT_BUILTIN (lwx, MIPS_SI_FTYPE_POINTER_SI, dsp), 15776 DIRECT_BUILTIN (lwx, MIPS_SI_FTYPE_POINTER_SI, dsp),
15699 BPOSGE_BUILTIN (32, dsp), 15777 BPOSGE_BUILTIN (32, dsp),
15700 15778
15701 /* The following are for the MIPS DSP ASE REV 2 (32-bit and 64-bit). */ 15779 /* The following are for the MIPS DSP ASE REV 2 (32-bit and 64-bit). */
15702 DIRECT_BUILTIN (absq_s_qb, MIPS_V4QI_FTYPE_V4QI, dspr2), 15780 DIRECT_BUILTIN_PURE (absq_s_qb, MIPS_V4QI_FTYPE_V4QI, dspr2),
15703 DIRECT_BUILTIN (addu_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15781 DIRECT_BUILTIN_PURE (addu_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15704 DIRECT_BUILTIN (addu_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15782 DIRECT_BUILTIN_PURE (addu_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15705 DIRECT_BUILTIN (adduh_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), 15783 DIRECT_BUILTIN_PURE (adduh_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2),
15706 DIRECT_BUILTIN (adduh_r_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), 15784 DIRECT_BUILTIN_PURE (adduh_r_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2),
15707 DIRECT_BUILTIN (append, MIPS_SI_FTYPE_SI_SI_SI, dspr2), 15785 DIRECT_BUILTIN_PURE (append, MIPS_SI_FTYPE_SI_SI_SI, dspr2),
15708 DIRECT_BUILTIN (balign, MIPS_SI_FTYPE_SI_SI_SI, dspr2), 15786 DIRECT_BUILTIN_PURE (balign, MIPS_SI_FTYPE_SI_SI_SI, dspr2),
15709 DIRECT_BUILTIN (cmpgdu_eq_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2), 15787 DIRECT_BUILTIN_PURE (cmpgdu_eq_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2),
15710 DIRECT_BUILTIN (cmpgdu_lt_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2), 15788 DIRECT_BUILTIN_PURE (cmpgdu_lt_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2),
15711 DIRECT_BUILTIN (cmpgdu_le_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2), 15789 DIRECT_BUILTIN_PURE (cmpgdu_le_qb, MIPS_SI_FTYPE_V4QI_V4QI, dspr2),
15712 DIRECT_BUILTIN (mul_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15790 DIRECT_BUILTIN_PURE (mul_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15713 DIRECT_BUILTIN (mul_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15791 DIRECT_BUILTIN_PURE (mul_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15714 DIRECT_BUILTIN (mulq_rs_w, MIPS_SI_FTYPE_SI_SI, dspr2), 15792 DIRECT_BUILTIN_PURE (mulq_rs_w, MIPS_SI_FTYPE_SI_SI, dspr2),
15715 DIRECT_BUILTIN (mulq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15793 DIRECT_BUILTIN_PURE (mulq_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15716 DIRECT_BUILTIN (mulq_s_w, MIPS_SI_FTYPE_SI_SI, dspr2), 15794 DIRECT_BUILTIN_PURE (mulq_s_w, MIPS_SI_FTYPE_SI_SI, dspr2),
15717 DIRECT_BUILTIN (precr_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dspr2), 15795 DIRECT_BUILTIN_PURE (precr_qb_ph, MIPS_V4QI_FTYPE_V2HI_V2HI, dspr2),
15718 DIRECT_BUILTIN (precr_sra_ph_w, MIPS_V2HI_FTYPE_SI_SI_SI, dspr2), 15796 DIRECT_BUILTIN_PURE (precr_sra_ph_w, MIPS_V2HI_FTYPE_SI_SI_SI, dspr2),
15719 DIRECT_BUILTIN (precr_sra_r_ph_w, MIPS_V2HI_FTYPE_SI_SI_SI, dspr2), 15797 DIRECT_BUILTIN_PURE (precr_sra_r_ph_w, MIPS_V2HI_FTYPE_SI_SI_SI, dspr2),
15720 DIRECT_BUILTIN (prepend, MIPS_SI_FTYPE_SI_SI_SI, dspr2), 15798 DIRECT_BUILTIN_PURE (prepend, MIPS_SI_FTYPE_SI_SI_SI, dspr2),
15721 DIRECT_BUILTIN (shra_qb, MIPS_V4QI_FTYPE_V4QI_SI, dspr2), 15799 DIRECT_BUILTIN_PURE (shra_qb, MIPS_V4QI_FTYPE_V4QI_SI, dspr2),
15722 DIRECT_BUILTIN (shra_r_qb, MIPS_V4QI_FTYPE_V4QI_SI, dspr2), 15800 DIRECT_BUILTIN_PURE (shra_r_qb, MIPS_V4QI_FTYPE_V4QI_SI, dspr2),
15723 DIRECT_BUILTIN (shrl_ph, MIPS_V2HI_FTYPE_V2HI_SI, dspr2), 15801 DIRECT_BUILTIN_PURE (shrl_ph, MIPS_V2HI_FTYPE_V2HI_SI, dspr2),
15724 DIRECT_BUILTIN (subu_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15802 DIRECT_BUILTIN_PURE (subu_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15725 DIRECT_BUILTIN (subu_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15803 DIRECT_BUILTIN_PURE (subu_s_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15726 DIRECT_BUILTIN (subuh_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), 15804 DIRECT_BUILTIN_PURE (subuh_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2),
15727 DIRECT_BUILTIN (subuh_r_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2), 15805 DIRECT_BUILTIN_PURE (subuh_r_qb, MIPS_V4QI_FTYPE_V4QI_V4QI, dspr2),
15728 DIRECT_BUILTIN (addqh_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15806 DIRECT_BUILTIN_PURE (addqh_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15729 DIRECT_BUILTIN (addqh_r_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15807 DIRECT_BUILTIN_PURE (addqh_r_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15730 DIRECT_BUILTIN (addqh_w, MIPS_SI_FTYPE_SI_SI, dspr2), 15808 DIRECT_BUILTIN_PURE (addqh_w, MIPS_SI_FTYPE_SI_SI, dspr2),
15731 DIRECT_BUILTIN (addqh_r_w, MIPS_SI_FTYPE_SI_SI, dspr2), 15809 DIRECT_BUILTIN_PURE (addqh_r_w, MIPS_SI_FTYPE_SI_SI, dspr2),
15732 DIRECT_BUILTIN (subqh_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15810 DIRECT_BUILTIN_PURE (subqh_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15733 DIRECT_BUILTIN (subqh_r_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2), 15811 DIRECT_BUILTIN_PURE (subqh_r_ph, MIPS_V2HI_FTYPE_V2HI_V2HI, dspr2),
15734 DIRECT_BUILTIN (subqh_w, MIPS_SI_FTYPE_SI_SI, dspr2), 15812 DIRECT_BUILTIN_PURE (subqh_w, MIPS_SI_FTYPE_SI_SI, dspr2),
15735 DIRECT_BUILTIN (subqh_r_w, MIPS_SI_FTYPE_SI_SI, dspr2), 15813 DIRECT_BUILTIN_PURE (subqh_r_w, MIPS_SI_FTYPE_SI_SI, dspr2),
15736 15814
15737 /* Built-in functions for the DSP ASE (32-bit only). */ 15815 /* Built-in functions for the DSP ASE (32-bit only). */
15738 DIRECT_BUILTIN (dpau_h_qbl, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), 15816 DIRECT_BUILTIN_PURE (dpau_h_qbl, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32),
15739 DIRECT_BUILTIN (dpau_h_qbr, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), 15817 DIRECT_BUILTIN_PURE (dpau_h_qbr, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32),
15740 DIRECT_BUILTIN (dpsu_h_qbl, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), 15818 DIRECT_BUILTIN_PURE (dpsu_h_qbl, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32),
15741 DIRECT_BUILTIN (dpsu_h_qbr, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32), 15819 DIRECT_BUILTIN_PURE (dpsu_h_qbr, MIPS_DI_FTYPE_DI_V4QI_V4QI, dsp_32),
15742 DIRECT_BUILTIN (dpaq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), 15820 DIRECT_BUILTIN_PURE (dpaq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32),
15743 DIRECT_BUILTIN (dpsq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), 15821 DIRECT_BUILTIN_PURE (dpsq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32),
15744 DIRECT_BUILTIN (mulsaq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), 15822 DIRECT_BUILTIN_PURE (mulsaq_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32),
15745 DIRECT_BUILTIN (dpaq_sa_l_w, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), 15823 DIRECT_BUILTIN_PURE (dpaq_sa_l_w, MIPS_DI_FTYPE_DI_SI_SI, dsp_32),
15746 DIRECT_BUILTIN (dpsq_sa_l_w, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), 15824 DIRECT_BUILTIN_PURE (dpsq_sa_l_w, MIPS_DI_FTYPE_DI_SI_SI, dsp_32),
15747 DIRECT_BUILTIN (maq_s_w_phl, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), 15825 DIRECT_BUILTIN_PURE (maq_s_w_phl, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32),
15748 DIRECT_BUILTIN (maq_s_w_phr, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), 15826 DIRECT_BUILTIN_PURE (maq_s_w_phr, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32),
15749 DIRECT_BUILTIN (maq_sa_w_phl, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), 15827 DIRECT_BUILTIN_PURE (maq_sa_w_phl, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32),
15750 DIRECT_BUILTIN (maq_sa_w_phr, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32), 15828 DIRECT_BUILTIN_PURE (maq_sa_w_phr, MIPS_DI_FTYPE_DI_V2HI_V2HI, dsp_32),
15751 DIRECT_BUILTIN (extr_w, MIPS_SI_FTYPE_DI_SI, dsp_32), 15829 DIRECT_BUILTIN_PURE (extr_w, MIPS_SI_FTYPE_DI_SI, dsp_32),
15752 DIRECT_BUILTIN (extr_r_w, MIPS_SI_FTYPE_DI_SI, dsp_32), 15830 DIRECT_BUILTIN_PURE (extr_r_w, MIPS_SI_FTYPE_DI_SI, dsp_32),
15753 DIRECT_BUILTIN (extr_rs_w, MIPS_SI_FTYPE_DI_SI, dsp_32), 15831 DIRECT_BUILTIN_PURE (extr_rs_w, MIPS_SI_FTYPE_DI_SI, dsp_32),
15754 DIRECT_BUILTIN (extr_s_h, MIPS_SI_FTYPE_DI_SI, dsp_32), 15832 DIRECT_BUILTIN_PURE (extr_s_h, MIPS_SI_FTYPE_DI_SI, dsp_32),
15755 DIRECT_BUILTIN (extp, MIPS_SI_FTYPE_DI_SI, dsp_32), 15833 DIRECT_BUILTIN_PURE (extp, MIPS_SI_FTYPE_DI_SI, dsp_32),
15756 DIRECT_BUILTIN (extpdp, MIPS_SI_FTYPE_DI_SI, dsp_32), 15834 DIRECT_BUILTIN_PURE (extpdp, MIPS_SI_FTYPE_DI_SI, dsp_32),
15757 DIRECT_BUILTIN (shilo, MIPS_DI_FTYPE_DI_SI, dsp_32), 15835 DIRECT_BUILTIN_PURE (shilo, MIPS_DI_FTYPE_DI_SI, dsp_32),
15758 DIRECT_BUILTIN (mthlip, MIPS_DI_FTYPE_DI_SI, dsp_32), 15836 DIRECT_BUILTIN_PURE (mthlip, MIPS_DI_FTYPE_DI_SI, dsp_32),
15759 DIRECT_BUILTIN (madd, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), 15837 DIRECT_BUILTIN_PURE (madd, MIPS_DI_FTYPE_DI_SI_SI, dsp_32),
15760 DIRECT_BUILTIN (maddu, MIPS_DI_FTYPE_DI_USI_USI, dsp_32), 15838 DIRECT_BUILTIN_PURE (maddu, MIPS_DI_FTYPE_DI_USI_USI, dsp_32),
15761 DIRECT_BUILTIN (msub, MIPS_DI_FTYPE_DI_SI_SI, dsp_32), 15839 DIRECT_BUILTIN_PURE (msub, MIPS_DI_FTYPE_DI_SI_SI, dsp_32),
15762 DIRECT_BUILTIN (msubu, MIPS_DI_FTYPE_DI_USI_USI, dsp_32), 15840 DIRECT_BUILTIN_PURE (msubu, MIPS_DI_FTYPE_DI_USI_USI, dsp_32),
15763 DIRECT_BUILTIN (mult, MIPS_DI_FTYPE_SI_SI, dsp_32), 15841 DIRECT_BUILTIN_PURE (mult, MIPS_DI_FTYPE_SI_SI, dsp_32),
15764 DIRECT_BUILTIN (multu, MIPS_DI_FTYPE_USI_USI, dsp_32), 15842 DIRECT_BUILTIN_PURE (multu, MIPS_DI_FTYPE_USI_USI, dsp_32),
15765 15843
15766 /* Built-in functions for the DSP ASE (64-bit only). */ 15844 /* Built-in functions for the DSP ASE (64-bit only). */
15767 DIRECT_BUILTIN (ldx, MIPS_DI_FTYPE_POINTER_SI, dsp_64), 15845 DIRECT_BUILTIN (ldx, MIPS_DI_FTYPE_POINTER_SI, dsp_64),
15768 15846
15769 /* The following are for the MIPS DSP ASE REV 2 (32-bit only). */ 15847 /* The following are for the MIPS DSP ASE REV 2 (32-bit only). */
15770 DIRECT_BUILTIN (dpa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), 15848 DIRECT_BUILTIN_PURE (dpa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32),
15771 DIRECT_BUILTIN (dps_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), 15849 DIRECT_BUILTIN_PURE (dps_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32),
15772 DIRECT_BUILTIN (mulsa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), 15850 DIRECT_BUILTIN_PURE (mulsa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32),
15773 DIRECT_BUILTIN (dpax_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), 15851 DIRECT_BUILTIN_PURE (dpax_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32),
15774 DIRECT_BUILTIN (dpsx_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), 15852 DIRECT_BUILTIN_PURE (dpsx_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32),
15775 DIRECT_BUILTIN (dpaqx_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), 15853 DIRECT_BUILTIN_PURE (dpaqx_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32),
15776 DIRECT_BUILTIN (dpaqx_sa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), 15854 DIRECT_BUILTIN_PURE (dpaqx_sa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32),
15777 DIRECT_BUILTIN (dpsqx_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), 15855 DIRECT_BUILTIN_PURE (dpsqx_s_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32),
15778 DIRECT_BUILTIN (dpsqx_sa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32), 15856 DIRECT_BUILTIN_PURE (dpsqx_sa_w_ph, MIPS_DI_FTYPE_DI_V2HI_V2HI, dspr2_32),
15779 15857
15780 /* Builtin functions for ST Microelectronics Loongson-2E/2F cores. */ 15858 /* Builtin functions for ST Microelectronics Loongson-2E/2F cores. */
15781 LOONGSON_BUILTIN (packsswh, MIPS_V4HI_FTYPE_V2SI_V2SI), 15859 LOONGSON_BUILTIN (packsswh, MIPS_V4HI_FTYPE_V2SI_V2SI),
15782 LOONGSON_BUILTIN (packsshb, MIPS_V8QI_FTYPE_V4HI_V4HI), 15860 LOONGSON_BUILTIN (packsshb, MIPS_V8QI_FTYPE_V4HI_V4HI),
15783 LOONGSON_BUILTIN (packushb, MIPS_UV8QI_FTYPE_UV4HI_UV4HI), 15861 LOONGSON_BUILTIN (packushb, MIPS_UV8QI_FTYPE_UV4HI_UV4HI),
15880 15958
15881 /* Sundry other built-in functions. */ 15959 /* Sundry other built-in functions. */
15882 DIRECT_NO_TARGET_BUILTIN (cache, MIPS_VOID_FTYPE_SI_CVPOINTER, cache), 15960 DIRECT_NO_TARGET_BUILTIN (cache, MIPS_VOID_FTYPE_SI_CVPOINTER, cache),
15883 15961
15884 /* Built-in functions for MSA. */ 15962 /* Built-in functions for MSA. */
15885 MSA_BUILTIN (sll_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 15963 MSA_BUILTIN_PURE (sll_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
15886 MSA_BUILTIN (sll_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 15964 MSA_BUILTIN_PURE (sll_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
15887 MSA_BUILTIN (sll_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 15965 MSA_BUILTIN_PURE (sll_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
15888 MSA_BUILTIN (sll_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 15966 MSA_BUILTIN_PURE (sll_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
15889 MSA_BUILTIN (slli_b, MIPS_V16QI_FTYPE_V16QI_UQI), 15967 MSA_BUILTIN_PURE (slli_b, MIPS_V16QI_FTYPE_V16QI_UQI),
15890 MSA_BUILTIN (slli_h, MIPS_V8HI_FTYPE_V8HI_UQI), 15968 MSA_BUILTIN_PURE (slli_h, MIPS_V8HI_FTYPE_V8HI_UQI),
15891 MSA_BUILTIN (slli_w, MIPS_V4SI_FTYPE_V4SI_UQI), 15969 MSA_BUILTIN_PURE (slli_w, MIPS_V4SI_FTYPE_V4SI_UQI),
15892 MSA_BUILTIN (slli_d, MIPS_V2DI_FTYPE_V2DI_UQI), 15970 MSA_BUILTIN_PURE (slli_d, MIPS_V2DI_FTYPE_V2DI_UQI),
15893 MSA_BUILTIN (sra_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 15971 MSA_BUILTIN_PURE (sra_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
15894 MSA_BUILTIN (sra_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 15972 MSA_BUILTIN_PURE (sra_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
15895 MSA_BUILTIN (sra_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 15973 MSA_BUILTIN_PURE (sra_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
15896 MSA_BUILTIN (sra_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 15974 MSA_BUILTIN_PURE (sra_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
15897 MSA_BUILTIN (srai_b, MIPS_V16QI_FTYPE_V16QI_UQI), 15975 MSA_BUILTIN_PURE (srai_b, MIPS_V16QI_FTYPE_V16QI_UQI),
15898 MSA_BUILTIN (srai_h, MIPS_V8HI_FTYPE_V8HI_UQI), 15976 MSA_BUILTIN_PURE (srai_h, MIPS_V8HI_FTYPE_V8HI_UQI),
15899 MSA_BUILTIN (srai_w, MIPS_V4SI_FTYPE_V4SI_UQI), 15977 MSA_BUILTIN_PURE (srai_w, MIPS_V4SI_FTYPE_V4SI_UQI),
15900 MSA_BUILTIN (srai_d, MIPS_V2DI_FTYPE_V2DI_UQI), 15978 MSA_BUILTIN_PURE (srai_d, MIPS_V2DI_FTYPE_V2DI_UQI),
15901 MSA_BUILTIN (srar_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 15979 MSA_BUILTIN_PURE (srar_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
15902 MSA_BUILTIN (srar_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 15980 MSA_BUILTIN_PURE (srar_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
15903 MSA_BUILTIN (srar_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 15981 MSA_BUILTIN_PURE (srar_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
15904 MSA_BUILTIN (srar_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 15982 MSA_BUILTIN_PURE (srar_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
15905 MSA_BUILTIN (srari_b, MIPS_V16QI_FTYPE_V16QI_UQI), 15983 MSA_BUILTIN_PURE (srari_b, MIPS_V16QI_FTYPE_V16QI_UQI),
15906 MSA_BUILTIN (srari_h, MIPS_V8HI_FTYPE_V8HI_UQI), 15984 MSA_BUILTIN_PURE (srari_h, MIPS_V8HI_FTYPE_V8HI_UQI),
15907 MSA_BUILTIN (srari_w, MIPS_V4SI_FTYPE_V4SI_UQI), 15985 MSA_BUILTIN_PURE (srari_w, MIPS_V4SI_FTYPE_V4SI_UQI),
15908 MSA_BUILTIN (srari_d, MIPS_V2DI_FTYPE_V2DI_UQI), 15986 MSA_BUILTIN_PURE (srari_d, MIPS_V2DI_FTYPE_V2DI_UQI),
15909 MSA_BUILTIN (srl_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 15987 MSA_BUILTIN_PURE (srl_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
15910 MSA_BUILTIN (srl_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 15988 MSA_BUILTIN_PURE (srl_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
15911 MSA_BUILTIN (srl_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 15989 MSA_BUILTIN_PURE (srl_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
15912 MSA_BUILTIN (srl_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 15990 MSA_BUILTIN_PURE (srl_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
15913 MSA_BUILTIN (srli_b, MIPS_V16QI_FTYPE_V16QI_UQI), 15991 MSA_BUILTIN_PURE (srli_b, MIPS_V16QI_FTYPE_V16QI_UQI),
15914 MSA_BUILTIN (srli_h, MIPS_V8HI_FTYPE_V8HI_UQI), 15992 MSA_BUILTIN_PURE (srli_h, MIPS_V8HI_FTYPE_V8HI_UQI),
15915 MSA_BUILTIN (srli_w, MIPS_V4SI_FTYPE_V4SI_UQI), 15993 MSA_BUILTIN_PURE (srli_w, MIPS_V4SI_FTYPE_V4SI_UQI),
15916 MSA_BUILTIN (srli_d, MIPS_V2DI_FTYPE_V2DI_UQI), 15994 MSA_BUILTIN_PURE (srli_d, MIPS_V2DI_FTYPE_V2DI_UQI),
15917 MSA_BUILTIN (srlr_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 15995 MSA_BUILTIN_PURE (srlr_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
15918 MSA_BUILTIN (srlr_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 15996 MSA_BUILTIN_PURE (srlr_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
15919 MSA_BUILTIN (srlr_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 15997 MSA_BUILTIN_PURE (srlr_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
15920 MSA_BUILTIN (srlr_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 15998 MSA_BUILTIN_PURE (srlr_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
15921 MSA_BUILTIN (srlri_b, MIPS_V16QI_FTYPE_V16QI_UQI), 15999 MSA_BUILTIN_PURE (srlri_b, MIPS_V16QI_FTYPE_V16QI_UQI),
15922 MSA_BUILTIN (srlri_h, MIPS_V8HI_FTYPE_V8HI_UQI), 16000 MSA_BUILTIN_PURE (srlri_h, MIPS_V8HI_FTYPE_V8HI_UQI),
15923 MSA_BUILTIN (srlri_w, MIPS_V4SI_FTYPE_V4SI_UQI), 16001 MSA_BUILTIN_PURE (srlri_w, MIPS_V4SI_FTYPE_V4SI_UQI),
15924 MSA_BUILTIN (srlri_d, MIPS_V2DI_FTYPE_V2DI_UQI), 16002 MSA_BUILTIN_PURE (srlri_d, MIPS_V2DI_FTYPE_V2DI_UQI),
15925 MSA_BUILTIN (bclr_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16003 MSA_BUILTIN_PURE (bclr_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
15926 MSA_BUILTIN (bclr_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16004 MSA_BUILTIN_PURE (bclr_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
15927 MSA_BUILTIN (bclr_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16005 MSA_BUILTIN_PURE (bclr_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
15928 MSA_BUILTIN (bclr_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16006 MSA_BUILTIN_PURE (bclr_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
15929 MSA_BUILTIN (bclri_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16007 MSA_BUILTIN_PURE (bclri_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
15930 MSA_BUILTIN (bclri_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), 16008 MSA_BUILTIN_PURE (bclri_h, MIPS_UV8HI_FTYPE_UV8HI_UQI),
15931 MSA_BUILTIN (bclri_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), 16009 MSA_BUILTIN_PURE (bclri_w, MIPS_UV4SI_FTYPE_UV4SI_UQI),
15932 MSA_BUILTIN (bclri_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), 16010 MSA_BUILTIN_PURE (bclri_d, MIPS_UV2DI_FTYPE_UV2DI_UQI),
15933 MSA_BUILTIN (bset_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16011 MSA_BUILTIN_PURE (bset_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
15934 MSA_BUILTIN (bset_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16012 MSA_BUILTIN_PURE (bset_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
15935 MSA_BUILTIN (bset_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16013 MSA_BUILTIN_PURE (bset_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
15936 MSA_BUILTIN (bset_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16014 MSA_BUILTIN_PURE (bset_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
15937 MSA_BUILTIN (bseti_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16015 MSA_BUILTIN_PURE (bseti_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
15938 MSA_BUILTIN (bseti_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), 16016 MSA_BUILTIN_PURE (bseti_h, MIPS_UV8HI_FTYPE_UV8HI_UQI),
15939 MSA_BUILTIN (bseti_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), 16017 MSA_BUILTIN_PURE (bseti_w, MIPS_UV4SI_FTYPE_UV4SI_UQI),
15940 MSA_BUILTIN (bseti_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), 16018 MSA_BUILTIN_PURE (bseti_d, MIPS_UV2DI_FTYPE_UV2DI_UQI),
15941 MSA_BUILTIN (bneg_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16019 MSA_BUILTIN_PURE (bneg_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
15942 MSA_BUILTIN (bneg_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16020 MSA_BUILTIN_PURE (bneg_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
15943 MSA_BUILTIN (bneg_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16021 MSA_BUILTIN_PURE (bneg_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
15944 MSA_BUILTIN (bneg_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16022 MSA_BUILTIN_PURE (bneg_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
15945 MSA_BUILTIN (bnegi_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16023 MSA_BUILTIN_PURE (bnegi_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
15946 MSA_BUILTIN (bnegi_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), 16024 MSA_BUILTIN_PURE (bnegi_h, MIPS_UV8HI_FTYPE_UV8HI_UQI),
15947 MSA_BUILTIN (bnegi_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), 16025 MSA_BUILTIN_PURE (bnegi_w, MIPS_UV4SI_FTYPE_UV4SI_UQI),
15948 MSA_BUILTIN (bnegi_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), 16026 MSA_BUILTIN_PURE (bnegi_d, MIPS_UV2DI_FTYPE_UV2DI_UQI),
15949 MSA_BUILTIN (binsl_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), 16027 MSA_BUILTIN_PURE (binsl_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI),
15950 MSA_BUILTIN (binsl_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UV8HI), 16028 MSA_BUILTIN_PURE (binsl_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UV8HI),
15951 MSA_BUILTIN (binsl_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UV4SI), 16029 MSA_BUILTIN_PURE (binsl_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UV4SI),
15952 MSA_BUILTIN (binsl_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UV2DI), 16030 MSA_BUILTIN_PURE (binsl_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UV2DI),
15953 MSA_BUILTIN (binsli_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), 16031 MSA_BUILTIN_PURE (binsli_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI),
15954 MSA_BUILTIN (binsli_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UQI), 16032 MSA_BUILTIN_PURE (binsli_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UQI),
15955 MSA_BUILTIN (binsli_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UQI), 16033 MSA_BUILTIN_PURE (binsli_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UQI),
15956 MSA_BUILTIN (binsli_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UQI), 16034 MSA_BUILTIN_PURE (binsli_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UQI),
15957 MSA_BUILTIN (binsr_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), 16035 MSA_BUILTIN_PURE (binsr_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI),
15958 MSA_BUILTIN (binsr_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UV8HI), 16036 MSA_BUILTIN_PURE (binsr_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UV8HI),
15959 MSA_BUILTIN (binsr_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UV4SI), 16037 MSA_BUILTIN_PURE (binsr_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UV4SI),
15960 MSA_BUILTIN (binsr_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UV2DI), 16038 MSA_BUILTIN_PURE (binsr_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UV2DI),
15961 MSA_BUILTIN (binsri_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), 16039 MSA_BUILTIN_PURE (binsri_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI),
15962 MSA_BUILTIN (binsri_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UQI), 16040 MSA_BUILTIN_PURE (binsri_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI_UQI),
15963 MSA_BUILTIN (binsri_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UQI), 16041 MSA_BUILTIN_PURE (binsri_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI_UQI),
15964 MSA_BUILTIN (binsri_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UQI), 16042 MSA_BUILTIN_PURE (binsri_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI_UQI),
15965 MSA_BUILTIN (addv_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16043 MSA_BUILTIN_PURE (addv_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
15966 MSA_BUILTIN (addv_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16044 MSA_BUILTIN_PURE (addv_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
15967 MSA_BUILTIN (addv_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16045 MSA_BUILTIN_PURE (addv_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
15968 MSA_BUILTIN (addv_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16046 MSA_BUILTIN_PURE (addv_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
15969 MSA_BUILTIN (addvi_b, MIPS_V16QI_FTYPE_V16QI_UQI), 16047 MSA_BUILTIN_PURE (addvi_b, MIPS_V16QI_FTYPE_V16QI_UQI),
15970 MSA_BUILTIN (addvi_h, MIPS_V8HI_FTYPE_V8HI_UQI), 16048 MSA_BUILTIN_PURE (addvi_h, MIPS_V8HI_FTYPE_V8HI_UQI),
15971 MSA_BUILTIN (addvi_w, MIPS_V4SI_FTYPE_V4SI_UQI), 16049 MSA_BUILTIN_PURE (addvi_w, MIPS_V4SI_FTYPE_V4SI_UQI),
15972 MSA_BUILTIN (addvi_d, MIPS_V2DI_FTYPE_V2DI_UQI), 16050 MSA_BUILTIN_PURE (addvi_d, MIPS_V2DI_FTYPE_V2DI_UQI),
15973 MSA_BUILTIN (subv_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16051 MSA_BUILTIN_PURE (subv_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
15974 MSA_BUILTIN (subv_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16052 MSA_BUILTIN_PURE (subv_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
15975 MSA_BUILTIN (subv_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16053 MSA_BUILTIN_PURE (subv_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
15976 MSA_BUILTIN (subv_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16054 MSA_BUILTIN_PURE (subv_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
15977 MSA_BUILTIN (subvi_b, MIPS_V16QI_FTYPE_V16QI_UQI), 16055 MSA_BUILTIN_PURE (subvi_b, MIPS_V16QI_FTYPE_V16QI_UQI),
15978 MSA_BUILTIN (subvi_h, MIPS_V8HI_FTYPE_V8HI_UQI), 16056 MSA_BUILTIN_PURE (subvi_h, MIPS_V8HI_FTYPE_V8HI_UQI),
15979 MSA_BUILTIN (subvi_w, MIPS_V4SI_FTYPE_V4SI_UQI), 16057 MSA_BUILTIN_PURE (subvi_w, MIPS_V4SI_FTYPE_V4SI_UQI),
15980 MSA_BUILTIN (subvi_d, MIPS_V2DI_FTYPE_V2DI_UQI), 16058 MSA_BUILTIN_PURE (subvi_d, MIPS_V2DI_FTYPE_V2DI_UQI),
15981 MSA_BUILTIN (max_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16059 MSA_BUILTIN_PURE (max_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
15982 MSA_BUILTIN (max_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16060 MSA_BUILTIN_PURE (max_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
15983 MSA_BUILTIN (max_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16061 MSA_BUILTIN_PURE (max_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
15984 MSA_BUILTIN (max_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16062 MSA_BUILTIN_PURE (max_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
15985 MSA_BUILTIN (maxi_s_b, MIPS_V16QI_FTYPE_V16QI_QI), 16063 MSA_BUILTIN_PURE (maxi_s_b, MIPS_V16QI_FTYPE_V16QI_QI),
15986 MSA_BUILTIN (maxi_s_h, MIPS_V8HI_FTYPE_V8HI_QI), 16064 MSA_BUILTIN_PURE (maxi_s_h, MIPS_V8HI_FTYPE_V8HI_QI),
15987 MSA_BUILTIN (maxi_s_w, MIPS_V4SI_FTYPE_V4SI_QI), 16065 MSA_BUILTIN_PURE (maxi_s_w, MIPS_V4SI_FTYPE_V4SI_QI),
15988 MSA_BUILTIN (maxi_s_d, MIPS_V2DI_FTYPE_V2DI_QI), 16066 MSA_BUILTIN_PURE (maxi_s_d, MIPS_V2DI_FTYPE_V2DI_QI),
15989 MSA_BUILTIN (max_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16067 MSA_BUILTIN_PURE (max_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
15990 MSA_BUILTIN (max_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16068 MSA_BUILTIN_PURE (max_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
15991 MSA_BUILTIN (max_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16069 MSA_BUILTIN_PURE (max_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
15992 MSA_BUILTIN (max_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16070 MSA_BUILTIN_PURE (max_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
15993 MSA_BUILTIN (maxi_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16071 MSA_BUILTIN_PURE (maxi_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
15994 MSA_BUILTIN (maxi_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), 16072 MSA_BUILTIN_PURE (maxi_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI),
15995 MSA_BUILTIN (maxi_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), 16073 MSA_BUILTIN_PURE (maxi_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI),
15996 MSA_BUILTIN (maxi_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), 16074 MSA_BUILTIN_PURE (maxi_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI),
15997 MSA_BUILTIN (min_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16075 MSA_BUILTIN_PURE (min_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
15998 MSA_BUILTIN (min_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16076 MSA_BUILTIN_PURE (min_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
15999 MSA_BUILTIN (min_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16077 MSA_BUILTIN_PURE (min_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16000 MSA_BUILTIN (min_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16078 MSA_BUILTIN_PURE (min_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16001 MSA_BUILTIN (mini_s_b, MIPS_V16QI_FTYPE_V16QI_QI), 16079 MSA_BUILTIN_PURE (mini_s_b, MIPS_V16QI_FTYPE_V16QI_QI),
16002 MSA_BUILTIN (mini_s_h, MIPS_V8HI_FTYPE_V8HI_QI), 16080 MSA_BUILTIN_PURE (mini_s_h, MIPS_V8HI_FTYPE_V8HI_QI),
16003 MSA_BUILTIN (mini_s_w, MIPS_V4SI_FTYPE_V4SI_QI), 16081 MSA_BUILTIN_PURE (mini_s_w, MIPS_V4SI_FTYPE_V4SI_QI),
16004 MSA_BUILTIN (mini_s_d, MIPS_V2DI_FTYPE_V2DI_QI), 16082 MSA_BUILTIN_PURE (mini_s_d, MIPS_V2DI_FTYPE_V2DI_QI),
16005 MSA_BUILTIN (min_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16083 MSA_BUILTIN_PURE (min_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16006 MSA_BUILTIN (min_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16084 MSA_BUILTIN_PURE (min_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
16007 MSA_BUILTIN (min_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16085 MSA_BUILTIN_PURE (min_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
16008 MSA_BUILTIN (min_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16086 MSA_BUILTIN_PURE (min_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
16009 MSA_BUILTIN (mini_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16087 MSA_BUILTIN_PURE (mini_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
16010 MSA_BUILTIN (mini_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), 16088 MSA_BUILTIN_PURE (mini_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI),
16011 MSA_BUILTIN (mini_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), 16089 MSA_BUILTIN_PURE (mini_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI),
16012 MSA_BUILTIN (mini_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), 16090 MSA_BUILTIN_PURE (mini_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI),
16013 MSA_BUILTIN (max_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16091 MSA_BUILTIN_PURE (max_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16014 MSA_BUILTIN (max_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16092 MSA_BUILTIN_PURE (max_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16015 MSA_BUILTIN (max_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16093 MSA_BUILTIN_PURE (max_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16016 MSA_BUILTIN (max_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16094 MSA_BUILTIN_PURE (max_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16017 MSA_BUILTIN (min_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16095 MSA_BUILTIN_PURE (min_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16018 MSA_BUILTIN (min_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16096 MSA_BUILTIN_PURE (min_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16019 MSA_BUILTIN (min_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16097 MSA_BUILTIN_PURE (min_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16020 MSA_BUILTIN (min_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16098 MSA_BUILTIN_PURE (min_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16021 MSA_BUILTIN (ceq_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16099 MSA_BUILTIN (ceq_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16022 MSA_BUILTIN (ceq_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16100 MSA_BUILTIN (ceq_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16023 MSA_BUILTIN (ceq_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16101 MSA_BUILTIN (ceq_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16024 MSA_BUILTIN (ceq_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16102 MSA_BUILTIN (ceq_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16025 MSA_BUILTIN (ceqi_b, MIPS_V16QI_FTYPE_V16QI_QI), 16103 MSA_BUILTIN (ceqi_b, MIPS_V16QI_FTYPE_V16QI_QI),
16064 MSA_BUILTIN (ld_d, MIPS_V2DI_FTYPE_CVPOINTER_SI), 16142 MSA_BUILTIN (ld_d, MIPS_V2DI_FTYPE_CVPOINTER_SI),
16065 MSA_NO_TARGET_BUILTIN (st_b, MIPS_VOID_FTYPE_V16QI_CVPOINTER_SI), 16143 MSA_NO_TARGET_BUILTIN (st_b, MIPS_VOID_FTYPE_V16QI_CVPOINTER_SI),
16066 MSA_NO_TARGET_BUILTIN (st_h, MIPS_VOID_FTYPE_V8HI_CVPOINTER_SI), 16144 MSA_NO_TARGET_BUILTIN (st_h, MIPS_VOID_FTYPE_V8HI_CVPOINTER_SI),
16067 MSA_NO_TARGET_BUILTIN (st_w, MIPS_VOID_FTYPE_V4SI_CVPOINTER_SI), 16145 MSA_NO_TARGET_BUILTIN (st_w, MIPS_VOID_FTYPE_V4SI_CVPOINTER_SI),
16068 MSA_NO_TARGET_BUILTIN (st_d, MIPS_VOID_FTYPE_V2DI_CVPOINTER_SI), 16146 MSA_NO_TARGET_BUILTIN (st_d, MIPS_VOID_FTYPE_V2DI_CVPOINTER_SI),
16069 MSA_BUILTIN (sat_s_b, MIPS_V16QI_FTYPE_V16QI_UQI), 16147 MSA_BUILTIN_PURE (sat_s_b, MIPS_V16QI_FTYPE_V16QI_UQI),
16070 MSA_BUILTIN (sat_s_h, MIPS_V8HI_FTYPE_V8HI_UQI), 16148 MSA_BUILTIN_PURE (sat_s_h, MIPS_V8HI_FTYPE_V8HI_UQI),
16071 MSA_BUILTIN (sat_s_w, MIPS_V4SI_FTYPE_V4SI_UQI), 16149 MSA_BUILTIN_PURE (sat_s_w, MIPS_V4SI_FTYPE_V4SI_UQI),
16072 MSA_BUILTIN (sat_s_d, MIPS_V2DI_FTYPE_V2DI_UQI), 16150 MSA_BUILTIN_PURE (sat_s_d, MIPS_V2DI_FTYPE_V2DI_UQI),
16073 MSA_BUILTIN (sat_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16151 MSA_BUILTIN_PURE (sat_u_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
16074 MSA_BUILTIN (sat_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI), 16152 MSA_BUILTIN_PURE (sat_u_h, MIPS_UV8HI_FTYPE_UV8HI_UQI),
16075 MSA_BUILTIN (sat_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI), 16153 MSA_BUILTIN_PURE (sat_u_w, MIPS_UV4SI_FTYPE_UV4SI_UQI),
16076 MSA_BUILTIN (sat_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI), 16154 MSA_BUILTIN_PURE (sat_u_d, MIPS_UV2DI_FTYPE_UV2DI_UQI),
16077 MSA_BUILTIN (add_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16155 MSA_BUILTIN_PURE (add_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16078 MSA_BUILTIN (add_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16156 MSA_BUILTIN_PURE (add_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16079 MSA_BUILTIN (add_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16157 MSA_BUILTIN_PURE (add_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16080 MSA_BUILTIN (add_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16158 MSA_BUILTIN_PURE (add_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16081 MSA_BUILTIN (adds_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16159 MSA_BUILTIN_PURE (adds_a_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16082 MSA_BUILTIN (adds_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16160 MSA_BUILTIN_PURE (adds_a_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16083 MSA_BUILTIN (adds_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16161 MSA_BUILTIN_PURE (adds_a_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16084 MSA_BUILTIN (adds_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16162 MSA_BUILTIN_PURE (adds_a_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16085 MSA_BUILTIN (adds_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16163 MSA_BUILTIN_PURE (adds_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16086 MSA_BUILTIN (adds_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16164 MSA_BUILTIN_PURE (adds_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16087 MSA_BUILTIN (adds_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16165 MSA_BUILTIN_PURE (adds_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16088 MSA_BUILTIN (adds_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16166 MSA_BUILTIN_PURE (adds_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16089 MSA_BUILTIN (adds_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16167 MSA_BUILTIN_PURE (adds_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16090 MSA_BUILTIN (adds_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16168 MSA_BUILTIN_PURE (adds_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
16091 MSA_BUILTIN (adds_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16169 MSA_BUILTIN_PURE (adds_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
16092 MSA_BUILTIN (adds_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16170 MSA_BUILTIN_PURE (adds_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
16093 MSA_BUILTIN (ave_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16171 MSA_BUILTIN_PURE (ave_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16094 MSA_BUILTIN (ave_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16172 MSA_BUILTIN_PURE (ave_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16095 MSA_BUILTIN (ave_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16173 MSA_BUILTIN_PURE (ave_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16096 MSA_BUILTIN (ave_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16174 MSA_BUILTIN_PURE (ave_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16097 MSA_BUILTIN (ave_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16175 MSA_BUILTIN_PURE (ave_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16098 MSA_BUILTIN (ave_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16176 MSA_BUILTIN_PURE (ave_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
16099 MSA_BUILTIN (ave_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16177 MSA_BUILTIN_PURE (ave_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
16100 MSA_BUILTIN (ave_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16178 MSA_BUILTIN_PURE (ave_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
16101 MSA_BUILTIN (aver_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16179 MSA_BUILTIN_PURE (aver_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16102 MSA_BUILTIN (aver_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16180 MSA_BUILTIN_PURE (aver_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16103 MSA_BUILTIN (aver_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16181 MSA_BUILTIN_PURE (aver_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16104 MSA_BUILTIN (aver_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16182 MSA_BUILTIN_PURE (aver_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16105 MSA_BUILTIN (aver_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16183 MSA_BUILTIN_PURE (aver_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16106 MSA_BUILTIN (aver_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16184 MSA_BUILTIN_PURE (aver_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
16107 MSA_BUILTIN (aver_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16185 MSA_BUILTIN_PURE (aver_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
16108 MSA_BUILTIN (aver_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16186 MSA_BUILTIN_PURE (aver_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
16109 MSA_BUILTIN (subs_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16187 MSA_BUILTIN_PURE (subs_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16110 MSA_BUILTIN (subs_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16188 MSA_BUILTIN_PURE (subs_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16111 MSA_BUILTIN (subs_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16189 MSA_BUILTIN_PURE (subs_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16112 MSA_BUILTIN (subs_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16190 MSA_BUILTIN_PURE (subs_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16113 MSA_BUILTIN (subs_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16191 MSA_BUILTIN_PURE (subs_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16114 MSA_BUILTIN (subs_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16192 MSA_BUILTIN_PURE (subs_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
16115 MSA_BUILTIN (subs_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16193 MSA_BUILTIN_PURE (subs_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
16116 MSA_BUILTIN (subs_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16194 MSA_BUILTIN_PURE (subs_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
16117 MSA_BUILTIN (subsuu_s_b, MIPS_V16QI_FTYPE_UV16QI_UV16QI), 16195 MSA_BUILTIN_PURE (subsuu_s_b, MIPS_V16QI_FTYPE_UV16QI_UV16QI),
16118 MSA_BUILTIN (subsuu_s_h, MIPS_V8HI_FTYPE_UV8HI_UV8HI), 16196 MSA_BUILTIN_PURE (subsuu_s_h, MIPS_V8HI_FTYPE_UV8HI_UV8HI),
16119 MSA_BUILTIN (subsuu_s_w, MIPS_V4SI_FTYPE_UV4SI_UV4SI), 16197 MSA_BUILTIN_PURE (subsuu_s_w, MIPS_V4SI_FTYPE_UV4SI_UV4SI),
16120 MSA_BUILTIN (subsuu_s_d, MIPS_V2DI_FTYPE_UV2DI_UV2DI), 16198 MSA_BUILTIN_PURE (subsuu_s_d, MIPS_V2DI_FTYPE_UV2DI_UV2DI),
16121 MSA_BUILTIN (subsus_u_b, MIPS_UV16QI_FTYPE_UV16QI_V16QI), 16199 MSA_BUILTIN_PURE (subsus_u_b, MIPS_UV16QI_FTYPE_UV16QI_V16QI),
16122 MSA_BUILTIN (subsus_u_h, MIPS_UV8HI_FTYPE_UV8HI_V8HI), 16200 MSA_BUILTIN_PURE (subsus_u_h, MIPS_UV8HI_FTYPE_UV8HI_V8HI),
16123 MSA_BUILTIN (subsus_u_w, MIPS_UV4SI_FTYPE_UV4SI_V4SI), 16201 MSA_BUILTIN_PURE (subsus_u_w, MIPS_UV4SI_FTYPE_UV4SI_V4SI),
16124 MSA_BUILTIN (subsus_u_d, MIPS_UV2DI_FTYPE_UV2DI_V2DI), 16202 MSA_BUILTIN_PURE (subsus_u_d, MIPS_UV2DI_FTYPE_UV2DI_V2DI),
16125 MSA_BUILTIN (asub_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16203 MSA_BUILTIN_PURE (asub_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16126 MSA_BUILTIN (asub_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16204 MSA_BUILTIN_PURE (asub_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16127 MSA_BUILTIN (asub_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16205 MSA_BUILTIN_PURE (asub_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16128 MSA_BUILTIN (asub_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16206 MSA_BUILTIN_PURE (asub_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16129 MSA_BUILTIN (asub_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16207 MSA_BUILTIN_PURE (asub_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16130 MSA_BUILTIN (asub_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16208 MSA_BUILTIN_PURE (asub_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
16131 MSA_BUILTIN (asub_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16209 MSA_BUILTIN_PURE (asub_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
16132 MSA_BUILTIN (asub_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16210 MSA_BUILTIN_PURE (asub_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
16133 MSA_BUILTIN (mulv_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16211 MSA_BUILTIN_PURE (mulv_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16134 MSA_BUILTIN (mulv_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16212 MSA_BUILTIN_PURE (mulv_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16135 MSA_BUILTIN (mulv_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16213 MSA_BUILTIN_PURE (mulv_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16136 MSA_BUILTIN (mulv_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16214 MSA_BUILTIN_PURE (mulv_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16137 MSA_BUILTIN (maddv_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI), 16215 MSA_BUILTIN_PURE (maddv_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI),
16138 MSA_BUILTIN (maddv_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), 16216 MSA_BUILTIN_PURE (maddv_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI),
16139 MSA_BUILTIN (maddv_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), 16217 MSA_BUILTIN_PURE (maddv_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI),
16140 MSA_BUILTIN (maddv_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI), 16218 MSA_BUILTIN_PURE (maddv_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI),
16141 MSA_BUILTIN (msubv_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI), 16219 MSA_BUILTIN_PURE (msubv_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI),
16142 MSA_BUILTIN (msubv_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), 16220 MSA_BUILTIN_PURE (msubv_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI),
16143 MSA_BUILTIN (msubv_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), 16221 MSA_BUILTIN_PURE (msubv_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI),
16144 MSA_BUILTIN (msubv_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI), 16222 MSA_BUILTIN_PURE (msubv_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI),
16145 MSA_BUILTIN (div_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16223 MSA_BUILTIN_PURE (div_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16146 MSA_BUILTIN (div_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16224 MSA_BUILTIN_PURE (div_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16147 MSA_BUILTIN (div_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16225 MSA_BUILTIN_PURE (div_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16148 MSA_BUILTIN (div_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16226 MSA_BUILTIN_PURE (div_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16149 MSA_BUILTIN (div_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16227 MSA_BUILTIN_PURE (div_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16150 MSA_BUILTIN (div_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16228 MSA_BUILTIN_PURE (div_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
16151 MSA_BUILTIN (div_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16229 MSA_BUILTIN_PURE (div_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
16152 MSA_BUILTIN (div_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16230 MSA_BUILTIN_PURE (div_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
16153 MSA_BUILTIN (hadd_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI), 16231 MSA_BUILTIN_PURE (hadd_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI),
16154 MSA_BUILTIN (hadd_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI), 16232 MSA_BUILTIN_PURE (hadd_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI),
16155 MSA_BUILTIN (hadd_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI), 16233 MSA_BUILTIN_PURE (hadd_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI),
16156 MSA_BUILTIN (hadd_u_h, MIPS_UV8HI_FTYPE_UV16QI_UV16QI), 16234 MSA_BUILTIN_PURE (hadd_u_h, MIPS_UV8HI_FTYPE_UV16QI_UV16QI),
16157 MSA_BUILTIN (hadd_u_w, MIPS_UV4SI_FTYPE_UV8HI_UV8HI), 16235 MSA_BUILTIN_PURE (hadd_u_w, MIPS_UV4SI_FTYPE_UV8HI_UV8HI),
16158 MSA_BUILTIN (hadd_u_d, MIPS_UV2DI_FTYPE_UV4SI_UV4SI), 16236 MSA_BUILTIN_PURE (hadd_u_d, MIPS_UV2DI_FTYPE_UV4SI_UV4SI),
16159 MSA_BUILTIN (hsub_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI), 16237 MSA_BUILTIN_PURE (hsub_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI),
16160 MSA_BUILTIN (hsub_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI), 16238 MSA_BUILTIN_PURE (hsub_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI),
16161 MSA_BUILTIN (hsub_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI), 16239 MSA_BUILTIN_PURE (hsub_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI),
16162 MSA_BUILTIN (hsub_u_h, MIPS_V8HI_FTYPE_UV16QI_UV16QI), 16240 MSA_BUILTIN_PURE (hsub_u_h, MIPS_V8HI_FTYPE_UV16QI_UV16QI),
16163 MSA_BUILTIN (hsub_u_w, MIPS_V4SI_FTYPE_UV8HI_UV8HI), 16241 MSA_BUILTIN_PURE (hsub_u_w, MIPS_V4SI_FTYPE_UV8HI_UV8HI),
16164 MSA_BUILTIN (hsub_u_d, MIPS_V2DI_FTYPE_UV4SI_UV4SI), 16242 MSA_BUILTIN_PURE (hsub_u_d, MIPS_V2DI_FTYPE_UV4SI_UV4SI),
16165 MSA_BUILTIN (mod_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16243 MSA_BUILTIN_PURE (mod_s_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16166 MSA_BUILTIN (mod_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16244 MSA_BUILTIN_PURE (mod_s_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16167 MSA_BUILTIN (mod_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16245 MSA_BUILTIN_PURE (mod_s_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16168 MSA_BUILTIN (mod_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16246 MSA_BUILTIN_PURE (mod_s_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16169 MSA_BUILTIN (mod_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16247 MSA_BUILTIN_PURE (mod_u_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16170 MSA_BUILTIN (mod_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI), 16248 MSA_BUILTIN_PURE (mod_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV8HI),
16171 MSA_BUILTIN (mod_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI), 16249 MSA_BUILTIN_PURE (mod_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV4SI),
16172 MSA_BUILTIN (mod_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI), 16250 MSA_BUILTIN_PURE (mod_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV2DI),
16173 MSA_BUILTIN (dotp_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI), 16251 MSA_BUILTIN_PURE (dotp_s_h, MIPS_V8HI_FTYPE_V16QI_V16QI),
16174 MSA_BUILTIN (dotp_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI), 16252 MSA_BUILTIN_PURE (dotp_s_w, MIPS_V4SI_FTYPE_V8HI_V8HI),
16175 MSA_BUILTIN (dotp_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI), 16253 MSA_BUILTIN_PURE (dotp_s_d, MIPS_V2DI_FTYPE_V4SI_V4SI),
16176 MSA_BUILTIN (dotp_u_h, MIPS_UV8HI_FTYPE_UV16QI_UV16QI), 16254 MSA_BUILTIN_PURE (dotp_u_h, MIPS_UV8HI_FTYPE_UV16QI_UV16QI),
16177 MSA_BUILTIN (dotp_u_w, MIPS_UV4SI_FTYPE_UV8HI_UV8HI), 16255 MSA_BUILTIN_PURE (dotp_u_w, MIPS_UV4SI_FTYPE_UV8HI_UV8HI),
16178 MSA_BUILTIN (dotp_u_d, MIPS_UV2DI_FTYPE_UV4SI_UV4SI), 16256 MSA_BUILTIN_PURE (dotp_u_d, MIPS_UV2DI_FTYPE_UV4SI_UV4SI),
16179 MSA_BUILTIN (dpadd_s_h, MIPS_V8HI_FTYPE_V8HI_V16QI_V16QI), 16257 MSA_BUILTIN_PURE (dpadd_s_h, MIPS_V8HI_FTYPE_V8HI_V16QI_V16QI),
16180 MSA_BUILTIN (dpadd_s_w, MIPS_V4SI_FTYPE_V4SI_V8HI_V8HI), 16258 MSA_BUILTIN_PURE (dpadd_s_w, MIPS_V4SI_FTYPE_V4SI_V8HI_V8HI),
16181 MSA_BUILTIN (dpadd_s_d, MIPS_V2DI_FTYPE_V2DI_V4SI_V4SI), 16259 MSA_BUILTIN_PURE (dpadd_s_d, MIPS_V2DI_FTYPE_V2DI_V4SI_V4SI),
16182 MSA_BUILTIN (dpadd_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV16QI_UV16QI), 16260 MSA_BUILTIN_PURE (dpadd_u_h, MIPS_UV8HI_FTYPE_UV8HI_UV16QI_UV16QI),
16183 MSA_BUILTIN (dpadd_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV8HI_UV8HI), 16261 MSA_BUILTIN_PURE (dpadd_u_w, MIPS_UV4SI_FTYPE_UV4SI_UV8HI_UV8HI),
16184 MSA_BUILTIN (dpadd_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV4SI_UV4SI), 16262 MSA_BUILTIN_PURE (dpadd_u_d, MIPS_UV2DI_FTYPE_UV2DI_UV4SI_UV4SI),
16185 MSA_BUILTIN (dpsub_s_h, MIPS_V8HI_FTYPE_V8HI_V16QI_V16QI), 16263 MSA_BUILTIN_PURE (dpsub_s_h, MIPS_V8HI_FTYPE_V8HI_V16QI_V16QI),
16186 MSA_BUILTIN (dpsub_s_w, MIPS_V4SI_FTYPE_V4SI_V8HI_V8HI), 16264 MSA_BUILTIN_PURE (dpsub_s_w, MIPS_V4SI_FTYPE_V4SI_V8HI_V8HI),
16187 MSA_BUILTIN (dpsub_s_d, MIPS_V2DI_FTYPE_V2DI_V4SI_V4SI), 16265 MSA_BUILTIN_PURE (dpsub_s_d, MIPS_V2DI_FTYPE_V2DI_V4SI_V4SI),
16188 MSA_BUILTIN (dpsub_u_h, MIPS_V8HI_FTYPE_V8HI_UV16QI_UV16QI), 16266 MSA_BUILTIN_PURE (dpsub_u_h, MIPS_V8HI_FTYPE_V8HI_UV16QI_UV16QI),
16189 MSA_BUILTIN (dpsub_u_w, MIPS_V4SI_FTYPE_V4SI_UV8HI_UV8HI), 16267 MSA_BUILTIN_PURE (dpsub_u_w, MIPS_V4SI_FTYPE_V4SI_UV8HI_UV8HI),
16190 MSA_BUILTIN (dpsub_u_d, MIPS_V2DI_FTYPE_V2DI_UV4SI_UV4SI), 16268 MSA_BUILTIN_PURE (dpsub_u_d, MIPS_V2DI_FTYPE_V2DI_UV4SI_UV4SI),
16191 MSA_BUILTIN (sld_b, MIPS_V16QI_FTYPE_V16QI_V16QI_SI), 16269 MSA_BUILTIN_PURE (sld_b, MIPS_V16QI_FTYPE_V16QI_V16QI_SI),
16192 MSA_BUILTIN (sld_h, MIPS_V8HI_FTYPE_V8HI_V8HI_SI), 16270 MSA_BUILTIN_PURE (sld_h, MIPS_V8HI_FTYPE_V8HI_V8HI_SI),
16193 MSA_BUILTIN (sld_w, MIPS_V4SI_FTYPE_V4SI_V4SI_SI), 16271 MSA_BUILTIN_PURE (sld_w, MIPS_V4SI_FTYPE_V4SI_V4SI_SI),
16194 MSA_BUILTIN (sld_d, MIPS_V2DI_FTYPE_V2DI_V2DI_SI), 16272 MSA_BUILTIN_PURE (sld_d, MIPS_V2DI_FTYPE_V2DI_V2DI_SI),
16195 MSA_BUILTIN (sldi_b, MIPS_V16QI_FTYPE_V16QI_V16QI_UQI), 16273 MSA_BUILTIN_PURE (sldi_b, MIPS_V16QI_FTYPE_V16QI_V16QI_UQI),
16196 MSA_BUILTIN (sldi_h, MIPS_V8HI_FTYPE_V8HI_V8HI_UQI), 16274 MSA_BUILTIN_PURE (sldi_h, MIPS_V8HI_FTYPE_V8HI_V8HI_UQI),
16197 MSA_BUILTIN (sldi_w, MIPS_V4SI_FTYPE_V4SI_V4SI_UQI), 16275 MSA_BUILTIN_PURE (sldi_w, MIPS_V4SI_FTYPE_V4SI_V4SI_UQI),
16198 MSA_BUILTIN (sldi_d, MIPS_V2DI_FTYPE_V2DI_V2DI_UQI), 16276 MSA_BUILTIN_PURE (sldi_d, MIPS_V2DI_FTYPE_V2DI_V2DI_UQI),
16199 MSA_BUILTIN (splat_b, MIPS_V16QI_FTYPE_V16QI_SI), 16277 MSA_BUILTIN_PURE (splat_b, MIPS_V16QI_FTYPE_V16QI_SI),
16200 MSA_BUILTIN (splat_h, MIPS_V8HI_FTYPE_V8HI_SI), 16278 MSA_BUILTIN_PURE (splat_h, MIPS_V8HI_FTYPE_V8HI_SI),
16201 MSA_BUILTIN (splat_w, MIPS_V4SI_FTYPE_V4SI_SI), 16279 MSA_BUILTIN_PURE (splat_w, MIPS_V4SI_FTYPE_V4SI_SI),
16202 MSA_BUILTIN (splat_d, MIPS_V2DI_FTYPE_V2DI_SI), 16280 MSA_BUILTIN_PURE (splat_d, MIPS_V2DI_FTYPE_V2DI_SI),
16203 MSA_BUILTIN (splati_b, MIPS_V16QI_FTYPE_V16QI_UQI), 16281 MSA_BUILTIN_PURE (splati_b, MIPS_V16QI_FTYPE_V16QI_UQI),
16204 MSA_BUILTIN (splati_h, MIPS_V8HI_FTYPE_V8HI_UQI), 16282 MSA_BUILTIN_PURE (splati_h, MIPS_V8HI_FTYPE_V8HI_UQI),
16205 MSA_BUILTIN (splati_w, MIPS_V4SI_FTYPE_V4SI_UQI), 16283 MSA_BUILTIN_PURE (splati_w, MIPS_V4SI_FTYPE_V4SI_UQI),
16206 MSA_BUILTIN (splati_d, MIPS_V2DI_FTYPE_V2DI_UQI), 16284 MSA_BUILTIN_PURE (splati_d, MIPS_V2DI_FTYPE_V2DI_UQI),
16207 MSA_BUILTIN (pckev_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16285 MSA_BUILTIN_PURE (pckev_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16208 MSA_BUILTIN (pckev_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16286 MSA_BUILTIN_PURE (pckev_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16209 MSA_BUILTIN (pckev_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16287 MSA_BUILTIN_PURE (pckev_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16210 MSA_BUILTIN (pckev_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16288 MSA_BUILTIN_PURE (pckev_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16211 MSA_BUILTIN (pckod_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16289 MSA_BUILTIN_PURE (pckod_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16212 MSA_BUILTIN (pckod_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16290 MSA_BUILTIN_PURE (pckod_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16213 MSA_BUILTIN (pckod_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16291 MSA_BUILTIN_PURE (pckod_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16214 MSA_BUILTIN (pckod_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16292 MSA_BUILTIN_PURE (pckod_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16215 MSA_BUILTIN (ilvl_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16293 MSA_BUILTIN_PURE (ilvl_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16216 MSA_BUILTIN (ilvl_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16294 MSA_BUILTIN_PURE (ilvl_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16217 MSA_BUILTIN (ilvl_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16295 MSA_BUILTIN_PURE (ilvl_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16218 MSA_BUILTIN (ilvl_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16296 MSA_BUILTIN_PURE (ilvl_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16219 MSA_BUILTIN (ilvr_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16297 MSA_BUILTIN_PURE (ilvr_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16220 MSA_BUILTIN (ilvr_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16298 MSA_BUILTIN_PURE (ilvr_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16221 MSA_BUILTIN (ilvr_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16299 MSA_BUILTIN_PURE (ilvr_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16222 MSA_BUILTIN (ilvr_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16300 MSA_BUILTIN_PURE (ilvr_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16223 MSA_BUILTIN (ilvev_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16301 MSA_BUILTIN_PURE (ilvev_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16224 MSA_BUILTIN (ilvev_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16302 MSA_BUILTIN_PURE (ilvev_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16225 MSA_BUILTIN (ilvev_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16303 MSA_BUILTIN_PURE (ilvev_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16226 MSA_BUILTIN (ilvev_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16304 MSA_BUILTIN_PURE (ilvev_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16227 MSA_BUILTIN (ilvod_b, MIPS_V16QI_FTYPE_V16QI_V16QI), 16305 MSA_BUILTIN_PURE (ilvod_b, MIPS_V16QI_FTYPE_V16QI_V16QI),
16228 MSA_BUILTIN (ilvod_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16306 MSA_BUILTIN_PURE (ilvod_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16229 MSA_BUILTIN (ilvod_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16307 MSA_BUILTIN_PURE (ilvod_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16230 MSA_BUILTIN (ilvod_d, MIPS_V2DI_FTYPE_V2DI_V2DI), 16308 MSA_BUILTIN_PURE (ilvod_d, MIPS_V2DI_FTYPE_V2DI_V2DI),
16231 MSA_BUILTIN (vshf_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI), 16309 MSA_BUILTIN_PURE (vshf_b, MIPS_V16QI_FTYPE_V16QI_V16QI_V16QI),
16232 MSA_BUILTIN (vshf_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), 16310 MSA_BUILTIN_PURE (vshf_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI),
16233 MSA_BUILTIN (vshf_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), 16311 MSA_BUILTIN_PURE (vshf_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI),
16234 MSA_BUILTIN (vshf_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI), 16312 MSA_BUILTIN_PURE (vshf_d, MIPS_V2DI_FTYPE_V2DI_V2DI_V2DI),
16235 MSA_BUILTIN (and_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16313 MSA_BUILTIN_PURE (and_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16236 MSA_BUILTIN (andi_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16314 MSA_BUILTIN_PURE (andi_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
16237 MSA_BUILTIN (or_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16315 MSA_BUILTIN_PURE (or_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16238 MSA_BUILTIN (ori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16316 MSA_BUILTIN_PURE (ori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
16239 MSA_BUILTIN (nor_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16317 MSA_BUILTIN_PURE (nor_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16240 MSA_BUILTIN (nori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16318 MSA_BUILTIN_PURE (nori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
16241 MSA_BUILTIN (xor_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI), 16319 MSA_BUILTIN_PURE (xor_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI),
16242 MSA_BUILTIN (xori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI), 16320 MSA_BUILTIN_PURE (xori_b, MIPS_UV16QI_FTYPE_UV16QI_UQI),
16243 MSA_BUILTIN (bmnz_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), 16321 MSA_BUILTIN_PURE (bmnz_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI),
16244 MSA_BUILTIN (bmnzi_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), 16322 MSA_BUILTIN_PURE (bmnzi_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI),
16245 MSA_BUILTIN (bmz_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), 16323 MSA_BUILTIN_PURE (bmz_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI),
16246 MSA_BUILTIN (bmzi_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), 16324 MSA_BUILTIN_PURE (bmzi_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI),
16247 MSA_BUILTIN (bsel_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI), 16325 MSA_BUILTIN_PURE (bsel_v, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UV16QI),
16248 MSA_BUILTIN (bseli_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI), 16326 MSA_BUILTIN_PURE (bseli_b, MIPS_UV16QI_FTYPE_UV16QI_UV16QI_UQI),
16249 MSA_BUILTIN (shf_b, MIPS_V16QI_FTYPE_V16QI_UQI), 16327 MSA_BUILTIN_PURE (shf_b, MIPS_V16QI_FTYPE_V16QI_UQI),
16250 MSA_BUILTIN (shf_h, MIPS_V8HI_FTYPE_V8HI_UQI), 16328 MSA_BUILTIN_PURE (shf_h, MIPS_V8HI_FTYPE_V8HI_UQI),
16251 MSA_BUILTIN (shf_w, MIPS_V4SI_FTYPE_V4SI_UQI), 16329 MSA_BUILTIN_PURE (shf_w, MIPS_V4SI_FTYPE_V4SI_UQI),
16252 MSA_BUILTIN_TEST_BRANCH (bnz_v, MIPS_SI_FTYPE_UV16QI), 16330 MSA_BUILTIN_TEST_BRANCH (bnz_v, MIPS_SI_FTYPE_UV16QI),
16253 MSA_BUILTIN_TEST_BRANCH (bz_v, MIPS_SI_FTYPE_UV16QI), 16331 MSA_BUILTIN_TEST_BRANCH (bz_v, MIPS_SI_FTYPE_UV16QI),
16254 MSA_BUILTIN (fill_b, MIPS_V16QI_FTYPE_SI), 16332 MSA_BUILTIN_PURE (fill_b, MIPS_V16QI_FTYPE_SI),
16255 MSA_BUILTIN (fill_h, MIPS_V8HI_FTYPE_SI), 16333 MSA_BUILTIN_PURE (fill_h, MIPS_V8HI_FTYPE_SI),
16256 MSA_BUILTIN (fill_w, MIPS_V4SI_FTYPE_SI), 16334 MSA_BUILTIN_PURE (fill_w, MIPS_V4SI_FTYPE_SI),
16257 MSA_BUILTIN (fill_d, MIPS_V2DI_FTYPE_DI), 16335 MSA_BUILTIN_PURE (fill_d, MIPS_V2DI_FTYPE_DI),
16258 MSA_BUILTIN (pcnt_b, MIPS_V16QI_FTYPE_V16QI), 16336 MSA_BUILTIN_PURE (pcnt_b, MIPS_V16QI_FTYPE_V16QI),
16259 MSA_BUILTIN (pcnt_h, MIPS_V8HI_FTYPE_V8HI), 16337 MSA_BUILTIN_PURE (pcnt_h, MIPS_V8HI_FTYPE_V8HI),
16260 MSA_BUILTIN (pcnt_w, MIPS_V4SI_FTYPE_V4SI), 16338 MSA_BUILTIN_PURE (pcnt_w, MIPS_V4SI_FTYPE_V4SI),
16261 MSA_BUILTIN (pcnt_d, MIPS_V2DI_FTYPE_V2DI), 16339 MSA_BUILTIN_PURE (pcnt_d, MIPS_V2DI_FTYPE_V2DI),
16262 MSA_BUILTIN (nloc_b, MIPS_V16QI_FTYPE_V16QI), 16340 MSA_BUILTIN_PURE (nloc_b, MIPS_V16QI_FTYPE_V16QI),
16263 MSA_BUILTIN (nloc_h, MIPS_V8HI_FTYPE_V8HI), 16341 MSA_BUILTIN_PURE (nloc_h, MIPS_V8HI_FTYPE_V8HI),
16264 MSA_BUILTIN (nloc_w, MIPS_V4SI_FTYPE_V4SI), 16342 MSA_BUILTIN_PURE (nloc_w, MIPS_V4SI_FTYPE_V4SI),
16265 MSA_BUILTIN (nloc_d, MIPS_V2DI_FTYPE_V2DI), 16343 MSA_BUILTIN_PURE (nloc_d, MIPS_V2DI_FTYPE_V2DI),
16266 MSA_BUILTIN (nlzc_b, MIPS_V16QI_FTYPE_V16QI), 16344 MSA_BUILTIN_PURE (nlzc_b, MIPS_V16QI_FTYPE_V16QI),
16267 MSA_BUILTIN (nlzc_h, MIPS_V8HI_FTYPE_V8HI), 16345 MSA_BUILTIN_PURE (nlzc_h, MIPS_V8HI_FTYPE_V8HI),
16268 MSA_BUILTIN (nlzc_w, MIPS_V4SI_FTYPE_V4SI), 16346 MSA_BUILTIN_PURE (nlzc_w, MIPS_V4SI_FTYPE_V4SI),
16269 MSA_BUILTIN (nlzc_d, MIPS_V2DI_FTYPE_V2DI), 16347 MSA_BUILTIN_PURE (nlzc_d, MIPS_V2DI_FTYPE_V2DI),
16270 MSA_BUILTIN (copy_s_b, MIPS_SI_FTYPE_V16QI_UQI), 16348 MSA_BUILTIN_PURE (copy_s_b, MIPS_SI_FTYPE_V16QI_UQI),
16271 MSA_BUILTIN (copy_s_h, MIPS_SI_FTYPE_V8HI_UQI), 16349 MSA_BUILTIN_PURE (copy_s_h, MIPS_SI_FTYPE_V8HI_UQI),
16272 MSA_BUILTIN (copy_s_w, MIPS_SI_FTYPE_V4SI_UQI), 16350 MSA_BUILTIN_PURE (copy_s_w, MIPS_SI_FTYPE_V4SI_UQI),
16273 MSA_BUILTIN (copy_s_d, MIPS_DI_FTYPE_V2DI_UQI), 16351 MSA_BUILTIN_PURE (copy_s_d, MIPS_DI_FTYPE_V2DI_UQI),
16274 MSA_BUILTIN (copy_u_b, MIPS_USI_FTYPE_V16QI_UQI), 16352 MSA_BUILTIN_PURE (copy_u_b, MIPS_USI_FTYPE_V16QI_UQI),
16275 MSA_BUILTIN (copy_u_h, MIPS_USI_FTYPE_V8HI_UQI), 16353 MSA_BUILTIN_PURE (copy_u_h, MIPS_USI_FTYPE_V8HI_UQI),
16276 MSA_BUILTIN_REMAP (copy_u_w, copy_s_w, MIPS_USI_FTYPE_V4SI_UQI), 16354 MSA_BUILTIN_REMAP (copy_u_w, copy_s_w, MIPS_USI_FTYPE_V4SI_UQI),
16277 MSA_BUILTIN_REMAP (copy_u_d, copy_s_d, MIPS_UDI_FTYPE_V2DI_UQI), 16355 MSA_BUILTIN_REMAP (copy_u_d, copy_s_d, MIPS_UDI_FTYPE_V2DI_UQI),
16278 MSA_BUILTIN (insert_b, MIPS_V16QI_FTYPE_V16QI_UQI_SI), 16356 MSA_BUILTIN_PURE (insert_b, MIPS_V16QI_FTYPE_V16QI_UQI_SI),
16279 MSA_BUILTIN (insert_h, MIPS_V8HI_FTYPE_V8HI_UQI_SI), 16357 MSA_BUILTIN_PURE (insert_h, MIPS_V8HI_FTYPE_V8HI_UQI_SI),
16280 MSA_BUILTIN (insert_w, MIPS_V4SI_FTYPE_V4SI_UQI_SI), 16358 MSA_BUILTIN_PURE (insert_w, MIPS_V4SI_FTYPE_V4SI_UQI_SI),
16281 MSA_BUILTIN (insert_d, MIPS_V2DI_FTYPE_V2DI_UQI_DI), 16359 MSA_BUILTIN_PURE (insert_d, MIPS_V2DI_FTYPE_V2DI_UQI_DI),
16282 MSA_BUILTIN (insve_b, MIPS_V16QI_FTYPE_V16QI_UQI_V16QI), 16360 MSA_BUILTIN_PURE (insve_b, MIPS_V16QI_FTYPE_V16QI_UQI_V16QI),
16283 MSA_BUILTIN (insve_h, MIPS_V8HI_FTYPE_V8HI_UQI_V8HI), 16361 MSA_BUILTIN_PURE (insve_h, MIPS_V8HI_FTYPE_V8HI_UQI_V8HI),
16284 MSA_BUILTIN (insve_w, MIPS_V4SI_FTYPE_V4SI_UQI_V4SI), 16362 MSA_BUILTIN_PURE (insve_w, MIPS_V4SI_FTYPE_V4SI_UQI_V4SI),
16285 MSA_BUILTIN (insve_d, MIPS_V2DI_FTYPE_V2DI_UQI_V2DI), 16363 MSA_BUILTIN_PURE (insve_d, MIPS_V2DI_FTYPE_V2DI_UQI_V2DI),
16286 MSA_BUILTIN_TEST_BRANCH (bnz_b, MIPS_SI_FTYPE_UV16QI), 16364 MSA_BUILTIN_TEST_BRANCH (bnz_b, MIPS_SI_FTYPE_UV16QI),
16287 MSA_BUILTIN_TEST_BRANCH (bnz_h, MIPS_SI_FTYPE_UV8HI), 16365 MSA_BUILTIN_TEST_BRANCH (bnz_h, MIPS_SI_FTYPE_UV8HI),
16288 MSA_BUILTIN_TEST_BRANCH (bnz_w, MIPS_SI_FTYPE_UV4SI), 16366 MSA_BUILTIN_TEST_BRANCH (bnz_w, MIPS_SI_FTYPE_UV4SI),
16289 MSA_BUILTIN_TEST_BRANCH (bnz_d, MIPS_SI_FTYPE_UV2DI), 16367 MSA_BUILTIN_TEST_BRANCH (bnz_d, MIPS_SI_FTYPE_UV2DI),
16290 MSA_BUILTIN_TEST_BRANCH (bz_b, MIPS_SI_FTYPE_UV16QI), 16368 MSA_BUILTIN_TEST_BRANCH (bz_b, MIPS_SI_FTYPE_UV16QI),
16291 MSA_BUILTIN_TEST_BRANCH (bz_h, MIPS_SI_FTYPE_UV8HI), 16369 MSA_BUILTIN_TEST_BRANCH (bz_h, MIPS_SI_FTYPE_UV8HI),
16292 MSA_BUILTIN_TEST_BRANCH (bz_w, MIPS_SI_FTYPE_UV4SI), 16370 MSA_BUILTIN_TEST_BRANCH (bz_w, MIPS_SI_FTYPE_UV4SI),
16293 MSA_BUILTIN_TEST_BRANCH (bz_d, MIPS_SI_FTYPE_UV2DI), 16371 MSA_BUILTIN_TEST_BRANCH (bz_d, MIPS_SI_FTYPE_UV2DI),
16294 MSA_BUILTIN (ldi_b, MIPS_V16QI_FTYPE_HI), 16372 MSA_BUILTIN_PURE (ldi_b, MIPS_V16QI_FTYPE_HI),
16295 MSA_BUILTIN (ldi_h, MIPS_V8HI_FTYPE_HI), 16373 MSA_BUILTIN_PURE (ldi_h, MIPS_V8HI_FTYPE_HI),
16296 MSA_BUILTIN (ldi_w, MIPS_V4SI_FTYPE_HI), 16374 MSA_BUILTIN_PURE (ldi_w, MIPS_V4SI_FTYPE_HI),
16297 MSA_BUILTIN (ldi_d, MIPS_V2DI_FTYPE_HI), 16375 MSA_BUILTIN_PURE (ldi_d, MIPS_V2DI_FTYPE_HI),
16298 MSA_BUILTIN (fcaf_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16376 MSA_BUILTIN_PURE (fcaf_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16299 MSA_BUILTIN (fcaf_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16377 MSA_BUILTIN_PURE (fcaf_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16300 MSA_BUILTIN (fcor_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16378 MSA_BUILTIN_PURE (fcor_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16301 MSA_BUILTIN (fcor_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16379 MSA_BUILTIN_PURE (fcor_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16302 MSA_BUILTIN (fcun_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16380 MSA_BUILTIN_PURE (fcun_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16303 MSA_BUILTIN (fcun_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16381 MSA_BUILTIN_PURE (fcun_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16304 MSA_BUILTIN (fcune_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16382 MSA_BUILTIN_PURE (fcune_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16305 MSA_BUILTIN (fcune_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16383 MSA_BUILTIN_PURE (fcune_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16306 MSA_BUILTIN (fcueq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16384 MSA_BUILTIN_PURE (fcueq_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16307 MSA_BUILTIN (fcueq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16385 MSA_BUILTIN_PURE (fcueq_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16308 MSA_BUILTIN (fceq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16386 MSA_BUILTIN_PURE (fceq_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16309 MSA_BUILTIN (fceq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16387 MSA_BUILTIN_PURE (fceq_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16310 MSA_BUILTIN (fcne_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16388 MSA_BUILTIN_PURE (fcne_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16311 MSA_BUILTIN (fcne_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16389 MSA_BUILTIN_PURE (fcne_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16312 MSA_BUILTIN (fclt_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16390 MSA_BUILTIN_PURE (fclt_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16313 MSA_BUILTIN (fclt_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16391 MSA_BUILTIN_PURE (fclt_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16314 MSA_BUILTIN (fcult_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16392 MSA_BUILTIN_PURE (fcult_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16315 MSA_BUILTIN (fcult_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16393 MSA_BUILTIN_PURE (fcult_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16316 MSA_BUILTIN (fcle_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16394 MSA_BUILTIN_PURE (fcle_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16317 MSA_BUILTIN (fcle_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16395 MSA_BUILTIN_PURE (fcle_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16318 MSA_BUILTIN (fcule_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16396 MSA_BUILTIN_PURE (fcule_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16319 MSA_BUILTIN (fcule_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16397 MSA_BUILTIN_PURE (fcule_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16320 MSA_BUILTIN (fsaf_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16398 MSA_BUILTIN_PURE (fsaf_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16321 MSA_BUILTIN (fsaf_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16399 MSA_BUILTIN_PURE (fsaf_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16322 MSA_BUILTIN (fsor_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16400 MSA_BUILTIN_PURE (fsor_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16323 MSA_BUILTIN (fsor_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16401 MSA_BUILTIN_PURE (fsor_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16324 MSA_BUILTIN (fsun_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16402 MSA_BUILTIN_PURE (fsun_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16325 MSA_BUILTIN (fsun_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16403 MSA_BUILTIN_PURE (fsun_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16326 MSA_BUILTIN (fsune_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16404 MSA_BUILTIN_PURE (fsune_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16327 MSA_BUILTIN (fsune_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16405 MSA_BUILTIN_PURE (fsune_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16328 MSA_BUILTIN (fsueq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16406 MSA_BUILTIN_PURE (fsueq_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16329 MSA_BUILTIN (fsueq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16407 MSA_BUILTIN_PURE (fsueq_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16330 MSA_BUILTIN (fseq_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16408 MSA_BUILTIN_PURE (fseq_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16331 MSA_BUILTIN (fseq_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16409 MSA_BUILTIN_PURE (fseq_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16332 MSA_BUILTIN (fsne_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16410 MSA_BUILTIN_PURE (fsne_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16333 MSA_BUILTIN (fsne_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16411 MSA_BUILTIN_PURE (fsne_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16334 MSA_BUILTIN (fslt_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16412 MSA_BUILTIN_PURE (fslt_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16335 MSA_BUILTIN (fslt_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16413 MSA_BUILTIN_PURE (fslt_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16336 MSA_BUILTIN (fsult_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16414 MSA_BUILTIN_PURE (fsult_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16337 MSA_BUILTIN (fsult_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16415 MSA_BUILTIN_PURE (fsult_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16338 MSA_BUILTIN (fsle_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16416 MSA_BUILTIN_PURE (fsle_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16339 MSA_BUILTIN (fsle_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16417 MSA_BUILTIN_PURE (fsle_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16340 MSA_BUILTIN (fsule_w, MIPS_V4SI_FTYPE_V4SF_V4SF), 16418 MSA_BUILTIN_PURE (fsule_w, MIPS_V4SI_FTYPE_V4SF_V4SF),
16341 MSA_BUILTIN (fsule_d, MIPS_V2DI_FTYPE_V2DF_V2DF), 16419 MSA_BUILTIN_PURE (fsule_d, MIPS_V2DI_FTYPE_V2DF_V2DF),
16342 MSA_BUILTIN (fadd_w, MIPS_V4SF_FTYPE_V4SF_V4SF), 16420 MSA_BUILTIN_PURE (fadd_w, MIPS_V4SF_FTYPE_V4SF_V4SF),
16343 MSA_BUILTIN (fadd_d, MIPS_V2DF_FTYPE_V2DF_V2DF), 16421 MSA_BUILTIN_PURE (fadd_d, MIPS_V2DF_FTYPE_V2DF_V2DF),
16344 MSA_BUILTIN (fsub_w, MIPS_V4SF_FTYPE_V4SF_V4SF), 16422 MSA_BUILTIN_PURE (fsub_w, MIPS_V4SF_FTYPE_V4SF_V4SF),
16345 MSA_BUILTIN (fsub_d, MIPS_V2DF_FTYPE_V2DF_V2DF), 16423 MSA_BUILTIN_PURE (fsub_d, MIPS_V2DF_FTYPE_V2DF_V2DF),
16346 MSA_BUILTIN (fmul_w, MIPS_V4SF_FTYPE_V4SF_V4SF), 16424 MSA_BUILTIN_PURE (fmul_w, MIPS_V4SF_FTYPE_V4SF_V4SF),
16347 MSA_BUILTIN (fmul_d, MIPS_V2DF_FTYPE_V2DF_V2DF), 16425 MSA_BUILTIN_PURE (fmul_d, MIPS_V2DF_FTYPE_V2DF_V2DF),
16348 MSA_BUILTIN (fdiv_w, MIPS_V4SF_FTYPE_V4SF_V4SF), 16426 MSA_BUILTIN_PURE (fdiv_w, MIPS_V4SF_FTYPE_V4SF_V4SF),
16349 MSA_BUILTIN (fdiv_d, MIPS_V2DF_FTYPE_V2DF_V2DF), 16427 MSA_BUILTIN_PURE (fdiv_d, MIPS_V2DF_FTYPE_V2DF_V2DF),
16350 MSA_BUILTIN (fmadd_w, MIPS_V4SF_FTYPE_V4SF_V4SF_V4SF), 16428 MSA_BUILTIN_PURE (fmadd_w, MIPS_V4SF_FTYPE_V4SF_V4SF_V4SF),
16351 MSA_BUILTIN (fmadd_d, MIPS_V2DF_FTYPE_V2DF_V2DF_V2DF), 16429 MSA_BUILTIN_PURE (fmadd_d, MIPS_V2DF_FTYPE_V2DF_V2DF_V2DF),
16352 MSA_BUILTIN (fmsub_w, MIPS_V4SF_FTYPE_V4SF_V4SF_V4SF), 16430 MSA_BUILTIN_PURE (fmsub_w, MIPS_V4SF_FTYPE_V4SF_V4SF_V4SF),
16353 MSA_BUILTIN (fmsub_d, MIPS_V2DF_FTYPE_V2DF_V2DF_V2DF), 16431 MSA_BUILTIN_PURE (fmsub_d, MIPS_V2DF_FTYPE_V2DF_V2DF_V2DF),
16354 MSA_BUILTIN (fexp2_w, MIPS_V4SF_FTYPE_V4SF_V4SI), 16432 MSA_BUILTIN_PURE (fexp2_w, MIPS_V4SF_FTYPE_V4SF_V4SI),
16355 MSA_BUILTIN (fexp2_d, MIPS_V2DF_FTYPE_V2DF_V2DI), 16433 MSA_BUILTIN_PURE (fexp2_d, MIPS_V2DF_FTYPE_V2DF_V2DI),
16356 MSA_BUILTIN (fexdo_h, MIPS_V8HI_FTYPE_V4SF_V4SF), 16434 MSA_BUILTIN_PURE (fexdo_h, MIPS_V8HI_FTYPE_V4SF_V4SF),
16357 MSA_BUILTIN (fexdo_w, MIPS_V4SF_FTYPE_V2DF_V2DF), 16435 MSA_BUILTIN_PURE (fexdo_w, MIPS_V4SF_FTYPE_V2DF_V2DF),
16358 MSA_BUILTIN (ftq_h, MIPS_V8HI_FTYPE_V4SF_V4SF), 16436 MSA_BUILTIN_PURE (ftq_h, MIPS_V8HI_FTYPE_V4SF_V4SF),
16359 MSA_BUILTIN (ftq_w, MIPS_V4SI_FTYPE_V2DF_V2DF), 16437 MSA_BUILTIN_PURE (ftq_w, MIPS_V4SI_FTYPE_V2DF_V2DF),
16360 MSA_BUILTIN (fmin_w, MIPS_V4SF_FTYPE_V4SF_V4SF), 16438 MSA_BUILTIN_PURE (fmin_w, MIPS_V4SF_FTYPE_V4SF_V4SF),
16361 MSA_BUILTIN (fmin_d, MIPS_V2DF_FTYPE_V2DF_V2DF), 16439 MSA_BUILTIN_PURE (fmin_d, MIPS_V2DF_FTYPE_V2DF_V2DF),
16362 MSA_BUILTIN (fmin_a_w, MIPS_V4SF_FTYPE_V4SF_V4SF), 16440 MSA_BUILTIN_PURE (fmin_a_w, MIPS_V4SF_FTYPE_V4SF_V4SF),
16363 MSA_BUILTIN (fmin_a_d, MIPS_V2DF_FTYPE_V2DF_V2DF), 16441 MSA_BUILTIN_PURE (fmin_a_d, MIPS_V2DF_FTYPE_V2DF_V2DF),
16364 MSA_BUILTIN (fmax_w, MIPS_V4SF_FTYPE_V4SF_V4SF), 16442 MSA_BUILTIN_PURE (fmax_w, MIPS_V4SF_FTYPE_V4SF_V4SF),
16365 MSA_BUILTIN (fmax_d, MIPS_V2DF_FTYPE_V2DF_V2DF), 16443 MSA_BUILTIN_PURE (fmax_d, MIPS_V2DF_FTYPE_V2DF_V2DF),
16366 MSA_BUILTIN (fmax_a_w, MIPS_V4SF_FTYPE_V4SF_V4SF), 16444 MSA_BUILTIN_PURE (fmax_a_w, MIPS_V4SF_FTYPE_V4SF_V4SF),
16367 MSA_BUILTIN (fmax_a_d, MIPS_V2DF_FTYPE_V2DF_V2DF), 16445 MSA_BUILTIN_PURE (fmax_a_d, MIPS_V2DF_FTYPE_V2DF_V2DF),
16368 MSA_BUILTIN (mul_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16446 MSA_BUILTIN_PURE (mul_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16369 MSA_BUILTIN (mul_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16447 MSA_BUILTIN_PURE (mul_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16370 MSA_BUILTIN (mulr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI), 16448 MSA_BUILTIN_PURE (mulr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI),
16371 MSA_BUILTIN (mulr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI), 16449 MSA_BUILTIN_PURE (mulr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI),
16372 MSA_BUILTIN (madd_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), 16450 MSA_BUILTIN_PURE (madd_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI),
16373 MSA_BUILTIN (madd_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), 16451 MSA_BUILTIN_PURE (madd_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI),
16374 MSA_BUILTIN (maddr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), 16452 MSA_BUILTIN_PURE (maddr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI),
16375 MSA_BUILTIN (maddr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), 16453 MSA_BUILTIN_PURE (maddr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI),
16376 MSA_BUILTIN (msub_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), 16454 MSA_BUILTIN_PURE (msub_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI),
16377 MSA_BUILTIN (msub_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), 16455 MSA_BUILTIN_PURE (msub_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI),
16378 MSA_BUILTIN (msubr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI), 16456 MSA_BUILTIN_PURE (msubr_q_h, MIPS_V8HI_FTYPE_V8HI_V8HI_V8HI),
16379 MSA_BUILTIN (msubr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI), 16457 MSA_BUILTIN_PURE (msubr_q_w, MIPS_V4SI_FTYPE_V4SI_V4SI_V4SI),
16380 MSA_BUILTIN (fclass_w, MIPS_V4SI_FTYPE_V4SF), 16458 MSA_BUILTIN_PURE (fclass_w, MIPS_V4SI_FTYPE_V4SF),
16381 MSA_BUILTIN (fclass_d, MIPS_V2DI_FTYPE_V2DF), 16459 MSA_BUILTIN_PURE (fclass_d, MIPS_V2DI_FTYPE_V2DF),
16382 MSA_BUILTIN (fsqrt_w, MIPS_V4SF_FTYPE_V4SF), 16460 MSA_BUILTIN_PURE (fsqrt_w, MIPS_V4SF_FTYPE_V4SF),
16383 MSA_BUILTIN (fsqrt_d, MIPS_V2DF_FTYPE_V2DF), 16461 MSA_BUILTIN_PURE (fsqrt_d, MIPS_V2DF_FTYPE_V2DF),
16384 MSA_BUILTIN (frcp_w, MIPS_V4SF_FTYPE_V4SF), 16462 MSA_BUILTIN_PURE (frcp_w, MIPS_V4SF_FTYPE_V4SF),
16385 MSA_BUILTIN (frcp_d, MIPS_V2DF_FTYPE_V2DF), 16463 MSA_BUILTIN_PURE (frcp_d, MIPS_V2DF_FTYPE_V2DF),
16386 MSA_BUILTIN (frint_w, MIPS_V4SF_FTYPE_V4SF), 16464 MSA_BUILTIN_PURE (frint_w, MIPS_V4SF_FTYPE_V4SF),
16387 MSA_BUILTIN (frint_d, MIPS_V2DF_FTYPE_V2DF), 16465 MSA_BUILTIN_PURE (frint_d, MIPS_V2DF_FTYPE_V2DF),
16388 MSA_BUILTIN (frsqrt_w, MIPS_V4SF_FTYPE_V4SF), 16466 MSA_BUILTIN_PURE (frsqrt_w, MIPS_V4SF_FTYPE_V4SF),
16389 MSA_BUILTIN (frsqrt_d, MIPS_V2DF_FTYPE_V2DF), 16467 MSA_BUILTIN_PURE (frsqrt_d, MIPS_V2DF_FTYPE_V2DF),
16390 MSA_BUILTIN (flog2_w, MIPS_V4SF_FTYPE_V4SF), 16468 MSA_BUILTIN_PURE (flog2_w, MIPS_V4SF_FTYPE_V4SF),
16391 MSA_BUILTIN (flog2_d, MIPS_V2DF_FTYPE_V2DF), 16469 MSA_BUILTIN_PURE (flog2_d, MIPS_V2DF_FTYPE_V2DF),
16392 MSA_BUILTIN (fexupl_w, MIPS_V4SF_FTYPE_V8HI), 16470 MSA_BUILTIN_PURE (fexupl_w, MIPS_V4SF_FTYPE_V8HI),
16393 MSA_BUILTIN (fexupl_d, MIPS_V2DF_FTYPE_V4SF), 16471 MSA_BUILTIN_PURE (fexupl_d, MIPS_V2DF_FTYPE_V4SF),
16394 MSA_BUILTIN (fexupr_w, MIPS_V4SF_FTYPE_V8HI), 16472 MSA_BUILTIN_PURE (fexupr_w, MIPS_V4SF_FTYPE_V8HI),
16395 MSA_BUILTIN (fexupr_d, MIPS_V2DF_FTYPE_V4SF), 16473 MSA_BUILTIN_PURE (fexupr_d, MIPS_V2DF_FTYPE_V4SF),
16396 MSA_BUILTIN (ffql_w, MIPS_V4SF_FTYPE_V8HI), 16474 MSA_BUILTIN_PURE (ffql_w, MIPS_V4SF_FTYPE_V8HI),
16397 MSA_BUILTIN (ffql_d, MIPS_V2DF_FTYPE_V4SI), 16475 MSA_BUILTIN_PURE (ffql_d, MIPS_V2DF_FTYPE_V4SI),
16398 MSA_BUILTIN (ffqr_w, MIPS_V4SF_FTYPE_V8HI), 16476 MSA_BUILTIN_PURE (ffqr_w, MIPS_V4SF_FTYPE_V8HI),
16399 MSA_BUILTIN (ffqr_d, MIPS_V2DF_FTYPE_V4SI), 16477 MSA_BUILTIN_PURE (ffqr_d, MIPS_V2DF_FTYPE_V4SI),
16400 MSA_BUILTIN (ftint_s_w, MIPS_V4SI_FTYPE_V4SF), 16478 MSA_BUILTIN_PURE (ftint_s_w, MIPS_V4SI_FTYPE_V4SF),
16401 MSA_BUILTIN (ftint_s_d, MIPS_V2DI_FTYPE_V2DF), 16479 MSA_BUILTIN_PURE (ftint_s_d, MIPS_V2DI_FTYPE_V2DF),
16402 MSA_BUILTIN (ftint_u_w, MIPS_UV4SI_FTYPE_V4SF), 16480 MSA_BUILTIN_PURE (ftint_u_w, MIPS_UV4SI_FTYPE_V4SF),
16403 MSA_BUILTIN (ftint_u_d, MIPS_UV2DI_FTYPE_V2DF), 16481 MSA_BUILTIN_PURE (ftint_u_d, MIPS_UV2DI_FTYPE_V2DF),
16404 MSA_BUILTIN (ftrunc_s_w, MIPS_V4SI_FTYPE_V4SF), 16482 MSA_BUILTIN_PURE (ftrunc_s_w, MIPS_V4SI_FTYPE_V4SF),
16405 MSA_BUILTIN (ftrunc_s_d, MIPS_V2DI_FTYPE_V2DF), 16483 MSA_BUILTIN_PURE (ftrunc_s_d, MIPS_V2DI_FTYPE_V2DF),
16406 MSA_BUILTIN (ftrunc_u_w, MIPS_UV4SI_FTYPE_V4SF), 16484 MSA_BUILTIN_PURE (ftrunc_u_w, MIPS_UV4SI_FTYPE_V4SF),
16407 MSA_BUILTIN (ftrunc_u_d, MIPS_UV2DI_FTYPE_V2DF), 16485 MSA_BUILTIN_PURE (ftrunc_u_d, MIPS_UV2DI_FTYPE_V2DF),
16408 MSA_BUILTIN (ffint_s_w, MIPS_V4SF_FTYPE_V4SI), 16486 MSA_BUILTIN_PURE (ffint_s_w, MIPS_V4SF_FTYPE_V4SI),
16409 MSA_BUILTIN (ffint_s_d, MIPS_V2DF_FTYPE_V2DI), 16487 MSA_BUILTIN_PURE (ffint_s_d, MIPS_V2DF_FTYPE_V2DI),
16410 MSA_BUILTIN (ffint_u_w, MIPS_V4SF_FTYPE_UV4SI), 16488 MSA_BUILTIN_PURE (ffint_u_w, MIPS_V4SF_FTYPE_UV4SI),
16411 MSA_BUILTIN (ffint_u_d, MIPS_V2DF_FTYPE_UV2DI), 16489 MSA_BUILTIN_PURE (ffint_u_d, MIPS_V2DF_FTYPE_UV2DI),
16412 MSA_NO_TARGET_BUILTIN (ctcmsa, MIPS_VOID_FTYPE_UQI_SI), 16490 MSA_NO_TARGET_BUILTIN (ctcmsa, MIPS_VOID_FTYPE_UQI_SI),
16413 MSA_BUILTIN (cfcmsa, MIPS_SI_FTYPE_UQI), 16491 MSA_BUILTIN_PURE (cfcmsa, MIPS_SI_FTYPE_UQI),
16414 MSA_BUILTIN (move_v, MIPS_V16QI_FTYPE_V16QI), 16492 MSA_BUILTIN_PURE (move_v, MIPS_V16QI_FTYPE_V16QI),
16415 }; 16493 };
16416 16494
16417 /* Index I is the function declaration for mips_builtins[I], or null if the 16495 /* Index I is the function declaration for mips_builtins[I], or null if the
16418 function isn't defined on this target. */ 16496 function isn't defined on this target. */
16419 static GTY(()) tree mips_builtin_decls[ARRAY_SIZE (mips_builtins)]; 16497 static GTY(()) tree mips_builtin_decls[ARRAY_SIZE (mips_builtins)];
16560 { 16638 {
16561 mips_builtin_decls[i] 16639 mips_builtin_decls[i]
16562 = add_builtin_function (d->name, 16640 = add_builtin_function (d->name,
16563 mips_build_function_type (d->function_type), 16641 mips_build_function_type (d->function_type),
16564 i, BUILT_IN_MD, NULL, NULL); 16642 i, BUILT_IN_MD, NULL, NULL);
16643 if (mips_builtin_decls[i] && d->is_pure)
16644 DECL_PURE_P (mips_builtin_decls[i]) = 1;
16565 mips_get_builtin_decl_index[d->icode] = i; 16645 mips_get_builtin_decl_index[d->icode] = i;
16566 } 16646 }
16567 } 16647 }
16568 } 16648 }
16569 16649
16810 swap is needed for builtins. */ 16890 swap is needed for builtins. */
16811 gcc_assert (has_target_p && nops == 3); 16891 gcc_assert (has_target_p && nops == 3);
16812 std::swap (ops[1], ops[2]); 16892 std::swap (ops[1], ops[2]);
16813 break; 16893 break;
16814 16894
16895 case CODE_FOR_msa_maddv_b:
16896 case CODE_FOR_msa_maddv_h:
16897 case CODE_FOR_msa_maddv_w:
16898 case CODE_FOR_msa_maddv_d:
16899 case CODE_FOR_msa_fmadd_w:
16900 case CODE_FOR_msa_fmadd_d:
16901 case CODE_FOR_msa_fmsub_w:
16902 case CODE_FOR_msa_fmsub_d:
16903 /* fma(a, b, c) results into (a * b + c), however builtin_msa_fmadd expects
16904 it to be (a + b * c). Swap the 1st and 3rd operands. */
16905 std::swap (ops[1], ops[3]);
16906 break;
16907
16815 case CODE_FOR_msa_slli_b: 16908 case CODE_FOR_msa_slli_b:
16816 case CODE_FOR_msa_slli_h: 16909 case CODE_FOR_msa_slli_h:
16817 case CODE_FOR_msa_slli_w: 16910 case CODE_FOR_msa_slli_w:
16818 case CODE_FOR_msa_slli_d: 16911 case CODE_FOR_msa_slli_d:
16819 case CODE_FOR_msa_srai_b: 16912 case CODE_FOR_msa_srai_b:
16895 case CODE_FOR_msa_vshf_d: 16988 case CODE_FOR_msa_vshf_d:
16896 gcc_assert (has_target_p && nops == 4); 16989 gcc_assert (has_target_p && nops == 4);
16897 std::swap (ops[1], ops[3]); 16990 std::swap (ops[1], ops[3]);
16898 break; 16991 break;
16899 16992
16993 case CODE_FOR_msa_dpadd_s_w:
16994 case CODE_FOR_msa_dpadd_s_h:
16995 case CODE_FOR_msa_dpadd_s_d:
16996 case CODE_FOR_msa_dpadd_u_w:
16997 case CODE_FOR_msa_dpadd_u_h:
16998 case CODE_FOR_msa_dpadd_u_d:
16999 case CODE_FOR_msa_dpsub_s_w:
17000 case CODE_FOR_msa_dpsub_s_h:
17001 case CODE_FOR_msa_dpsub_s_d:
17002 case CODE_FOR_msa_dpsub_u_w:
17003 case CODE_FOR_msa_dpsub_u_h:
17004 case CODE_FOR_msa_dpsub_u_d:
17005 /* Force the operands which correspond to the same in-out register
17006 to have the same pseudo assigned to them. If the input operand
17007 is not REG, create one for it. */
17008 if (!REG_P (ops[1].value))
17009 ops[1].value = copy_to_mode_reg (ops[1].mode, ops[1].value);
17010 create_output_operand (&ops[0], ops[1].value, ops[1].mode);
17011 break;
17012
16900 default: 17013 default:
16901 break; 17014 break;
16902 } 17015 }
16903 17016
16904 if (error_opno != 0) 17017 if (error_opno != 0)
17145 tree fndecl; 17258 tree fndecl;
17146 unsigned int fcode, avail; 17259 unsigned int fcode, avail;
17147 const struct mips_builtin_description *d; 17260 const struct mips_builtin_description *d;
17148 17261
17149 fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0); 17262 fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
17150 fcode = DECL_FUNCTION_CODE (fndecl); 17263 fcode = DECL_MD_FUNCTION_CODE (fndecl);
17151 gcc_assert (fcode < ARRAY_SIZE (mips_builtins)); 17264 gcc_assert (fcode < ARRAY_SIZE (mips_builtins));
17152 d = &mips_builtins[fcode]; 17265 d = &mips_builtins[fcode];
17153 avail = d->avail (); 17266 avail = d->avail ();
17154 gcc_assert (avail != 0); 17267 gcc_assert (avail != 0);
17155 if (TARGET_MIPS16 && !(avail & BUILTIN_AVAIL_MIPS16)) 17268 if (TARGET_MIPS16 && !(avail & BUILTIN_AVAIL_MIPS16))
17722 if (CALL_P (insn)) 17835 if (CALL_P (insn))
17723 return r10k_needs_protection_p_call (PATTERN (insn)); 17836 return r10k_needs_protection_p_call (PATTERN (insn));
17724 17837
17725 if (mips_r10k_cache_barrier == R10K_CACHE_BARRIER_STORE) 17838 if (mips_r10k_cache_barrier == R10K_CACHE_BARRIER_STORE)
17726 { 17839 {
17727 note_stores (PATTERN (insn), r10k_needs_protection_p_store, &insn); 17840 note_stores (insn, r10k_needs_protection_p_store, &insn);
17728 return insn == NULL_RTX; 17841 return insn == NULL_RTX;
17729 } 17842 }
17730 17843
17731 return r10k_needs_protection_p_1 (PATTERN (insn), insn); 17844 return r10k_needs_protection_p_1 (PATTERN (insn), insn);
17732 } 17845 }
18231 state_transition (curr_state, insn); 18344 state_transition (curr_state, insn);
18232 state->insns_left = targetm.sched.variable_issue (0, false, insn, 18345 state->insns_left = targetm.sched.variable_issue (0, false, insn,
18233 state->insns_left); 18346 state->insns_left);
18234 18347
18235 mips_sim_insn = insn; 18348 mips_sim_insn = insn;
18236 note_stores (PATTERN (insn), mips_sim_record_set, state); 18349 note_stores (insn, mips_sim_record_set, state);
18237 } 18350 }
18238 18351
18239 /* Simulate issuing a NOP in state STATE. */ 18352 /* Simulate issuing a NOP in state STATE. */
18240 18353
18241 static void 18354 static void
18519 /* Update LAST, LAST2 and ALIGNED_P for the next instruction. */ 18632 /* Update LAST, LAST2 and ALIGNED_P for the next instruction. */
18520 length = get_attr_length (insn); 18633 length = get_attr_length (insn);
18521 if (length > 0) 18634 if (length > 0)
18522 { 18635 {
18523 /* If the instruction is an asm statement or multi-instruction 18636 /* If the instruction is an asm statement or multi-instruction
18524 mips.md patern, the length is only an estimate. Insert an 18637 mips.md pattern, the length is only an estimate. Insert an
18525 8 byte alignment after it so that the following instructions 18638 8 byte alignment after it so that the following instructions
18526 can be handled correctly. */ 18639 can be handled correctly. */
18527 if (NONJUMP_INSN_P (SEQ_BEGIN (insn)) 18640 if (NONJUMP_INSN_P (SEQ_BEGIN (insn))
18528 && (recog_memoized (insn) < 0 || length >= 8)) 18641 && (recog_memoized (insn) < 0 || length >= 8))
18529 { 18642 {
18879 /* Profiled functions can't be all noreorder because the profiler 18992 /* Profiled functions can't be all noreorder because the profiler
18880 support uses assembler macros. */ 18993 support uses assembler macros. */
18881 if (crtl->profile) 18994 if (crtl->profile)
18882 cfun->machine->all_noreorder_p = false; 18995 cfun->machine->all_noreorder_p = false;
18883 18996
18884 /* Code compiled with -mfix-vr4120, -mfix-rm7000 or -mfix-24k can't be 18997 /* Code compiled with -mfix-vr4120, -mfix-r5900, -mfix-rm7000 or
18885 all noreorder because we rely on the assembler to work around some 18998 -mfix-24k can't be all noreorder because we rely on the assembler
18886 errata. The R5900 too has several bugs. */ 18999 to work around some errata. The R5900 target has several bugs. */
18887 if (TARGET_FIX_VR4120 19000 if (TARGET_FIX_VR4120
18888 || TARGET_FIX_RM7000 19001 || TARGET_FIX_RM7000
18889 || TARGET_FIX_24K 19002 || TARGET_FIX_24K
18890 || TARGET_MIPS5900) 19003 || TARGET_FIX_R5900)
18891 cfun->machine->all_noreorder_p = false; 19004 cfun->machine->all_noreorder_p = false;
18892 19005
18893 /* The same is true for -mfix-vr4130 if we might generate MFLO or 19006 /* The same is true for -mfix-vr4130 if we might generate MFLO or
18894 MFHI instructions. Note that we avoid using MFLO and MFHI if 19007 MFHI instructions. Note that we avoid using MFLO and MFHI if
18895 the VR4130 MACC and DMACC instructions are available instead; 19008 the VR4130 MACC and DMACC instructions are available instead;
18961 CLEAR_HARD_REG_SET (uses); 19074 CLEAR_HARD_REG_SET (uses);
18962 note_uses (&PATTERN (SEQ_BEGIN (insn)), record_hard_reg_uses, 19075 note_uses (&PATTERN (SEQ_BEGIN (insn)), record_hard_reg_uses,
18963 &uses); 19076 &uses);
18964 HARD_REG_SET delay_sets; 19077 HARD_REG_SET delay_sets;
18965 CLEAR_HARD_REG_SET (delay_sets); 19078 CLEAR_HARD_REG_SET (delay_sets);
18966 note_stores (PATTERN (SEQ_END (insn)), record_hard_reg_sets, 19079 note_stores (SEQ_END (insn), record_hard_reg_sets,
18967 &delay_sets); 19080 &delay_sets);
18968 19081
18969 rtx_insn *prev = prev_active_insn (insn); 19082 rtx_insn *prev = prev_active_insn (insn);
18970 if (prev 19083 if (prev
18971 && GET_CODE (PATTERN (prev)) == SET 19084 && GET_CODE (PATTERN (prev)) == SET
18972 && MEM_P (SET_SRC (PATTERN (prev)))) 19085 && MEM_P (SET_SRC (PATTERN (prev))))
18973 { 19086 {
18974 HARD_REG_SET sets; 19087 HARD_REG_SET sets;
18975 CLEAR_HARD_REG_SET (sets); 19088 CLEAR_HARD_REG_SET (sets);
18976 note_stores (PATTERN (prev), record_hard_reg_sets, 19089 note_stores (prev, record_hard_reg_sets, &sets);
18977 &sets);
18978 19090
18979 /* Re-order if safe. */ 19091 /* Re-order if safe. */
18980 if (!hard_reg_set_intersect_p (delay_sets, uses) 19092 if (!hard_reg_set_intersect_p (delay_sets, uses)
18981 && hard_reg_set_intersect_p (uses, sets)) 19093 && hard_reg_set_intersect_p (uses, sets))
18982 { 19094 {
19374 static void 19486 static void
19375 mips_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, 19487 mips_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED,
19376 HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, 19488 HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset,
19377 tree function) 19489 tree function)
19378 { 19490 {
19491 const char *fnname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (thunk_fndecl));
19379 rtx this_rtx, temp1, temp2, fnaddr; 19492 rtx this_rtx, temp1, temp2, fnaddr;
19380 rtx_insn *insn; 19493 rtx_insn *insn;
19381 bool use_sibcall_p; 19494 bool use_sibcall_p;
19382 19495
19383 /* Pretend to be a post-reload pass while generating rtl. */ 19496 /* Pretend to be a post-reload pass while generating rtl. */
19486 "borrowed" from alpha.c. */ 19599 "borrowed" from alpha.c. */
19487 insn = get_insns (); 19600 insn = get_insns ();
19488 split_all_insns_noflow (); 19601 split_all_insns_noflow ();
19489 mips16_lay_out_constants (true); 19602 mips16_lay_out_constants (true);
19490 shorten_branches (insn); 19603 shorten_branches (insn);
19604 assemble_start_function (thunk_fndecl, fnname);
19491 final_start_function (insn, file, 1); 19605 final_start_function (insn, file, 1);
19492 final (insn, file, 1); 19606 final (insn, file, 1);
19493 final_end_function (); 19607 final_end_function ();
19608 assemble_end_function (thunk_fndecl, fnname);
19494 19609
19495 /* Clean up the vars set above. Note that final_end_function resets 19610 /* Clean up the vars set above. Note that final_end_function resets
19496 the global pointer for us. */ 19611 the global pointer for us. */
19497 reload_completed = 0; 19612 reload_completed = 0;
19498 } 19613 }
19568 19683
19569 if (flag_pic && !TARGET_OLDABI) 19684 if (flag_pic && !TARGET_OLDABI)
19570 sorry ("MIPS16 PIC for ABIs other than o32 and o64"); 19685 sorry ("MIPS16 PIC for ABIs other than o32 and o64");
19571 19686
19572 if (TARGET_XGOT) 19687 if (TARGET_XGOT)
19573 sorry ("MIPS16 -mxgot code"); 19688 sorry ("MIPS16 %<-mxgot%> code");
19574 19689
19575 if (TARGET_HARD_FLOAT_ABI && !TARGET_OLDABI) 19690 if (TARGET_HARD_FLOAT_ABI && !TARGET_OLDABI)
19576 sorry ("hard-float MIPS16 code for ABIs other than o32 and o64"); 19691 sorry ("hard-float MIPS16 code for ABIs other than o32 and o64");
19577 19692
19578 if (TARGET_MSA) 19693 if (TARGET_MSA)
20162 mips_arch_info->name); 20277 mips_arch_info->name);
20163 TARGET_DSP = false; 20278 TARGET_DSP = false;
20164 TARGET_DSPR2 = false; 20279 TARGET_DSPR2 = false;
20165 } 20280 }
20166 20281
20282 /* Make sure that when TARGET_LOONGSON_MMI is true, TARGET_HARD_FLOAT_ABI
20283 is true. In o32 pairs of floating-point registers provide 64-bit
20284 values. */
20285 if (TARGET_LOONGSON_MMI && !TARGET_HARD_FLOAT_ABI)
20286 error ("%<-mloongson-mmi%> must be used with %<-mhard-float%>");
20287
20288 /* If TARGET_LOONGSON_EXT2, enable TARGET_LOONGSON_EXT. */
20289 if (TARGET_LOONGSON_EXT2)
20290 {
20291 /* Make sure that when TARGET_LOONGSON_EXT2 is true, TARGET_LOONGSON_EXT
20292 is true. If a user explicitly says -mloongson-ext2 -mno-loongson-ext
20293 then that is an error. */
20294 if (!TARGET_LOONGSON_EXT
20295 && (target_flags_explicit & MASK_LOONGSON_EXT) != 0)
20296 error ("%<-mloongson-ext2%> must be used with %<-mloongson-ext%>");
20297 target_flags |= MASK_LOONGSON_EXT;
20298 }
20299
20167 /* .eh_frame addresses should be the same width as a C pointer. 20300 /* .eh_frame addresses should be the same width as a C pointer.
20168 Most MIPS ABIs support only one pointer size, so the assembler 20301 Most MIPS ABIs support only one pointer size, so the assembler
20169 will usually know exactly how big an .eh_frame address is. 20302 will usually know exactly how big an .eh_frame address is.
20170 20303
20171 Unfortunately, this is not true of the 64-bit EABI. The ABI was 20304 Unfortunately, this is not true of the 64-bit EABI. The ABI was
20242 was selected explicitly. */ 20375 was selected explicitly. */
20243 if ((target_flags_explicit & MASK_FIX_R4400) == 0 20376 if ((target_flags_explicit & MASK_FIX_R4400) == 0
20244 && strcmp (mips_arch_info->name, "r4400") == 0) 20377 && strcmp (mips_arch_info->name, "r4400") == 0)
20245 target_flags |= MASK_FIX_R4400; 20378 target_flags |= MASK_FIX_R4400;
20246 20379
20380 /* Default to working around R5900 errata only if the processor
20381 was selected explicitly. */
20382 if ((target_flags_explicit & MASK_FIX_R5900) == 0
20383 && strcmp (mips_arch_info->name, "r5900") == 0)
20384 target_flags |= MASK_FIX_R5900;
20385
20247 /* Default to working around R10000 errata only if the processor 20386 /* Default to working around R10000 errata only if the processor
20248 was selected explicitly. */ 20387 was selected explicitly. */
20249 if ((target_flags_explicit & MASK_FIX_R10000) == 0 20388 if ((target_flags_explicit & MASK_FIX_R10000) == 0
20250 && strcmp (mips_arch_info->name, "r10000") == 0) 20389 && strcmp (mips_arch_info->name, "r10000") == 0)
20251 target_flags |= MASK_FIX_R10000; 20390 target_flags |= MASK_FIX_R10000;
20321 #define SWAP_INT(X, Y) (tmpi = (X), (X) = (Y), (Y) = tmpi) 20460 #define SWAP_INT(X, Y) (tmpi = (X), (X) = (Y), (Y) = tmpi)
20322 #define SWAP_STRING(X, Y) (tmps = (X), (X) = (Y), (Y) = tmps) 20461 #define SWAP_STRING(X, Y) (tmps = (X), (X) = (Y), (Y) = tmps)
20323 20462
20324 SWAP_INT (fixed_regs[i], fixed_regs[i + 1]); 20463 SWAP_INT (fixed_regs[i], fixed_regs[i + 1]);
20325 SWAP_INT (call_used_regs[i], call_used_regs[i + 1]); 20464 SWAP_INT (call_used_regs[i], call_used_regs[i + 1]);
20326 SWAP_INT (call_really_used_regs[i], call_really_used_regs[i + 1]);
20327 SWAP_STRING (reg_names[i], reg_names[i + 1]); 20465 SWAP_STRING (reg_names[i], reg_names[i + 1]);
20328 20466
20329 #undef SWAP_STRING 20467 #undef SWAP_STRING
20330 #undef SWAP_INT 20468 #undef SWAP_INT
20331 } 20469 }
20341 /* These DSP control register fields are global. */ 20479 /* These DSP control register fields are global. */
20342 global_regs[CCDSP_PO_REGNUM] = 1; 20480 global_regs[CCDSP_PO_REGNUM] = 1;
20343 global_regs[CCDSP_SC_REGNUM] = 1; 20481 global_regs[CCDSP_SC_REGNUM] = 1;
20344 } 20482 }
20345 else 20483 else
20346 AND_COMPL_HARD_REG_SET (accessible_reg_set, 20484 accessible_reg_set &= ~reg_class_contents[DSP_ACC_REGS];
20347 reg_class_contents[(int) DSP_ACC_REGS]);
20348 20485
20349 if (!ISA_HAS_HILO) 20486 if (!ISA_HAS_HILO)
20350 AND_COMPL_HARD_REG_SET (accessible_reg_set, 20487 accessible_reg_set &= ~reg_class_contents[MD_REGS];
20351 reg_class_contents[(int) MD_REGS]);
20352 20488
20353 if (!TARGET_HARD_FLOAT) 20489 if (!TARGET_HARD_FLOAT)
20354 { 20490 accessible_reg_set &= ~(reg_class_contents[FP_REGS]
20355 AND_COMPL_HARD_REG_SET (accessible_reg_set, 20491 | reg_class_contents[ST_REGS]);
20356 reg_class_contents[(int) FP_REGS]);
20357 AND_COMPL_HARD_REG_SET (accessible_reg_set,
20358 reg_class_contents[(int) ST_REGS]);
20359 }
20360 else if (!ISA_HAS_8CC) 20492 else if (!ISA_HAS_8CC)
20361 { 20493 {
20362 /* We only have a single condition-code register. We implement 20494 /* We only have a single condition-code register. We implement
20363 this by fixing all the condition-code registers and generating 20495 this by fixing all the condition-code registers and generating
20364 RTL that refers directly to ST_REG_FIRST. */ 20496 RTL that refers directly to ST_REG_FIRST. */
20365 AND_COMPL_HARD_REG_SET (accessible_reg_set, 20497 accessible_reg_set &= ~reg_class_contents[ST_REGS];
20366 reg_class_contents[(int) ST_REGS]);
20367 if (!ISA_HAS_CCF) 20498 if (!ISA_HAS_CCF)
20368 SET_HARD_REG_BIT (accessible_reg_set, FPSW_REGNUM); 20499 SET_HARD_REG_BIT (accessible_reg_set, FPSW_REGNUM);
20369 fixed_regs[FPSW_REGNUM] = call_used_regs[FPSW_REGNUM] = 1; 20500 fixed_regs[FPSW_REGNUM] = 1;
20370 } 20501 }
20371 if (TARGET_MIPS16) 20502 if (TARGET_MIPS16)
20372 { 20503 {
20373 /* In MIPS16 mode, we prohibit the unused $s registers, since they 20504 /* In MIPS16 mode, we prohibit the unused $s registers, since they
20374 are call-saved, and saving them via a MIPS16 register would 20505 are call-saved, and saving them via a MIPS16 register would
20379 code that is larger (but faster) then not using them. We do 20510 code that is larger (but faster) then not using them. We do
20380 allow $24 (t8) because it is used in CMP and CMPI instructions 20511 allow $24 (t8) because it is used in CMP and CMPI instructions
20381 and $25 (t9) because it is used as the function call address in 20512 and $25 (t9) because it is used as the function call address in
20382 SVR4 PIC code. */ 20513 SVR4 PIC code. */
20383 20514
20384 fixed_regs[18] = call_used_regs[18] = 1; 20515 fixed_regs[18] = 1;
20385 fixed_regs[19] = call_used_regs[19] = 1; 20516 fixed_regs[19] = 1;
20386 fixed_regs[20] = call_used_regs[20] = 1; 20517 fixed_regs[20] = 1;
20387 fixed_regs[21] = call_used_regs[21] = 1; 20518 fixed_regs[21] = 1;
20388 fixed_regs[22] = call_used_regs[22] = 1; 20519 fixed_regs[22] = 1;
20389 fixed_regs[23] = call_used_regs[23] = 1; 20520 fixed_regs[23] = 1;
20390 fixed_regs[26] = call_used_regs[26] = 1; 20521 fixed_regs[26] = 1;
20391 fixed_regs[27] = call_used_regs[27] = 1; 20522 fixed_regs[27] = 1;
20392 fixed_regs[30] = call_used_regs[30] = 1; 20523 fixed_regs[30] = 1;
20393 if (optimize_size) 20524 if (optimize_size)
20394 { 20525 {
20395 fixed_regs[8] = call_used_regs[8] = 1; 20526 fixed_regs[8] = 1;
20396 fixed_regs[9] = call_used_regs[9] = 1; 20527 fixed_regs[9] = 1;
20397 fixed_regs[10] = call_used_regs[10] = 1; 20528 fixed_regs[10] = 1;
20398 fixed_regs[11] = call_used_regs[11] = 1; 20529 fixed_regs[11] = 1;
20399 fixed_regs[12] = call_used_regs[12] = 1; 20530 fixed_regs[12] = 1;
20400 fixed_regs[13] = call_used_regs[13] = 1; 20531 fixed_regs[13] = 1;
20401 fixed_regs[14] = call_used_regs[14] = 1; 20532 fixed_regs[14] = 1;
20402 fixed_regs[15] = call_used_regs[15] = 1; 20533 fixed_regs[15] = 1;
20403 } 20534 }
20404 20535
20405 /* Do not allow HI and LO to be treated as register operands. 20536 /* Do not allow HI and LO to be treated as register operands.
20406 There are no MTHI or MTLO instructions (or any real need 20537 There are no MTHI or MTLO instructions (or any real need
20407 for them) and one-way registers cannot easily be reloaded. */ 20538 for them) and one-way registers cannot easily be reloaded. */
20408 AND_COMPL_HARD_REG_SET (operand_reg_set, 20539 operand_reg_set &= ~reg_class_contents[MD_REGS];
20409 reg_class_contents[(int) MD_REGS]);
20410 } 20540 }
20411 /* $f20-$f23 are call-clobbered for n64. */ 20541 /* $f20-$f23 are call-clobbered for n64. */
20412 if (mips_abi == ABI_64) 20542 if (mips_abi == ABI_64)
20413 { 20543 {
20414 int regno; 20544 int regno;
20415 for (regno = FP_REG_FIRST + 20; regno < FP_REG_FIRST + 24; regno++) 20545 for (regno = FP_REG_FIRST + 20; regno < FP_REG_FIRST + 24; regno++)
20416 call_really_used_regs[regno] = call_used_regs[regno] = 1; 20546 call_used_regs[regno] = 1;
20417 } 20547 }
20418 /* Odd registers in the range $f21-$f31 (inclusive) are call-clobbered 20548 /* Odd registers in the range $f21-$f31 (inclusive) are call-clobbered
20419 for n32 and o32 FP64. */ 20549 for n32 and o32 FP64. */
20420 if (mips_abi == ABI_N32 20550 if (mips_abi == ABI_N32
20421 || (mips_abi == ABI_32 20551 || (mips_abi == ABI_32
20422 && TARGET_FLOAT64)) 20552 && TARGET_FLOAT64))
20423 { 20553 {
20424 int regno; 20554 int regno;
20425 for (regno = FP_REG_FIRST + 21; regno <= FP_REG_FIRST + 31; regno+=2) 20555 for (regno = FP_REG_FIRST + 21; regno <= FP_REG_FIRST + 31; regno+=2)
20426 call_really_used_regs[regno] = call_used_regs[regno] = 1; 20556 call_used_regs[regno] = 1;
20427 } 20557 }
20428 /* Make sure that double-register accumulator values are correctly 20558 /* Make sure that double-register accumulator values are correctly
20429 ordered for the current endianness. */ 20559 ordered for the current endianness. */
20430 if (TARGET_LITTLE_ENDIAN) 20560 if (TARGET_LITTLE_ENDIAN)
20431 { 20561 {
20539 mips_pop_asm_switch (&mips_noat); 20669 mips_pop_asm_switch (&mips_noat);
20540 20670
20541 if (INSN_P (insn) 20671 if (INSN_P (insn)
20542 && GET_CODE (PATTERN (insn)) == UNSPEC_VOLATILE 20672 && GET_CODE (PATTERN (insn)) == UNSPEC_VOLATILE
20543 && XINT (PATTERN (insn), 1) == UNSPEC_CONSTTABLE_END) 20673 && XINT (PATTERN (insn), 1) == UNSPEC_CONSTTABLE_END)
20544 mips_set_text_contents_type (asm_out_file, "__pend_", 20674 {
20545 INTVAL (XVECEXP (PATTERN (insn), 0, 0)), 20675 rtx_insn *next_insn = next_real_nondebug_insn (insn);
20546 TRUE); 20676 bool code_p = (next_insn != NULL
20677 && INSN_P (next_insn)
20678 && (GET_CODE (PATTERN (next_insn)) != UNSPEC_VOLATILE
20679 || XINT (PATTERN (next_insn), 1) != UNSPEC_CONSTTABLE));
20680
20681 /* Switch content type depending on whether there is code beyond
20682 the constant pool. */
20683 mips_set_text_contents_type (asm_out_file, "__pend_",
20684 INTVAL (XVECEXP (PATTERN (insn), 0, 0)),
20685 code_p);
20686 }
20547 } 20687 }
20548 20688
20549 /* Return the function that is used to expand the <u>mulsidi3 pattern. 20689 /* Return the function that is used to expand the <u>mulsidi3 pattern.
20550 EXT_CODE is the code of the extension used. Return NULL if widening 20690 EXT_CODE is the code of the extension used. Return NULL if widening
20551 multiplication shouldn't be used. */ 20691 multiplication shouldn't be used. */
21147 reg_names[2]); 21287 reg_names[2]);
21148 } 21288 }
21149 21289
21150 /* Implement TARGET_SHIFT_TRUNCATION_MASK. We want to keep the default 21290 /* Implement TARGET_SHIFT_TRUNCATION_MASK. We want to keep the default
21151 behavior of TARGET_SHIFT_TRUNCATION_MASK for non-vector modes even 21291 behavior of TARGET_SHIFT_TRUNCATION_MASK for non-vector modes even
21152 when TARGET_LOONGSON_VECTORS is true. */ 21292 when TARGET_LOONGSON_MMI is true. */
21153 21293
21154 static unsigned HOST_WIDE_INT 21294 static unsigned HOST_WIDE_INT
21155 mips_shift_truncation_mask (machine_mode mode) 21295 mips_shift_truncation_mask (machine_mode mode)
21156 { 21296 {
21157 if (TARGET_LOONGSON_VECTORS && VECTOR_MODE_P (mode)) 21297 if (TARGET_LOONGSON_MMI && VECTOR_MODE_P (mode))
21158 return 0; 21298 return 0;
21159 21299
21160 return GET_MODE_BITSIZE (mode) - 1; 21300 return GET_MODE_BITSIZE (mode) - 1;
21161 } 21301 }
21162 21302
21253 mips_expand_vpc_loongson_even_odd (struct expand_vec_perm_d *d) 21393 mips_expand_vpc_loongson_even_odd (struct expand_vec_perm_d *d)
21254 { 21394 {
21255 unsigned i, odd, nelt = d->nelt; 21395 unsigned i, odd, nelt = d->nelt;
21256 rtx t0, t1, t2, t3; 21396 rtx t0, t1, t2, t3;
21257 21397
21258 if (!(TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS)) 21398 if (!(TARGET_HARD_FLOAT && TARGET_LOONGSON_MMI))
21259 return false; 21399 return false;
21260 /* Even-odd for V2SI/V2SFmode is matched by interleave directly. */ 21400 /* Even-odd for V2SI/V2SFmode is matched by interleave directly. */
21261 if (nelt < 4) 21401 if (nelt < 4)
21262 return false; 21402 return false;
21263 21403
21310 mips_expand_vpc_loongson_pshufh (struct expand_vec_perm_d *d) 21450 mips_expand_vpc_loongson_pshufh (struct expand_vec_perm_d *d)
21311 { 21451 {
21312 unsigned i, mask; 21452 unsigned i, mask;
21313 rtx rmask; 21453 rtx rmask;
21314 21454
21315 if (!(TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS)) 21455 if (!(TARGET_HARD_FLOAT && TARGET_LOONGSON_MMI))
21316 return false; 21456 return false;
21317 if (d->vmode != V4HImode) 21457 if (d->vmode != V4HImode)
21318 return false; 21458 return false;
21319 if (d->testing_p) 21459 if (d->testing_p)
21320 return true; 21460 return true;
21362 mips_expand_vpc_loongson_bcast (struct expand_vec_perm_d *d) 21502 mips_expand_vpc_loongson_bcast (struct expand_vec_perm_d *d)
21363 { 21503 {
21364 unsigned i, elt; 21504 unsigned i, elt;
21365 rtx t0, t1; 21505 rtx t0, t1;
21366 21506
21367 if (!(TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS)) 21507 if (!(TARGET_HARD_FLOAT && TARGET_LOONGSON_MMI))
21368 return false; 21508 return false;
21369 /* Note that we've already matched V2SI via punpck and V4HI via pshufh. */ 21509 /* Note that we've already matched V2SI via punpck and V4HI via pshufh. */
21370 if (d->vmode != V8QImode) 21510 if (d->vmode != V8QImode)
21371 return false; 21511 return false;
21372 if (!d->one_vector_p) 21512 if (!d->one_vector_p)
21956 emit_insn (gen_rtx_SET (target, x)); 22096 emit_insn (gen_rtx_SET (target, x));
21957 return; 22097 return;
21958 } 22098 }
21959 22099
21960 /* Loongson is the only cpu with vectors with more elements. */ 22100 /* Loongson is the only cpu with vectors with more elements. */
21961 gcc_assert (TARGET_HARD_FLOAT && TARGET_LOONGSON_VECTORS); 22101 gcc_assert (TARGET_HARD_FLOAT && TARGET_LOONGSON_MMI);
21962 22102
21963 /* If all values are identical, broadcast the value. */ 22103 /* If all values are identical, broadcast the value. */
21964 if (all_same) 22104 if (all_same)
21965 { 22105 {
21966 mips_expand_vi_broadcast (vmode, target, XVECEXP (vals, 0, 0)); 22106 mips_expand_vi_broadcast (vmode, target, XVECEXP (vals, 0, 0));
22083 machine_mode mode) 22223 machine_mode mode)
22084 { 22224 {
22085 /* For performance, avoid saving/restoring upper parts of a register 22225 /* For performance, avoid saving/restoring upper parts of a register
22086 by returning MODE as save mode when the mode is known. */ 22226 by returning MODE as save mode when the mode is known. */
22087 if (mode == VOIDmode) 22227 if (mode == VOIDmode)
22088 return choose_hard_reg_mode (regno, nregs, false); 22228 return choose_hard_reg_mode (regno, nregs, NULL);
22089 else 22229 else
22090 return mode; 22230 return mode;
22091 } 22231 }
22092 22232
22093 /* Generate RTL for comparing CMP_OP0 and CMP_OP1 using condition COND and 22233 /* Generate RTL for comparing CMP_OP0 and CMP_OP1 using condition COND and
22211 { 22351 {
22212 rtx xop1 = operands[1]; 22352 rtx xop1 = operands[1];
22213 if (mode != vimode) 22353 if (mode != vimode)
22214 { 22354 {
22215 xop1 = gen_reg_rtx (vimode); 22355 xop1 = gen_reg_rtx (vimode);
22216 emit_move_insn (xop1, gen_rtx_SUBREG (vimode, operands[1], 0)); 22356 emit_move_insn (xop1, gen_lowpart (vimode, operands[1]));
22217 } 22357 }
22218 emit_move_insn (src1, xop1); 22358 emit_move_insn (src1, xop1);
22219 } 22359 }
22220 else 22360 else
22221 { 22361 {
22228 { 22368 {
22229 rtx xop2 = operands[2]; 22369 rtx xop2 = operands[2];
22230 if (mode != vimode) 22370 if (mode != vimode)
22231 { 22371 {
22232 xop2 = gen_reg_rtx (vimode); 22372 xop2 = gen_reg_rtx (vimode);
22233 emit_move_insn (xop2, gen_rtx_SUBREG (vimode, operands[2], 0)); 22373 emit_move_insn (xop2, gen_lowpart (vimode, operands[2]));
22234 } 22374 }
22235 emit_move_insn (src2, xop2); 22375 emit_move_insn (src2, xop2);
22236 } 22376 }
22237 else 22377 else
22238 { 22378 {
22414 mips_starting_frame_offset (void) 22554 mips_starting_frame_offset (void)
22415 { 22555 {
22416 if (FRAME_GROWS_DOWNWARD) 22556 if (FRAME_GROWS_DOWNWARD)
22417 return 0; 22557 return 0;
22418 return crtl->outgoing_args_size + MIPS_GP_SAVE_AREA_SIZE; 22558 return crtl->outgoing_args_size + MIPS_GP_SAVE_AREA_SIZE;
22559 }
22560
22561 static void
22562 mips_asm_file_end (void)
22563 {
22564 if (NEED_INDICATE_EXEC_STACK)
22565 file_end_indicate_exec_stack ();
22419 } 22566 }
22420 22567
22421 /* Initialize the GCC target structure. */ 22568 /* Initialize the GCC target structure. */
22422 #undef TARGET_ASM_ALIGNED_HI_OP 22569 #undef TARGET_ASM_ALIGNED_HI_OP
22423 #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t" 22570 #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
22582 #undef TARGET_SCALAR_MODE_SUPPORTED_P 22729 #undef TARGET_SCALAR_MODE_SUPPORTED_P
22583 #define TARGET_SCALAR_MODE_SUPPORTED_P mips_scalar_mode_supported_p 22730 #define TARGET_SCALAR_MODE_SUPPORTED_P mips_scalar_mode_supported_p
22584 22731
22585 #undef TARGET_VECTORIZE_PREFERRED_SIMD_MODE 22732 #undef TARGET_VECTORIZE_PREFERRED_SIMD_MODE
22586 #define TARGET_VECTORIZE_PREFERRED_SIMD_MODE mips_preferred_simd_mode 22733 #define TARGET_VECTORIZE_PREFERRED_SIMD_MODE mips_preferred_simd_mode
22587 #undef TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES 22734 #undef TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES
22588 #define TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES \ 22735 #define TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES \
22589 mips_autovectorize_vector_sizes 22736 mips_autovectorize_vector_modes
22590 22737
22591 #undef TARGET_INIT_BUILTINS 22738 #undef TARGET_INIT_BUILTINS
22592 #define TARGET_INIT_BUILTINS mips_init_builtins 22739 #define TARGET_INIT_BUILTINS mips_init_builtins
22593 #undef TARGET_BUILTIN_DECL 22740 #undef TARGET_BUILTIN_DECL
22594 #define TARGET_BUILTIN_DECL mips_builtin_decl 22741 #define TARGET_BUILTIN_DECL mips_builtin_decl
22722 #define TARGET_ASAN_SHADOW_OFFSET mips_asan_shadow_offset 22869 #define TARGET_ASAN_SHADOW_OFFSET mips_asan_shadow_offset
22723 22870
22724 #undef TARGET_STARTING_FRAME_OFFSET 22871 #undef TARGET_STARTING_FRAME_OFFSET
22725 #define TARGET_STARTING_FRAME_OFFSET mips_starting_frame_offset 22872 #define TARGET_STARTING_FRAME_OFFSET mips_starting_frame_offset
22726 22873
22874 #undef TARGET_ASM_FILE_END
22875 #define TARGET_ASM_FILE_END mips_asm_file_end
22876
22877
22727 struct gcc_target targetm = TARGET_INITIALIZER; 22878 struct gcc_target targetm = TARGET_INITIALIZER;
22728 22879
22729 #include "gt-mips.h" 22880 #include "gt-mips.h"