d: Add support for vector comparison operators
authorIain Buclaw <ibuclaw@gdcproject.org>
Sat, 5 Nov 2022 18:32:17 +0000 (19:32 +0100)
committerIain Buclaw <ibuclaw@gdcproject.org>
Sat, 5 Nov 2022 18:47:16 +0000 (19:47 +0100)
commit3c28d6a3a018e9acb7af1422d6263661f69d5f94
treedbf38ada050ca3502eacc0ae91c0a729b2a91c14
parent3ad2167bbac8ae83b1e91305b105ab5287bdac55
d: Add support for vector comparison operators

The front-end added semantic support to permit comparing two vector
expressions.  This removes the restriction in the code generator, as
well as the intrisics that previously exposed the same operation.

gcc/d/ChangeLog:

* d-target.cc (Target::isVectorOpSupported): Remove cases for
comparison operators.
* intrinsics.cc (maybe_set_intrinsic): Remove cases for vector
comparison intrinsics.
(maybe_warn_intrinsic_mismatch): Likewise.
(expand_intrinsic_vec_cond): Remove.
(maybe_expand_intrinsic): Remove cases for vector comparison
intrinsics.
* intrinsics.def (INTRINSIC_EQUALMASK): Remove.
(INTRINSIC_NOTEQUALMASK): Remove.
(INTRINSIC_GREATERMASK): Remove.
(INTRINSIC_GREATEREQUALMASK): Remove.

libphobos/ChangeLog:

* libdruntime/gcc/simd.d (equalMask): Implement using generics.
(notEqualMask): Likewise.
(greaterMask): Likewise.
(greaterOrEqualMask): Likewise.
(notMask): Likewise.
(andAndMask): Likewise.
(orOrMask): Likewise.

gcc/testsuite/ChangeLog:

* gdc.dg/Wbuiltin_declaration_mismatch2.d: Remove comparision tests.
* gdc.dg/simd2a.d: Update comparison tests.
* gdc.dg/simd2b.d: Likewise.
* gdc.dg/simd2c.d: Likewise.
* gdc.dg/simd2d.d: Likewise.
* gdc.dg/simd2e.d: Likewise.
* gdc.dg/simd2f.d: Likewise.
* gdc.dg/simd2g.d: Likewise.
* gdc.dg/simd2h.d: Likewise.
* gdc.dg/simd2i.d: Likewise.
* gdc.dg/simd2j.d: Likewise.
15 files changed:
gcc/d/d-target.cc
gcc/d/intrinsics.cc
gcc/d/intrinsics.def
gcc/testsuite/gdc.dg/Wbuiltin_declaration_mismatch2.d
gcc/testsuite/gdc.dg/simd2a.d
gcc/testsuite/gdc.dg/simd2b.d
gcc/testsuite/gdc.dg/simd2c.d
gcc/testsuite/gdc.dg/simd2d.d
gcc/testsuite/gdc.dg/simd2e.d
gcc/testsuite/gdc.dg/simd2f.d
gcc/testsuite/gdc.dg/simd2g.d
gcc/testsuite/gdc.dg/simd2h.d
gcc/testsuite/gdc.dg/simd2i.d
gcc/testsuite/gdc.dg/simd2j.d
libphobos/libdruntime/gcc/simd.d