mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
97946e16bb
This implements vp_add, vp_and for the VE target by lowering them to the VVP_* layer. We also add helper functions for VP SDNodes (isVPSDNode, getVPMaskIdx, getVPExplicitVectorLengthIdx). Reviewed By: kaz7 Differential Revision: https://reviews.llvm.org/D93766
42 lines
1.3 KiB
Modula-2
42 lines
1.3 KiB
Modula-2
//===-- VVPNodes.def - Lists & properties of VE Vector Predication Nodes --===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines all VVP_* SDNodes and their properties
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// HANDLE_VP_TO_VVP(VPOPC, VVPOPC)
|
|
/// \p VPOPC is the VP_* SDNode opcode.
|
|
/// \p VVPOPC is the VVP_* SDNode opcode.
|
|
#ifndef HANDLE_VP_TO_VVP
|
|
#define HANDLE_VP_TO_VVP(VPOPC, VVPOPC)
|
|
#endif
|
|
|
|
/// ADD_VVP_OP(VVPNAME,SDNAME)
|
|
/// \p VVPName is a VVP SDNode operator.
|
|
/// \p SDNAME is the generic SD opcode corresponding to \p VVPName.
|
|
#ifndef ADD_VVP_OP
|
|
#define ADD_VVP_OP(X, Y)
|
|
#endif
|
|
|
|
/// ADD_BINARY_VVP_OP(VVPNAME,SDNAME)
|
|
/// \p VVPName is a VVP Binary operator.
|
|
/// \p SDNAME is the generic SD opcode corresponding to \p VVPName.
|
|
#ifndef ADD_BINARY_VVP_OP
|
|
#define ADD_BINARY_VVP_OP(X,Y) ADD_VVP_OP(X,Y) HANDLE_VP_TO_VVP(VP_##Y, X)
|
|
#endif
|
|
|
|
// Integer arithmetic.
|
|
ADD_BINARY_VVP_OP(VVP_ADD,ADD)
|
|
|
|
ADD_BINARY_VVP_OP(VVP_AND,AND)
|
|
|
|
#undef HANDLE_VP_TO_VVP
|
|
#undef ADD_BINARY_VVP_OP
|
|
#undef ADD_VVP_OP
|