===================================================================
@@ -42,6 +42,9 @@ DEF_TARGET_INSN (doloop_begin, (rtx x0,
DEF_TARGET_INSN (doloop_end, (rtx x0, rtx x1))
DEF_TARGET_INSN (epilogue, (void))
DEF_TARGET_INSN (exception_receiver, (void))
+DEF_TARGET_INSN (extv, (rtx x0, rtx x1, rtx x2, rtx x3))
+DEF_TARGET_INSN (extzv, (rtx x0, rtx x1, rtx x2, rtx x3))
+DEF_TARGET_INSN (insv, (rtx x0, rtx x1, rtx x2, rtx x3))
DEF_TARGET_INSN (jump, (rtx x0))
DEF_TARGET_INSN (load_multiple, (rtx x0, rtx x1, rtx x2))
DEF_TARGET_INSN (mem_signal_fence, (rtx x0))
===================================================================
@@ -8416,18 +8416,6 @@ expand_jump_insn (enum insn_code icode,
}
/* Reduce conditional compilation elsewhere. */
-#ifndef HAVE_insv
-#define HAVE_insv 0
-#define CODE_FOR_insv CODE_FOR_nothing
-#endif
-#ifndef HAVE_extv
-#define HAVE_extv 0
-#define CODE_FOR_extv CODE_FOR_nothing
-#endif
-#ifndef HAVE_extzv
-#define HAVE_extzv 0
-#define CODE_FOR_extzv CODE_FOR_nothing
-#endif
/* Enumerates the possible types of structure operand to an
extraction_insn. */
@@ -8512,25 +8500,25 @@ get_extraction_insn (extraction_insn *in
switch (pattern)
{
case EP_insv:
- if (HAVE_insv
+ if (targetm.have_insv ()
&& get_traditional_extraction_insn (insn, type, mode,
- CODE_FOR_insv, 0, 3))
+ targetm.code_for_insv, 0, 3))
return true;
return get_optab_extraction_insn (insn, type, mode, insv_optab,
insvmisalign_optab, 2);
case EP_extv:
- if (HAVE_extv
+ if (targetm.have_extv ()
&& get_traditional_extraction_insn (insn, type, mode,
- CODE_FOR_extv, 1, 0))
+ targetm.code_for_extv, 1, 0))
return true;
return get_optab_extraction_insn (insn, type, mode, extv_optab,
extvmisalign_optab, 3);
case EP_extzv:
- if (HAVE_extzv
+ if (targetm.have_extzv ()
&& get_traditional_extraction_insn (insn, type, mode,
- CODE_FOR_extzv, 1, 0))
+ targetm.code_for_extzv, 1, 0))
return true;
return get_optab_extraction_insn (insn, type, mode, extzv_optab,
extzvmisalign_optab, 3);
===================================================================
@@ -566,15 +566,6 @@ cancel_changes (int num)
}
/* Reduce conditional compilation elsewhere. */
-#ifndef HAVE_extv
-#define HAVE_extv 0
-#define CODE_FOR_extv CODE_FOR_nothing
-#endif
-#ifndef HAVE_extzv
-#define HAVE_extzv 0
-#define CODE_FOR_extzv CODE_FOR_nothing
-#endif
-
/* A subroutine of validate_replace_rtx_1 that tries to simplify the resulting
rtx. */
@@ -690,15 +681,15 @@ simplify_while_replacing (rtx *loc, rtx
machine_mode is_mode = GET_MODE (XEXP (x, 0));
int pos = INTVAL (XEXP (x, 2));
- if (GET_CODE (x) == ZERO_EXTRACT && HAVE_extzv)
+ if (GET_CODE (x) == ZERO_EXTRACT && targetm.have_extzv ())
{
- wanted_mode = insn_data[CODE_FOR_extzv].operand[1].mode;
+ wanted_mode = insn_data[targetm.code_for_extzv].operand[1].mode;
if (wanted_mode == VOIDmode)
wanted_mode = word_mode;
}
- else if (GET_CODE (x) == SIGN_EXTRACT && HAVE_extv)
+ else if (GET_CODE (x) == SIGN_EXTRACT && targetm.have_extv ())
{
- wanted_mode = insn_data[CODE_FOR_extv].operand[1].mode;
+ wanted_mode = insn_data[targetm.code_for_extv].operand[1].mode;
if (wanted_mode == VOIDmode)
wanted_mode = word_mode;
}