[Bug target/93449] PPC: Missing conversion builtin from vector to _Decimal128 and vice versa

cel at us dot ibm.com gcc-bugzilla@gcc.gnu.org
Mon Nov 2 17:32:33 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93449

Carl Love <cel at us dot ibm.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |cel at us dot ibm.com

--- Comment #10 from Carl Love <cel at us dot ibm.com> ---
Patch approved and committed.

commit 05161256d3d2a598966ca1cf676fa0e427570f73 (HEAD -> master, origin/master,
origin/HEAD)
Author: Carl Love <cel@us.ibm.com>
Date:   Mon Aug 31 16:12:31 2020 -0500

    Add bcd builtings listed in appendix B of the ABI

    2020-10-29  Carl Love  <cel@us.ibm.com>

    gcc/
            PR target/93449
            * config/rs6000/altivec.h (__builtin_bcdadd, __builtin_bcdadd_lt,
            __builtin_bcdadd_eq, __builtin_bcdadd_gt, __builtin_bcdadd_ofl,
            __builtin_bcdadd_ov, __builtin_bcdsub, __builtin_bcdsub_lt,
            __builtin_bcdsub_eq, __builtin_bcdsub_gt, __builtin_bcdsub_ofl,
            __builtin_bcdsub_ov, __builtin_bcdinvalid, __builtin_bcdmul10,
            __builtin_bcddiv10, __builtin_bcd2dfp, __builtin_bcdcmpeq,
            __builtin_bcdcmpgt, __builtin_bcdcmplt, __builtin_bcdcmpge,
            __builtin_bcdcmple): Add defines.
            * config/rs6000/altivec.md: Add UNSPEC_BCDSHIFT.
            (BCD_TEST): Add le, ge to code iterator.
            Add VBCD mode iterator.
            (bcd<bcd_add_sub>_test, *bcd<bcd_add_sub>_test2,
            bcd<bcd_add_sub>_<code>, bcd<bcd_add_sub>_<code>): Add mode to
name.
            Change iterator from V1TI to VBCD.
            (*bcdinvalid_<mode>, bcdshift_v16qi): New define_insn.
            (bcdinvalid_<mode>, bcdmul10_v16qi, bcddiv10_v16qi): New define.
            * config/rs6000/dfp.md (dfp_denbcd_v16qi_inst): New define_insn.
            (dfp_denbcd_v16qi): New define_expand.
            * config/rs6000/rs6000-builtin.def (BU_P8V_MISC_1): New define.
            (BCDADD): Replaced with BCDADD_V1TI and BCDADD_V16QI.
            (BCDADD_LT): Replaced with BCDADD_LT_V1TI and BCDADD_LT_V16QI.
            (BCDADD_EQ): Replaced with BCDADD_EQ_V1TI and BCDADD_EQ_V16QI.
            (BCDADD_GT): Replaced with BCDADD_GT_V1TI and BCDADD_GT_V16QI.
            (BCDADD_OV): Replaced with BCDADD_OV_V1TI and BCDADD_OV_V16QI.
            (BCDSUB_V1TI, BCDSUB_V16QI, BCDSUB_LT_V1TI, BCDSUB_LT_V16QI,
            BCDSUB_LE_V1TI, BCDSUB_LE_V16QI, BCDSUB_EQ_V1TI, BCDSUB_EQ_V16QI,
            BCDSUB_GT_V1TI, BCDSUB_GT_V16QI, BCDSUB_GE_V1TI, BCDSUB_GE_V16QI,
            BCDSUB_OV_V1TI, BCDSUB_OV_V16QI, BCDINVALID_V1TI, BCDINVALID_V16QI,
            BCDMUL10_V16QI, BCDDIV10_V16QI, DENBCD_V16QI): New builtin
definitions.
            (BCDADD, BCDADD_LT, BCDADD_EQ, BCDADD_GT, BCDADD_OV, BCDSUB,
BCDSUB_LT,
            BCDSUB_LE, BCDSUB_EQ, BCDSUB_GT, BCDSUB_GE, BCDSUB_OV, BCDINVALID,
            BCDMUL10, BCDDIV10, DENBCD): New overload definitions.
            * config/rs6000/rs6000-call.c (P8V_BUILTIN_VEC_BCDADD,
P8V_BUILTIN_VEC_BCDADD_LT,
            P8V_BUILTIN_VEC_BCDADD_EQ, P8V_BUILTIN_VEC_BCDADD_GT,
P8V_BUILTIN_VEC_BCDADD_OV,
            P8V_BUILTIN_VEC_BCDINVALID, P9V_BUILTIN_VEC_BCDMUL10,
P8V_BUILTIN_VEC_DENBCD.
            P8V_BUILTIN_VEC_BCDSUB, P8V_BUILTIN_VEC_BCDSUB_LT,
P8V_BUILTIN_VEC_BCDSUB_LE,
           P8V_BUILTIN_VEC_BCDSUB_EQ, P8V_BUILTIN_VEC_BCDSUB_GT,
P8V_BUILTIN_VEC_BCDSUB_GE,
            P8V_BUILTIN_VEC_BCDSUB_OV): New overloaded specifications.
            (CODE_FOR_bcdadd): Replaced with CODE_FOR_bcdadd_v16qi and
CODE_FOR_bcdadd_v1ti.
            (CODE_FOR_bcdadd_lt): Replaced with CODE_FOR_bcdadd_lt_v16qi and
CODE_FOR_bcdadd_lt_v1ti.
            (CODE_FOR_bcdadd_eq): Replaced with CODE_FOR_bcdadd_eq_v16qi and
CODE_FOR_bcdadd_eq_v1ti.
            (CODE_FOR_bcdadd_gt): Replaced with CODE_FOR_bcdadd_gt_v16qi and
CODE_FOR_bcdadd_gt_v1ti.
            (CODE_FOR_bcdsub): Replaced with CODE_FOR_bcdsub_v16qi and
CODE_FOR_bcdsub_v1ti.
            (CODE_FOR_bcdsub_lt): Replaced with CODE_FOR_bcdsub_lt_v16qi and
CODE_FOR_bcdsub_lt_v1ti.
            (CODE_FOR_bcdsub_eq): Replaced with CODE_FOR_bcdsub_eq_v16qi and
CODE_FOR_bcdsub_eq_v1ti.
            (CODE_FOR_bcdsub_gt): Replaced with CODE_FOR_bcdsub_gt_v16qi and
CODE_FOR_bcdsub_gt_v1ti.
            (rs6000_expand_ternop_builtin):  Add CODE_FOR_dfp_denbcd_v16qi to
else if.
            * doc/extend.texi: Add documentation for new builtins.

    gcc/testsuite/
            * gcc.target/powerpc/bcd-2.c: Add include altivec.h.
            * gcc.target/powerpc/bcd-3.c: Add include altivec.h.
            * gcc.target/powerpc/bcd-4.c: New test.


More information about the Gcc-bugs mailing list