//===-- 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(VVPNAME,VPNAME,SDNAME) \ ADD_VVP_OP(VVPNAME,SDNAME) \ HANDLE_VP_TO_VVP(VPNAME, VVPNAME) #endif #ifndef ADD_BINARY_VVP_OP_COMPACT #define ADD_BINARY_VVP_OP_COMPACT(NAME) \ ADD_BINARY_VVP_OP(VVP_##NAME,VP_##NAME,NAME) #endif // Integer arithmetic. ADD_BINARY_VVP_OP_COMPACT(ADD) ADD_BINARY_VVP_OP_COMPACT(SUB) ADD_BINARY_VVP_OP_COMPACT(MUL) ADD_BINARY_VVP_OP_COMPACT(UDIV) ADD_BINARY_VVP_OP_COMPACT(SDIV) ADD_BINARY_VVP_OP(VVP_SRA,VP_ASHR,SRA) ADD_BINARY_VVP_OP(VVP_SRL,VP_LSHR,SRL) ADD_BINARY_VVP_OP_COMPACT(SHL) ADD_BINARY_VVP_OP_COMPACT(AND) ADD_BINARY_VVP_OP_COMPACT(OR) ADD_BINARY_VVP_OP_COMPACT(XOR) // FP arithmetic. ADD_BINARY_VVP_OP_COMPACT(FADD) ADD_BINARY_VVP_OP_COMPACT(FSUB) ADD_BINARY_VVP_OP_COMPACT(FMUL) ADD_BINARY_VVP_OP_COMPACT(FDIV) // Shuffles. ADD_VVP_OP(VVP_SELECT,VSELECT) HANDLE_VP_TO_VVP(VP_SELECT, VVP_SELECT) HANDLE_VP_TO_VVP(VP_MERGE, VVP_SELECT) #undef ADD_BINARY_VVP_OP #undef ADD_BINARY_VVP_OP_COMPACT #undef ADD_VVP_OP #undef HANDLE_VP_TO_VVP