Commit 35c26820 by Olivier Hainque Committed by Olivier Hainque

rs6000.c (rs6000_expand_ternop_builtin): Rewrite switch on insn codes as sequence of ifs.

        * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Rewrite
        switch on insn codes as sequence of ifs.

From-SVN: r165025
parent adb18384
2010-10-06 Olivier Hainque <hainque@adacore.com>
* config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Rewrite
switch on insn codes as sequence of ifs.
2010-10-06 Hariharan Sandanagobalane <hariharan@picochip.com>
* config/picochip/picochip.c (TARGET_EXCEPT_UNWIND_INFO): Define it to
be UI_NONE for picochip.
......@@ -10904,12 +10904,18 @@ rs6000_expand_ternop_builtin (enum insn_code icode, tree exp, rtx target)
|| arg2 == error_mark_node)
return const0_rtx;
switch (icode)
/* Check and prepare argument depending on the instruction code.
Note that a switch statement instead of the sequence of tests
would be incorrect as many of the CODE_FOR values could be
CODE_FOR_nothing and that would yield multiple alternatives
with identical values. We'd never reach here at runtime in
this case. */
if (icode == CODE_FOR_altivec_vsldoi_v4sf
|| icode == CODE_FOR_altivec_vsldoi_v4si
|| icode == CODE_FOR_altivec_vsldoi_v8hi
|| icode == CODE_FOR_altivec_vsldoi_v16qi)
{
case CODE_FOR_altivec_vsldoi_v4sf:
case CODE_FOR_altivec_vsldoi_v4si:
case CODE_FOR_altivec_vsldoi_v8hi:
case CODE_FOR_altivec_vsldoi_v16qi:
/* Only allow 4-bit unsigned literals. */
STRIP_NOPS (arg2);
if (TREE_CODE (arg2) != INTEGER_CST
......@@ -10918,16 +10924,16 @@ rs6000_expand_ternop_builtin (enum insn_code icode, tree exp, rtx target)
error ("argument 3 must be a 4-bit unsigned literal");
return const0_rtx;
}
break;
case CODE_FOR_vsx_xxpermdi_v2df:
case CODE_FOR_vsx_xxpermdi_v2di:
case CODE_FOR_vsx_xxsldwi_v16qi:
case CODE_FOR_vsx_xxsldwi_v8hi:
case CODE_FOR_vsx_xxsldwi_v4si:
case CODE_FOR_vsx_xxsldwi_v4sf:
case CODE_FOR_vsx_xxsldwi_v2di:
case CODE_FOR_vsx_xxsldwi_v2df:
}
else if (icode == CODE_FOR_vsx_xxpermdi_v2df
|| icode == CODE_FOR_vsx_xxpermdi_v2di
|| icode == CODE_FOR_vsx_xxsldwi_v16qi
|| icode == CODE_FOR_vsx_xxsldwi_v8hi
|| icode == CODE_FOR_vsx_xxsldwi_v4si
|| icode == CODE_FOR_vsx_xxsldwi_v4sf
|| icode == CODE_FOR_vsx_xxsldwi_v2di
|| icode == CODE_FOR_vsx_xxsldwi_v2df)
{
/* Only allow 2-bit unsigned literals. */
STRIP_NOPS (arg2);
if (TREE_CODE (arg2) != INTEGER_CST
......@@ -10936,10 +10942,10 @@ rs6000_expand_ternop_builtin (enum insn_code icode, tree exp, rtx target)
error ("argument 3 must be a 2-bit unsigned literal");
return const0_rtx;
}
break;
case CODE_FOR_vsx_set_v2df:
case CODE_FOR_vsx_set_v2di:
}
else if (icode == CODE_FOR_vsx_set_v2df
|| icode == CODE_FOR_vsx_set_v2di)
{
/* Only allow 1-bit unsigned literals. */
STRIP_NOPS (arg2);
if (TREE_CODE (arg2) != INTEGER_CST
......@@ -10948,10 +10954,6 @@ rs6000_expand_ternop_builtin (enum insn_code icode, tree exp, rtx target)
error ("argument 3 must be a 1-bit unsigned literal");
return const0_rtx;
}
break;
default:
break;
}
if (target == 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment