10b57cec5SDimitry Andric //===-- X86IntrinsicsInfo.h - X86 Intrinsics ------------*- C++ -*-===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric // 90b57cec5SDimitry Andric // This file contains the details for lowering X86 intrinsics 100b57cec5SDimitry Andric // 110b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric #ifndef LLVM_LIB_TARGET_X86_X86INTRINSICSINFO_H 140b57cec5SDimitry Andric #define LLVM_LIB_TARGET_X86_X86INTRINSICSINFO_H 150b57cec5SDimitry Andric 160b57cec5SDimitry Andric #include "X86ISelLowering.h" 170b57cec5SDimitry Andric #include "X86InstrInfo.h" 18480093f4SDimitry Andric #include "llvm/IR/IntrinsicsX86.h" 190b57cec5SDimitry Andric 200b57cec5SDimitry Andric namespace llvm { 210b57cec5SDimitry Andric 220b57cec5SDimitry Andric enum IntrinsicType : uint16_t { 230b57cec5SDimitry Andric CVTNEPS2BF16_MASK, 24*0fca6ea1SDimitry Andric GATHER, 25*0fca6ea1SDimitry Andric SCATTER, 26*0fca6ea1SDimitry Andric PREFETCH, 27*0fca6ea1SDimitry Andric RDSEED, 28*0fca6ea1SDimitry Andric RDRAND, 29*0fca6ea1SDimitry Andric RDPMC, 30*0fca6ea1SDimitry Andric RDTSC, 31*0fca6ea1SDimitry Andric XTEST, 32*0fca6ea1SDimitry Andric XGETBV, 33*0fca6ea1SDimitry Andric ADX, 34*0fca6ea1SDimitry Andric FPCLASSS, 35*0fca6ea1SDimitry Andric INTR_TYPE_1OP, 36*0fca6ea1SDimitry Andric INTR_TYPE_2OP, 37*0fca6ea1SDimitry Andric INTR_TYPE_3OP, 38*0fca6ea1SDimitry Andric INTR_TYPE_4OP_IMM8, 390b57cec5SDimitry Andric INTR_TYPE_3OP_IMM8, 40*0fca6ea1SDimitry Andric CFMA_OP_MASK, 41*0fca6ea1SDimitry Andric CFMA_OP_MASKZ, 42*0fca6ea1SDimitry Andric CMP_MASK_CC, 43*0fca6ea1SDimitry Andric CMP_MASK_SCALAR_CC, 44*0fca6ea1SDimitry Andric VSHIFT, 45*0fca6ea1SDimitry Andric COMI, 46*0fca6ea1SDimitry Andric COMI_RM, 47*0fca6ea1SDimitry Andric BLENDV, 48*0fca6ea1SDimitry Andric BEXTRI, 490b57cec5SDimitry Andric CVTPD2PS_MASK, 50*0fca6ea1SDimitry Andric INTR_TYPE_1OP_SAE, 51*0fca6ea1SDimitry Andric INTR_TYPE_2OP_SAE, 52*0fca6ea1SDimitry Andric INTR_TYPE_1OP_MASK_SAE, 53*0fca6ea1SDimitry Andric INTR_TYPE_2OP_MASK_SAE, 54*0fca6ea1SDimitry Andric INTR_TYPE_3OP_MASK_SAE, 55*0fca6ea1SDimitry Andric INTR_TYPE_1OP_MASK, 56*0fca6ea1SDimitry Andric INTR_TYPE_2OP_MASK, 57*0fca6ea1SDimitry Andric IFMA_OP, 58*0fca6ea1SDimitry Andric VPERM_2OP, 59*0fca6ea1SDimitry Andric INTR_TYPE_SCALAR_MASK, 60*0fca6ea1SDimitry Andric INTR_TYPE_SCALAR_MASK_SAE, 610b57cec5SDimitry Andric INTR_TYPE_SCALAR_MASK_RND, 620b57cec5SDimitry Andric INTR_TYPE_3OP_SCALAR_MASK_SAE, 630b57cec5SDimitry Andric COMPRESS_EXPAND_IN_REG, 64*0fca6ea1SDimitry Andric TRUNCATE_TO_REG, 65*0fca6ea1SDimitry Andric CVTPS2PH_MASK, 66*0fca6ea1SDimitry Andric CVTPD2DQ_MASK, 67*0fca6ea1SDimitry Andric CVTQQ2PS_MASK, 68*0fca6ea1SDimitry Andric TRUNCATE_TO_MEM_VI8, 69*0fca6ea1SDimitry Andric TRUNCATE_TO_MEM_VI16, 70*0fca6ea1SDimitry Andric TRUNCATE_TO_MEM_VI32, 71*0fca6ea1SDimitry Andric FIXUPIMM, 72*0fca6ea1SDimitry Andric FIXUPIMM_MASKZ, 73*0fca6ea1SDimitry Andric GATHER_AVX2, 74*0fca6ea1SDimitry Andric ROUNDP, 75*0fca6ea1SDimitry Andric ROUNDS, 76*0fca6ea1SDimitry Andric RDPRU 770b57cec5SDimitry Andric }; 780b57cec5SDimitry Andric 790b57cec5SDimitry Andric struct IntrinsicData { 800b57cec5SDimitry Andric 810b57cec5SDimitry Andric uint16_t Id; 820b57cec5SDimitry Andric IntrinsicType Type; 830b57cec5SDimitry Andric uint16_t Opc0; 840b57cec5SDimitry Andric uint16_t Opc1; 850b57cec5SDimitry Andric 86*0fca6ea1SDimitry Andric bool operator<(const IntrinsicData &RHS) const { return Id < RHS.Id; } 87*0fca6ea1SDimitry Andric bool operator==(const IntrinsicData &RHS) const { return RHS.Id == Id; } 880b57cec5SDimitry Andric friend bool operator<(const IntrinsicData &LHS, unsigned Id) { 890b57cec5SDimitry Andric return LHS.Id < Id; 900b57cec5SDimitry Andric } 910b57cec5SDimitry Andric }; 920b57cec5SDimitry Andric 930b57cec5SDimitry Andric #define X86_INTRINSIC_DATA(id, type, op0, op1) \ 940b57cec5SDimitry Andric { Intrinsic::x86_##id, type, op0, op1 } 950b57cec5SDimitry Andric 960b57cec5SDimitry Andric /* 970b57cec5SDimitry Andric * IntrinsicsWithChain - the table should be sorted by Intrinsic ID - in 980b57cec5SDimitry Andric * the alphabetical order. 990b57cec5SDimitry Andric */ 1000b57cec5SDimitry Andric static const IntrinsicData IntrinsicsWithChain[] = { 1010b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_d_d, GATHER_AVX2, 0, 0), 1020b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_d_d_256, GATHER_AVX2, 0, 0), 1030b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_d_pd, GATHER_AVX2, 0, 0), 1040b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_d_pd_256, GATHER_AVX2, 0, 0), 1050b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_d_ps, GATHER_AVX2, 0, 0), 1060b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_d_ps_256, GATHER_AVX2, 0, 0), 1070b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_d_q, GATHER_AVX2, 0, 0), 1080b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_d_q_256, GATHER_AVX2, 0, 0), 1090b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_q_d, GATHER_AVX2, 0, 0), 1100b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_q_d_256, GATHER_AVX2, 0, 0), 1110b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_q_pd, GATHER_AVX2, 0, 0), 1120b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_q_pd_256, GATHER_AVX2, 0, 0), 1130b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_q_ps, GATHER_AVX2, 0, 0), 1140b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_q_ps_256, GATHER_AVX2, 0, 0), 1150b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_q_q, GATHER_AVX2, 0, 0), 1160b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_gather_q_q_256, GATHER_AVX2, 0, 0), 1170b57cec5SDimitry Andric 1180b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather_dpd_512, GATHER, 0, 0), 1190b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather_dpi_512, GATHER, 0, 0), 1200b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather_dpq_512, GATHER, 0, 0), 1210b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather_dps_512, GATHER, 0, 0), 1220b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather_qpd_512, GATHER, 0, 0), 1230b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather_qpi_512, GATHER, 0, 0), 1240b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather_qpq_512, GATHER, 0, 0), 1250b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather_qps_512, GATHER, 0, 0), 1260b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3div2_df, GATHER, 0, 0), 1270b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3div2_di, GATHER, 0, 0), 1280b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3div4_df, GATHER, 0, 0), 1290b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3div4_di, GATHER, 0, 0), 1300b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3div4_sf, GATHER, 0, 0), 1310b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3div4_si, GATHER, 0, 0), 1320b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3div8_sf, GATHER, 0, 0), 1330b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3div8_si, GATHER, 0, 0), 1340b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3siv2_df, GATHER, 0, 0), 1350b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3siv2_di, GATHER, 0, 0), 1360b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3siv4_df, GATHER, 0, 0), 1370b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3siv4_di, GATHER, 0, 0), 1380b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3siv4_sf, GATHER, 0, 0), 1390b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3siv4_si, GATHER, 0, 0), 1400b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3siv8_sf, GATHER, 0, 0), 1410b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_gather3siv8_si, GATHER, 0, 0), 1420b57cec5SDimitry Andric 1430b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather_dpd_512, GATHER, 0, 0), 1440b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather_dpi_512, GATHER, 0, 0), 1450b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather_dpq_512, GATHER, 0, 0), 1460b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather_dps_512, GATHER, 0, 0), 1470b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather_qpd_512, GATHER, 0, 0), 1480b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather_qpi_512, GATHER, 0, 0), 1490b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather_qpq_512, GATHER, 0, 0), 1500b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather_qps_512, GATHER, 0, 0), 1510b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3div2_df, GATHER, 0, 0), 1520b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3div2_di, GATHER, 0, 0), 1530b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3div4_df, GATHER, 0, 0), 1540b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3div4_di, GATHER, 0, 0), 1550b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3div4_sf, GATHER, 0, 0), 1560b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3div4_si, GATHER, 0, 0), 1570b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3div8_sf, GATHER, 0, 0), 1580b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3div8_si, GATHER, 0, 0), 1590b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3siv2_df, GATHER, 0, 0), 1600b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3siv2_di, GATHER, 0, 0), 1610b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3siv4_df, GATHER, 0, 0), 1620b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3siv4_di, GATHER, 0, 0), 1630b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3siv4_sf, GATHER, 0, 0), 1640b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3siv4_si, GATHER, 0, 0), 1650b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3siv8_sf, GATHER, 0, 0), 1660b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_gather3siv8_si, GATHER, 0, 0), 1670b57cec5SDimitry Andric 1680b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_db_mem_128, TRUNCATE_TO_MEM_VI8, 1690b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1700b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_db_mem_256, TRUNCATE_TO_MEM_VI8, 1710b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1720b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_db_mem_512, TRUNCATE_TO_MEM_VI8, 1730b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1740b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_dw_mem_128, TRUNCATE_TO_MEM_VI16, 1750b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1760b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_dw_mem_256, TRUNCATE_TO_MEM_VI16, 1770b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1780b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_dw_mem_512, TRUNCATE_TO_MEM_VI16, 1790b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1800b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qb_mem_128, TRUNCATE_TO_MEM_VI8, 1810b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1820b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qb_mem_256, TRUNCATE_TO_MEM_VI8, 1830b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1840b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qb_mem_512, TRUNCATE_TO_MEM_VI8, 1850b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1860b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qd_mem_128, TRUNCATE_TO_MEM_VI32, 1870b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1880b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qd_mem_256, TRUNCATE_TO_MEM_VI32, 1890b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1900b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qd_mem_512, TRUNCATE_TO_MEM_VI32, 1910b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1920b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qw_mem_128, TRUNCATE_TO_MEM_VI16, 1930b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1940b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qw_mem_256, TRUNCATE_TO_MEM_VI16, 1950b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1960b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qw_mem_512, TRUNCATE_TO_MEM_VI16, 1970b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 1980b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_wb_mem_128, TRUNCATE_TO_MEM_VI8, 1990b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 2000b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_wb_mem_256, TRUNCATE_TO_MEM_VI8, 2010b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 2020b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_wb_mem_512, TRUNCATE_TO_MEM_VI8, 2030b57cec5SDimitry Andric X86ISD::VTRUNC, 0), 2040b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_db_mem_128, TRUNCATE_TO_MEM_VI8, 2050b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2060b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_db_mem_256, TRUNCATE_TO_MEM_VI8, 2070b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2080b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_db_mem_512, TRUNCATE_TO_MEM_VI8, 2090b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2100b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_mem_128, TRUNCATE_TO_MEM_VI16, 2110b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2120b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_mem_256, TRUNCATE_TO_MEM_VI16, 2130b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2140b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_mem_512, TRUNCATE_TO_MEM_VI16, 2150b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2160b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_mem_128, TRUNCATE_TO_MEM_VI8, 2170b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2180b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_mem_256, TRUNCATE_TO_MEM_VI8, 2190b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2200b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_mem_512, TRUNCATE_TO_MEM_VI8, 2210b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2220b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_mem_128, TRUNCATE_TO_MEM_VI32, 2230b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2240b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_mem_256, TRUNCATE_TO_MEM_VI32, 2250b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2260b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_mem_512, TRUNCATE_TO_MEM_VI32, 2270b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2280b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_mem_128, TRUNCATE_TO_MEM_VI16, 2290b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2300b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_mem_256, TRUNCATE_TO_MEM_VI16, 2310b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2320b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_mem_512, TRUNCATE_TO_MEM_VI16, 2330b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2340b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_mem_128, TRUNCATE_TO_MEM_VI8, 2350b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2360b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_mem_256, TRUNCATE_TO_MEM_VI8, 2370b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2380b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_mem_512, TRUNCATE_TO_MEM_VI8, 2390b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 2400b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_db_mem_128, TRUNCATE_TO_MEM_VI8, 2410b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2420b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_db_mem_256, TRUNCATE_TO_MEM_VI8, 2430b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2440b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_db_mem_512, TRUNCATE_TO_MEM_VI8, 2450b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2460b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_mem_128, TRUNCATE_TO_MEM_VI16, 2470b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2480b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_mem_256, TRUNCATE_TO_MEM_VI16, 2490b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2500b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_mem_512, TRUNCATE_TO_MEM_VI16, 2510b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2520b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_mem_128, TRUNCATE_TO_MEM_VI8, 2530b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2540b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_mem_256, TRUNCATE_TO_MEM_VI8, 2550b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2560b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_mem_512, TRUNCATE_TO_MEM_VI8, 2570b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2580b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_mem_128, TRUNCATE_TO_MEM_VI32, 2590b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2600b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_mem_256, TRUNCATE_TO_MEM_VI32, 2610b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2620b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_mem_512, TRUNCATE_TO_MEM_VI32, 2630b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2640b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_mem_128, TRUNCATE_TO_MEM_VI16, 2650b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2660b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_mem_256, TRUNCATE_TO_MEM_VI16, 2670b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2680b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_mem_512, TRUNCATE_TO_MEM_VI16, 2690b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2700b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_mem_128, TRUNCATE_TO_MEM_VI8, 2710b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2720b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_mem_256, TRUNCATE_TO_MEM_VI8, 2730b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2740b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_mem_512, TRUNCATE_TO_MEM_VI8, 2750b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 2760b57cec5SDimitry Andric 2770b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatter_dpd_512, SCATTER, 0, 0), 2780b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatter_dpi_512, SCATTER, 0, 0), 2790b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatter_dpq_512, SCATTER, 0, 0), 2800b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatter_dps_512, SCATTER, 0, 0), 2810b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatter_qpd_512, SCATTER, 0, 0), 2820b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatter_qpi_512, SCATTER, 0, 0), 2830b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatter_qpq_512, SCATTER, 0, 0), 2840b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatter_qps_512, SCATTER, 0, 0), 2850b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatterdiv2_df, SCATTER, 0, 0), 2860b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatterdiv2_di, SCATTER, 0, 0), 2870b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_df, SCATTER, 0, 0), 2880b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_di, SCATTER, 0, 0), 2890b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_sf, SCATTER, 0, 0), 2900b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatterdiv4_si, SCATTER, 0, 0), 2910b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatterdiv8_sf, SCATTER, 0, 0), 2920b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scatterdiv8_si, SCATTER, 0, 0), 2930b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scattersiv2_df, SCATTER, 0, 0), 2940b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scattersiv2_di, SCATTER, 0, 0), 2950b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scattersiv4_df, SCATTER, 0, 0), 2960b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scattersiv4_di, SCATTER, 0, 0), 2970b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scattersiv4_sf, SCATTER, 0, 0), 2980b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scattersiv4_si, SCATTER, 0, 0), 2990b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scattersiv8_sf, SCATTER, 0, 0), 3000b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scattersiv8_si, SCATTER, 0, 0), 3010b57cec5SDimitry Andric 3020b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatter_dpd_512, SCATTER, 0, 0), 3030b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatter_dpi_512, SCATTER, 0, 0), 3040b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatter_dpq_512, SCATTER, 0, 0), 3050b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatter_dps_512, SCATTER, 0, 0), 3060b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatter_qpd_512, SCATTER, 0, 0), 3070b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatter_qpi_512, SCATTER, 0, 0), 3080b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatter_qpq_512, SCATTER, 0, 0), 3090b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatter_qps_512, SCATTER, 0, 0), 3100b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatterdiv2_df, SCATTER, 0, 0), 3110b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatterdiv2_di, SCATTER, 0, 0), 3120b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatterdiv4_df, SCATTER, 0, 0), 3130b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatterdiv4_di, SCATTER, 0, 0), 3140b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatterdiv4_sf, SCATTER, 0, 0), 3150b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatterdiv4_si, SCATTER, 0, 0), 3160b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatterdiv8_sf, SCATTER, 0, 0), 3170b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scatterdiv8_si, SCATTER, 0, 0), 3180b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scattersiv2_df, SCATTER, 0, 0), 3190b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scattersiv2_di, SCATTER, 0, 0), 3200b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scattersiv4_df, SCATTER, 0, 0), 3210b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scattersiv4_di, SCATTER, 0, 0), 3220b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scattersiv4_sf, SCATTER, 0, 0), 3230b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scattersiv4_si, SCATTER, 0, 0), 3240b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scattersiv8_sf, SCATTER, 0, 0), 3250b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_scattersiv8_si, SCATTER, 0, 0), 3260b57cec5SDimitry Andric X86_INTRINSIC_DATA(rdpmc, RDPMC, X86::RDPMC, 0), 327753f127fSDimitry Andric X86_INTRINSIC_DATA(rdpru, RDPRU, X86::RDPRU, 0), 3280b57cec5SDimitry Andric X86_INTRINSIC_DATA(rdrand_16, RDRAND, X86ISD::RDRAND, 0), 3290b57cec5SDimitry Andric X86_INTRINSIC_DATA(rdrand_32, RDRAND, X86ISD::RDRAND, 0), 3300b57cec5SDimitry Andric X86_INTRINSIC_DATA(rdrand_64, RDRAND, X86ISD::RDRAND, 0), 3310b57cec5SDimitry Andric X86_INTRINSIC_DATA(rdseed_16, RDSEED, X86ISD::RDSEED, 0), 3320b57cec5SDimitry Andric X86_INTRINSIC_DATA(rdseed_32, RDSEED, X86ISD::RDSEED, 0), 3330b57cec5SDimitry Andric X86_INTRINSIC_DATA(rdseed_64, RDSEED, X86ISD::RDSEED, 0), 3340b57cec5SDimitry Andric X86_INTRINSIC_DATA(rdtsc, RDTSC, X86::RDTSC, 0), 3350b57cec5SDimitry Andric X86_INTRINSIC_DATA(rdtscp, RDTSC, X86::RDTSCP, 0), 3360b57cec5SDimitry Andric X86_INTRINSIC_DATA(xgetbv, XGETBV, X86::XGETBV, 0), 3370b57cec5SDimitry Andric X86_INTRINSIC_DATA(xtest, XTEST, X86ISD::XTEST, 0), 3380b57cec5SDimitry Andric }; 3390b57cec5SDimitry Andric 3400b57cec5SDimitry Andric /* 3410b57cec5SDimitry Andric * Find Intrinsic data by intrinsic ID 3420b57cec5SDimitry Andric */ 3430b57cec5SDimitry Andric static const IntrinsicData *getIntrinsicWithChain(unsigned IntNo) { 344fe6060f1SDimitry Andric const IntrinsicData *Data = lower_bound(IntrinsicsWithChain, IntNo); 3450b57cec5SDimitry Andric if (Data != std::end(IntrinsicsWithChain) && Data->Id == IntNo) 3460b57cec5SDimitry Andric return Data; 3470b57cec5SDimitry Andric return nullptr; 3480b57cec5SDimitry Andric } 3490b57cec5SDimitry Andric 3500b57cec5SDimitry Andric /* 3510b57cec5SDimitry Andric * IntrinsicsWithoutChain - the table should be sorted by Intrinsic ID - in 3520b57cec5SDimitry Andric * the alphabetical order. 3530b57cec5SDimitry Andric */ 3540b57cec5SDimitry Andric static const IntrinsicData IntrinsicsWithoutChain[] = { 3550b57cec5SDimitry Andric X86_INTRINSIC_DATA(addcarry_32, ADX, X86ISD::ADC, X86ISD::ADD), 3560b57cec5SDimitry Andric X86_INTRINSIC_DATA(addcarry_64, ADX, X86ISD::ADC, X86ISD::ADD), 3570b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_addsub_pd_256, INTR_TYPE_2OP, X86ISD::ADDSUB, 0), 3580b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_addsub_ps_256, INTR_TYPE_2OP, X86ISD::ADDSUB, 0), 3590b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_blendv_pd_256, BLENDV, X86ISD::BLENDV, 0), 3600b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_blendv_ps_256, BLENDV, X86ISD::BLENDV, 0), 3610b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_cmp_pd_256, INTR_TYPE_3OP, X86ISD::CMPP, 0), 3620b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_cmp_ps_256, INTR_TYPE_3OP, X86ISD::CMPP, 0), 3630b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_cvt_pd2_ps_256, INTR_TYPE_1OP, X86ISD::VFPROUND, 0), 3640b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_cvt_pd2dq_256, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0), 3650b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_cvt_ps2dq_256, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0), 3660b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_cvtt_pd2dq_256, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0), 3670b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_cvtt_ps2dq_256, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0), 3680b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_hadd_pd_256, INTR_TYPE_2OP, X86ISD::FHADD, 0), 3690b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_hadd_ps_256, INTR_TYPE_2OP, X86ISD::FHADD, 0), 3700b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_hsub_pd_256, INTR_TYPE_2OP, X86ISD::FHSUB, 0), 3710b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_hsub_ps_256, INTR_TYPE_2OP, X86ISD::FHSUB, 0), 3720b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_max_pd_256, INTR_TYPE_2OP, X86ISD::FMAX, 0), 3730b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_max_ps_256, INTR_TYPE_2OP, X86ISD::FMAX, 0), 3740b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_min_pd_256, INTR_TYPE_2OP, X86ISD::FMIN, 0), 3750b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_min_ps_256, INTR_TYPE_2OP, X86ISD::FMIN, 0), 3760b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_movmsk_pd_256, INTR_TYPE_1OP, X86ISD::MOVMSK, 0), 3770b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_movmsk_ps_256, INTR_TYPE_1OP, X86ISD::MOVMSK, 0), 3780b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_rcp_ps_256, INTR_TYPE_1OP, X86ISD::FRCP, 0), 3790b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_round_pd_256, ROUNDP, X86ISD::VRNDSCALE, 0), 3800b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_round_ps_256, ROUNDP, X86ISD::VRNDSCALE, 0), 3810b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_rsqrt_ps_256, INTR_TYPE_1OP, X86ISD::FRSQRT, 0), 3820b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_vpermilvar_pd, INTR_TYPE_2OP, X86ISD::VPERMILPV, 0), 383*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx_vpermilvar_pd_256, INTR_TYPE_2OP, X86ISD::VPERMILPV, 384*0fca6ea1SDimitry Andric 0), 3850b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx_vpermilvar_ps, INTR_TYPE_2OP, X86ISD::VPERMILPV, 0), 386*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx_vpermilvar_ps_256, INTR_TYPE_2OP, X86ISD::VPERMILPV, 387*0fca6ea1SDimitry Andric 0), 3880b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_packssdw, INTR_TYPE_2OP, X86ISD::PACKSS, 0), 3890b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_packsswb, INTR_TYPE_2OP, X86ISD::PACKSS, 0), 3900b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_packusdw, INTR_TYPE_2OP, X86ISD::PACKUS, 0), 3910b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_packuswb, INTR_TYPE_2OP, X86ISD::PACKUS, 0), 39281ad6265SDimitry Andric X86_INTRINSIC_DATA(avx2_pavg_b, INTR_TYPE_2OP, ISD::AVGCEILU, 0), 39381ad6265SDimitry Andric X86_INTRINSIC_DATA(avx2_pavg_w, INTR_TYPE_2OP, ISD::AVGCEILU, 0), 3940b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pblendvb, BLENDV, X86ISD::BLENDV, 0), 3950b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_permd, VPERM_2OP, X86ISD::VPERMV, 0), 3960b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_permps, VPERM_2OP, X86ISD::VPERMV, 0), 3970b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_phadd_d, INTR_TYPE_2OP, X86ISD::HADD, 0), 3980b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_phadd_w, INTR_TYPE_2OP, X86ISD::HADD, 0), 3990b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_phsub_d, INTR_TYPE_2OP, X86ISD::HSUB, 0), 4000b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_phsub_w, INTR_TYPE_2OP, X86ISD::HSUB, 0), 4010b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pmadd_ub_sw, INTR_TYPE_2OP, X86ISD::VPMADDUBSW, 0), 4020b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pmadd_wd, INTR_TYPE_2OP, X86ISD::VPMADDWD, 0), 4030b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pmovmskb, INTR_TYPE_1OP, X86ISD::MOVMSK, 0), 4040b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pmul_hr_sw, INTR_TYPE_2OP, X86ISD::MULHRS, 0), 4050b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pmulh_w, INTR_TYPE_2OP, ISD::MULHS, 0), 4060b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pmulhu_w, INTR_TYPE_2OP, ISD::MULHU, 0), 4070b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psad_bw, INTR_TYPE_2OP, X86ISD::PSADBW, 0), 4080b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pshuf_b, INTR_TYPE_2OP, X86ISD::PSHUFB, 0), 4090b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psll_d, INTR_TYPE_2OP, X86ISD::VSHL, 0), 4100b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psll_q, INTR_TYPE_2OP, X86ISD::VSHL, 0), 4110b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psll_w, INTR_TYPE_2OP, X86ISD::VSHL, 0), 4120b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pslli_d, VSHIFT, X86ISD::VSHLI, 0), 4130b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pslli_q, VSHIFT, X86ISD::VSHLI, 0), 4140b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_pslli_w, VSHIFT, X86ISD::VSHLI, 0), 4150b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psllv_d, INTR_TYPE_2OP, X86ISD::VSHLV, 0), 4160b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psllv_d_256, INTR_TYPE_2OP, X86ISD::VSHLV, 0), 4170b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psllv_q, INTR_TYPE_2OP, X86ISD::VSHLV, 0), 4180b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psllv_q_256, INTR_TYPE_2OP, X86ISD::VSHLV, 0), 4190b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psra_d, INTR_TYPE_2OP, X86ISD::VSRA, 0), 4200b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psra_w, INTR_TYPE_2OP, X86ISD::VSRA, 0), 4210b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrai_d, VSHIFT, X86ISD::VSRAI, 0), 4220b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrai_w, VSHIFT, X86ISD::VSRAI, 0), 4230b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrav_d, INTR_TYPE_2OP, X86ISD::VSRAV, 0), 4240b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrav_d_256, INTR_TYPE_2OP, X86ISD::VSRAV, 0), 4250b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrl_d, INTR_TYPE_2OP, X86ISD::VSRL, 0), 4260b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrl_q, INTR_TYPE_2OP, X86ISD::VSRL, 0), 4270b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrl_w, INTR_TYPE_2OP, X86ISD::VSRL, 0), 4280b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrli_d, VSHIFT, X86ISD::VSRLI, 0), 4290b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrli_q, VSHIFT, X86ISD::VSRLI, 0), 4300b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrli_w, VSHIFT, X86ISD::VSRLI, 0), 4310b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrlv_d, INTR_TYPE_2OP, X86ISD::VSRLV, 0), 4320b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrlv_d_256, INTR_TYPE_2OP, X86ISD::VSRLV, 0), 4330b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrlv_q, INTR_TYPE_2OP, X86ISD::VSRLV, 0), 4340b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx2_psrlv_q_256, INTR_TYPE_2OP, X86ISD::VSRLV, 0), 435bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbssd_128, INTR_TYPE_3OP, X86ISD::VPDPBSSD, 0), 436bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbssd_256, INTR_TYPE_3OP, X86ISD::VPDPBSSD, 0), 437bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbssds_128, INTR_TYPE_3OP, X86ISD::VPDPBSSDS, 0), 438bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbssds_256, INTR_TYPE_3OP, X86ISD::VPDPBSSDS, 0), 439bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbsud_128, INTR_TYPE_3OP, X86ISD::VPDPBSUD, 0), 440bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbsud_256, INTR_TYPE_3OP, X86ISD::VPDPBSUD, 0), 441bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbsuds_128, INTR_TYPE_3OP, X86ISD::VPDPBSUDS, 0), 442bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbsuds_256, INTR_TYPE_3OP, X86ISD::VPDPBSUDS, 0), 443bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbuud_128, INTR_TYPE_3OP, X86ISD::VPDPBUUD, 0), 444bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbuud_256, INTR_TYPE_3OP, X86ISD::VPDPBUUD, 0), 445bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbuuds_128, INTR_TYPE_3OP, X86ISD::VPDPBUUDS, 0), 446bdd1243dSDimitry Andric X86_INTRINSIC_DATA(avx2_vpdpbuuds_256, INTR_TYPE_3OP, X86ISD::VPDPBUUDS, 0), 447*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_add_pd_512, INTR_TYPE_2OP, ISD::FADD, 448*0fca6ea1SDimitry Andric X86ISD::FADD_RND), 449*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_add_ps_512, INTR_TYPE_2OP, ISD::FADD, 450*0fca6ea1SDimitry Andric X86ISD::FADD_RND), 451*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_conflict_d_128, INTR_TYPE_1OP, X86ISD::CONFLICT, 452*0fca6ea1SDimitry Andric 0), 453*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_conflict_d_256, INTR_TYPE_1OP, X86ISD::CONFLICT, 454*0fca6ea1SDimitry Andric 0), 455*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_conflict_d_512, INTR_TYPE_1OP, X86ISD::CONFLICT, 456*0fca6ea1SDimitry Andric 0), 457*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_conflict_q_128, INTR_TYPE_1OP, X86ISD::CONFLICT, 458*0fca6ea1SDimitry Andric 0), 459*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_conflict_q_256, INTR_TYPE_1OP, X86ISD::CONFLICT, 460*0fca6ea1SDimitry Andric 0), 461*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_conflict_q_512, INTR_TYPE_1OP, X86ISD::CONFLICT, 462*0fca6ea1SDimitry Andric 0), 463*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvtsi2sd64, INTR_TYPE_2OP, 464*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP, 465*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP_RND), 466*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvtsi2ss32, INTR_TYPE_2OP, 467*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP, 468*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP_RND), 469*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvtsi2ss64, INTR_TYPE_2OP, 470*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP, 471*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP_RND), 472*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvttsd2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI, 473*0fca6ea1SDimitry Andric X86ISD::CVTTS2SI_SAE), 474*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvttsd2si64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI, 475*0fca6ea1SDimitry Andric X86ISD::CVTTS2SI_SAE), 476*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvttsd2usi, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI, 477*0fca6ea1SDimitry Andric X86ISD::CVTTS2UI_SAE), 478*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvttsd2usi64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI, 479*0fca6ea1SDimitry Andric X86ISD::CVTTS2UI_SAE), 480*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvttss2si, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI, 481*0fca6ea1SDimitry Andric X86ISD::CVTTS2SI_SAE), 482*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvttss2si64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2SI, 483*0fca6ea1SDimitry Andric X86ISD::CVTTS2SI_SAE), 484*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvttss2usi, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI, 485*0fca6ea1SDimitry Andric X86ISD::CVTTS2UI_SAE), 486*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvttss2usi64, INTR_TYPE_1OP_SAE, X86ISD::CVTTS2UI, 487*0fca6ea1SDimitry Andric X86ISD::CVTTS2UI_SAE), 488*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvtusi2ss, INTR_TYPE_2OP, 489*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP, 490*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP_RND), 491*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvtusi642sd, INTR_TYPE_2OP, 492*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP, 493*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP_RND), 494*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_cvtusi642ss, INTR_TYPE_2OP, 495*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP, 496*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP_RND), 497*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_dbpsadbw_128, INTR_TYPE_3OP_IMM8, 498*0fca6ea1SDimitry Andric X86ISD::DBPSADBW, 0), 499*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_dbpsadbw_256, INTR_TYPE_3OP_IMM8, 500*0fca6ea1SDimitry Andric X86ISD::DBPSADBW, 0), 501*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_dbpsadbw_512, INTR_TYPE_3OP_IMM8, 502*0fca6ea1SDimitry Andric X86ISD::DBPSADBW, 0), 503*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_div_pd_512, INTR_TYPE_2OP, ISD::FDIV, 504*0fca6ea1SDimitry Andric X86ISD::FDIV_RND), 505*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_div_ps_512, INTR_TYPE_2OP, ISD::FDIV, 506*0fca6ea1SDimitry Andric X86ISD::FDIV_RND), 507*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_fpclass_pd_128, INTR_TYPE_2OP, X86ISD::VFPCLASS, 508*0fca6ea1SDimitry Andric 0), 509*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_fpclass_pd_256, INTR_TYPE_2OP, X86ISD::VFPCLASS, 510*0fca6ea1SDimitry Andric 0), 511*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_fpclass_pd_512, INTR_TYPE_2OP, X86ISD::VFPCLASS, 512*0fca6ea1SDimitry Andric 0), 513*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_fpclass_ps_128, INTR_TYPE_2OP, X86ISD::VFPCLASS, 514*0fca6ea1SDimitry Andric 0), 515*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_fpclass_ps_256, INTR_TYPE_2OP, X86ISD::VFPCLASS, 516*0fca6ea1SDimitry Andric 0), 517*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_fpclass_ps_512, INTR_TYPE_2OP, X86ISD::VFPCLASS, 518*0fca6ea1SDimitry Andric 0), 5190b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_kadd_b, INTR_TYPE_2OP, X86ISD::KADD, 0), 5200b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_kadd_d, INTR_TYPE_2OP, X86ISD::KADD, 0), 5210b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_kadd_q, INTR_TYPE_2OP, X86ISD::KADD, 0), 5220b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_kadd_w, INTR_TYPE_2OP, X86ISD::KADD, 0), 5230b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_add_sd_round, INTR_TYPE_SCALAR_MASK, 5240b57cec5SDimitry Andric X86ISD::FADDS, X86ISD::FADDS_RND), 5250b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_add_ss_round, INTR_TYPE_SCALAR_MASK, 5260b57cec5SDimitry Andric X86ISD::FADDS, X86ISD::FADDS_RND), 527e8d8bef9SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cmp_pd_128, CMP_MASK_CC, X86ISD::CMPMM, 0), 528e8d8bef9SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cmp_pd_256, CMP_MASK_CC, X86ISD::CMPMM, 0), 529*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cmp_pd_512, CMP_MASK_CC, X86ISD::CMPMM, 530*0fca6ea1SDimitry Andric X86ISD::CMPMM_SAE), 531e8d8bef9SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cmp_ps_128, CMP_MASK_CC, X86ISD::CMPMM, 0), 532e8d8bef9SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cmp_ps_256, CMP_MASK_CC, X86ISD::CMPMM, 0), 533*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cmp_ps_512, CMP_MASK_CC, X86ISD::CMPMM, 534*0fca6ea1SDimitry Andric X86ISD::CMPMM_SAE), 535*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cmp_sd, CMP_MASK_SCALAR_CC, X86ISD::FSETCCM, 536*0fca6ea1SDimitry Andric X86ISD::FSETCCM_SAE), 537*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cmp_ss, CMP_MASK_SCALAR_CC, X86ISD::FSETCCM, 538*0fca6ea1SDimitry Andric X86ISD::FSETCCM_SAE), 5390b57cec5SDimitry Andric 5400b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_compress, COMPRESS_EXPAND_IN_REG, 5410b57cec5SDimitry Andric X86ISD::COMPRESS, 0), 542*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2dq_128, CVTPD2DQ_MASK, X86ISD::CVTP2SI, 543*0fca6ea1SDimitry Andric X86ISD::MCVTP2SI), 5440b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2dq_512, INTR_TYPE_1OP_MASK, 5450b57cec5SDimitry Andric X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND), 546*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2ps, CVTPD2PS_MASK, X86ISD::VFPROUND, 547*0fca6ea1SDimitry Andric X86ISD::VMFPROUND), 5480b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2ps_512, INTR_TYPE_1OP_MASK, 5490b57cec5SDimitry Andric X86ISD::VFPROUND, X86ISD::VFPROUND_RND), 5500b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2qq_128, INTR_TYPE_1OP_MASK, 5510b57cec5SDimitry Andric X86ISD::CVTP2SI, 0), 5520b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2qq_256, INTR_TYPE_1OP_MASK, 5530b57cec5SDimitry Andric X86ISD::CVTP2SI, 0), 5540b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2qq_512, INTR_TYPE_1OP_MASK, 5550b57cec5SDimitry Andric X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND), 5560b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2udq_128, CVTPD2DQ_MASK, 5570b57cec5SDimitry Andric X86ISD::CVTP2UI, X86ISD::MCVTP2UI), 5580b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2udq_256, INTR_TYPE_1OP_MASK, 5590b57cec5SDimitry Andric X86ISD::CVTP2UI, 0), 5600b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2udq_512, INTR_TYPE_1OP_MASK, 5610b57cec5SDimitry Andric X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND), 5620b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2uqq_128, INTR_TYPE_1OP_MASK, 5630b57cec5SDimitry Andric X86ISD::CVTP2UI, 0), 5640b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2uqq_256, INTR_TYPE_1OP_MASK, 5650b57cec5SDimitry Andric X86ISD::CVTP2UI, 0), 5660b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtpd2uqq_512, INTR_TYPE_1OP_MASK, 5670b57cec5SDimitry Andric X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND), 5680b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2dq_128, INTR_TYPE_1OP_MASK, 5690b57cec5SDimitry Andric X86ISD::CVTP2SI, 0), 5700b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2dq_256, INTR_TYPE_1OP_MASK, 5710b57cec5SDimitry Andric X86ISD::CVTP2SI, 0), 5720b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2dq_512, INTR_TYPE_1OP_MASK, 5730b57cec5SDimitry Andric X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND), 5740b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2pd_512, INTR_TYPE_1OP_MASK_SAE, 5750b57cec5SDimitry Andric ISD::FP_EXTEND, X86ISD::VFPEXT_SAE), 5760b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2qq_128, INTR_TYPE_1OP_MASK, 5770b57cec5SDimitry Andric X86ISD::CVTP2SI, 0), 5780b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2qq_256, INTR_TYPE_1OP_MASK, 5790b57cec5SDimitry Andric X86ISD::CVTP2SI, 0), 5800b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2qq_512, INTR_TYPE_1OP_MASK, 5810b57cec5SDimitry Andric X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND), 5820b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2udq_128, INTR_TYPE_1OP_MASK, 5830b57cec5SDimitry Andric X86ISD::CVTP2UI, 0), 5840b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2udq_256, INTR_TYPE_1OP_MASK, 5850b57cec5SDimitry Andric X86ISD::CVTP2UI, 0), 5860b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2udq_512, INTR_TYPE_1OP_MASK, 5870b57cec5SDimitry Andric X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND), 5880b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2uqq_128, INTR_TYPE_1OP_MASK, 5890b57cec5SDimitry Andric X86ISD::CVTP2UI, 0), 5900b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2uqq_256, INTR_TYPE_1OP_MASK, 5910b57cec5SDimitry Andric X86ISD::CVTP2UI, 0), 5920b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtps2uqq_512, INTR_TYPE_1OP_MASK, 5930b57cec5SDimitry Andric X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND), 594*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtqq2ps_128, CVTQQ2PS_MASK, X86ISD::CVTSI2P, 595*0fca6ea1SDimitry Andric X86ISD::MCVTSI2P), 5960b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtsd2ss_round, INTR_TYPE_SCALAR_MASK_RND, 5970b57cec5SDimitry Andric X86ISD::VFPROUNDS, X86ISD::VFPROUNDS_RND), 5980b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtss2sd_round, INTR_TYPE_SCALAR_MASK_SAE, 5990b57cec5SDimitry Andric X86ISD::VFPEXTS, X86ISD::VFPEXTS_SAE), 6000b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2dq_128, CVTPD2DQ_MASK, 6010b57cec5SDimitry Andric X86ISD::CVTTP2SI, X86ISD::MCVTTP2SI), 6020b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2dq_512, INTR_TYPE_1OP_MASK_SAE, 6030b57cec5SDimitry Andric X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE), 6040b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2qq_128, INTR_TYPE_1OP_MASK, 6050b57cec5SDimitry Andric X86ISD::CVTTP2SI, 0), 6060b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2qq_256, INTR_TYPE_1OP_MASK, 6070b57cec5SDimitry Andric X86ISD::CVTTP2SI, 0), 6080b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2qq_512, INTR_TYPE_1OP_MASK_SAE, 6090b57cec5SDimitry Andric X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE), 6100b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2udq_128, CVTPD2DQ_MASK, 6110b57cec5SDimitry Andric X86ISD::CVTTP2UI, X86ISD::MCVTTP2UI), 6120b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2udq_256, INTR_TYPE_1OP_MASK, 6130b57cec5SDimitry Andric X86ISD::CVTTP2UI, 0), 6140b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2udq_512, INTR_TYPE_1OP_MASK_SAE, 6150b57cec5SDimitry Andric X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE), 6160b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2uqq_128, INTR_TYPE_1OP_MASK, 6170b57cec5SDimitry Andric X86ISD::CVTTP2UI, 0), 6180b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2uqq_256, INTR_TYPE_1OP_MASK, 6190b57cec5SDimitry Andric X86ISD::CVTTP2UI, 0), 6200b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttpd2uqq_512, INTR_TYPE_1OP_MASK_SAE, 6210b57cec5SDimitry Andric X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE), 6220b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2dq_512, INTR_TYPE_1OP_MASK_SAE, 6230b57cec5SDimitry Andric X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE), 6240b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2qq_128, INTR_TYPE_1OP_MASK, 6250b57cec5SDimitry Andric X86ISD::CVTTP2SI, 0), 6260b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2qq_256, INTR_TYPE_1OP_MASK, 6270b57cec5SDimitry Andric X86ISD::CVTTP2SI, 0), 6280b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2qq_512, INTR_TYPE_1OP_MASK_SAE, 6290b57cec5SDimitry Andric X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE), 6300b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2udq_128, INTR_TYPE_1OP_MASK, 6310b57cec5SDimitry Andric X86ISD::CVTTP2UI, 0), 6320b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2udq_256, INTR_TYPE_1OP_MASK, 6330b57cec5SDimitry Andric X86ISD::CVTTP2UI, 0), 6340b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2udq_512, INTR_TYPE_1OP_MASK_SAE, 6350b57cec5SDimitry Andric X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE), 6360b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2uqq_128, INTR_TYPE_1OP_MASK, 6370b57cec5SDimitry Andric X86ISD::CVTTP2UI, 0), 6380b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2uqq_256, INTR_TYPE_1OP_MASK, 6390b57cec5SDimitry Andric X86ISD::CVTTP2UI, 0), 6400b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvttps2uqq_512, INTR_TYPE_1OP_MASK_SAE, 6410b57cec5SDimitry Andric X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE), 6420b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_cvtuqq2ps_128, CVTQQ2PS_MASK, 6430b57cec5SDimitry Andric X86ISD::CVTUI2P, X86ISD::MCVTUI2P), 6440b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_div_sd_round, INTR_TYPE_SCALAR_MASK, 6450b57cec5SDimitry Andric X86ISD::FDIVS, X86ISD::FDIVS_RND), 6460b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_div_ss_round, INTR_TYPE_SCALAR_MASK, 6470b57cec5SDimitry Andric X86ISD::FDIVS, X86ISD::FDIVS_RND), 6480b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_expand, COMPRESS_EXPAND_IN_REG, 6490b57cec5SDimitry Andric X86ISD::EXPAND, 0), 650*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fixupimm_pd_128, FIXUPIMM, X86ISD::VFIXUPIMM, 651*0fca6ea1SDimitry Andric 0), 652*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fixupimm_pd_256, FIXUPIMM, X86ISD::VFIXUPIMM, 653*0fca6ea1SDimitry Andric 0), 654*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fixupimm_pd_512, FIXUPIMM, X86ISD::VFIXUPIMM, 655*0fca6ea1SDimitry Andric X86ISD::VFIXUPIMM_SAE), 656*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fixupimm_ps_128, FIXUPIMM, X86ISD::VFIXUPIMM, 657*0fca6ea1SDimitry Andric 0), 658*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fixupimm_ps_256, FIXUPIMM, X86ISD::VFIXUPIMM, 659*0fca6ea1SDimitry Andric 0), 660*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fixupimm_ps_512, FIXUPIMM, X86ISD::VFIXUPIMM, 661*0fca6ea1SDimitry Andric X86ISD::VFIXUPIMM_SAE), 662*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fixupimm_sd, FIXUPIMM, X86ISD::VFIXUPIMMS, 663*0fca6ea1SDimitry Andric X86ISD::VFIXUPIMMS_SAE), 664*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fixupimm_ss, FIXUPIMM, X86ISD::VFIXUPIMMS, 665*0fca6ea1SDimitry Andric X86ISD::VFIXUPIMMS_SAE), 6660b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fpclass_sd, FPCLASSS, X86ISD::VFPCLASSS, 0), 6670b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_fpclass_ss, FPCLASSS, X86ISD::VFPCLASSS, 0), 6680b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getexp_pd_128, INTR_TYPE_1OP_MASK, 6690b57cec5SDimitry Andric X86ISD::FGETEXP, 0), 6700b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getexp_pd_256, INTR_TYPE_1OP_MASK, 6710b57cec5SDimitry Andric X86ISD::FGETEXP, 0), 6720b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getexp_pd_512, INTR_TYPE_1OP_MASK_SAE, 6730b57cec5SDimitry Andric X86ISD::FGETEXP, X86ISD::FGETEXP_SAE), 6740b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getexp_ps_128, INTR_TYPE_1OP_MASK, 6750b57cec5SDimitry Andric X86ISD::FGETEXP, 0), 6760b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getexp_ps_256, INTR_TYPE_1OP_MASK, 6770b57cec5SDimitry Andric X86ISD::FGETEXP, 0), 6780b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getexp_ps_512, INTR_TYPE_1OP_MASK_SAE, 6790b57cec5SDimitry Andric X86ISD::FGETEXP, X86ISD::FGETEXP_SAE), 6800b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getexp_sd, INTR_TYPE_SCALAR_MASK_SAE, 6810b57cec5SDimitry Andric X86ISD::FGETEXPS, X86ISD::FGETEXPS_SAE), 6820b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getexp_ss, INTR_TYPE_SCALAR_MASK_SAE, 6830b57cec5SDimitry Andric X86ISD::FGETEXPS, X86ISD::FGETEXPS_SAE), 6840b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getmant_pd_128, INTR_TYPE_2OP_MASK_SAE, 6850b57cec5SDimitry Andric X86ISD::VGETMANT, 0), 6860b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getmant_pd_256, INTR_TYPE_2OP_MASK_SAE, 6870b57cec5SDimitry Andric X86ISD::VGETMANT, 0), 6880b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getmant_pd_512, INTR_TYPE_2OP_MASK_SAE, 6890b57cec5SDimitry Andric X86ISD::VGETMANT, X86ISD::VGETMANT_SAE), 6900b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getmant_ps_128, INTR_TYPE_2OP_MASK_SAE, 6910b57cec5SDimitry Andric X86ISD::VGETMANT, 0), 6920b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getmant_ps_256, INTR_TYPE_2OP_MASK_SAE, 6930b57cec5SDimitry Andric X86ISD::VGETMANT, 0), 6940b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getmant_ps_512, INTR_TYPE_2OP_MASK_SAE, 6950b57cec5SDimitry Andric X86ISD::VGETMANT, X86ISD::VGETMANT_SAE), 6960b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getmant_sd, INTR_TYPE_3OP_SCALAR_MASK_SAE, 6970b57cec5SDimitry Andric X86ISD::VGETMANTS, X86ISD::VGETMANTS_SAE), 6980b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_getmant_ss, INTR_TYPE_3OP_SCALAR_MASK_SAE, 6990b57cec5SDimitry Andric X86ISD::VGETMANTS, X86ISD::VGETMANTS_SAE), 7000b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_max_sd_round, INTR_TYPE_SCALAR_MASK_SAE, 7010b57cec5SDimitry Andric X86ISD::FMAXS, X86ISD::FMAXS_SAE), 7020b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_max_ss_round, INTR_TYPE_SCALAR_MASK_SAE, 7030b57cec5SDimitry Andric X86ISD::FMAXS, X86ISD::FMAXS_SAE), 7040b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_min_sd_round, INTR_TYPE_SCALAR_MASK_SAE, 7050b57cec5SDimitry Andric X86ISD::FMINS, X86ISD::FMINS_SAE), 7060b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_min_ss_round, INTR_TYPE_SCALAR_MASK_SAE, 7070b57cec5SDimitry Andric X86ISD::FMINS, X86ISD::FMINS_SAE), 7080b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_mul_sd_round, INTR_TYPE_SCALAR_MASK, 7090b57cec5SDimitry Andric X86ISD::FMULS, X86ISD::FMULS_RND), 7100b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_mul_ss_round, INTR_TYPE_SCALAR_MASK, 7110b57cec5SDimitry Andric X86ISD::FMULS, X86ISD::FMULS_RND), 712*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_db_128, TRUNCATE_TO_REG, X86ISD::VTRUNC, 713*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 714*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_db_256, TRUNCATE_TO_REG, X86ISD::VTRUNC, 715*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 716*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_db_512, TRUNCATE_TO_REG, ISD::TRUNCATE, 717*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 718*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_dw_128, TRUNCATE_TO_REG, X86ISD::VTRUNC, 719*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 720*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_dw_256, TRUNCATE_TO_REG, ISD::TRUNCATE, 721*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 722*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_dw_512, TRUNCATE_TO_REG, ISD::TRUNCATE, 723*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 724*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qb_128, TRUNCATE_TO_REG, X86ISD::VTRUNC, 725*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 726*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qb_256, TRUNCATE_TO_REG, X86ISD::VTRUNC, 727*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 728*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qb_512, TRUNCATE_TO_REG, X86ISD::VTRUNC, 729*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 730*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qd_128, TRUNCATE_TO_REG, X86ISD::VTRUNC, 731*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 732*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qw_128, TRUNCATE_TO_REG, X86ISD::VTRUNC, 733*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 734*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qw_256, TRUNCATE_TO_REG, X86ISD::VTRUNC, 735*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 736*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_qw_512, TRUNCATE_TO_REG, ISD::TRUNCATE, 737*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 738*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmov_wb_128, TRUNCATE_TO_REG, X86ISD::VTRUNC, 739*0fca6ea1SDimitry Andric X86ISD::VMTRUNC), 7400b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_db_128, TRUNCATE_TO_REG, 7410b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7420b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_db_256, TRUNCATE_TO_REG, 7430b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7440b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_db_512, TRUNCATE_TO_REG, 7450b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7460b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_128, TRUNCATE_TO_REG, 7470b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7480b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_256, TRUNCATE_TO_REG, 7490b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7500b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_dw_512, TRUNCATE_TO_REG, 7510b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7520b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_128, TRUNCATE_TO_REG, 7530b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7540b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_256, TRUNCATE_TO_REG, 7550b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7560b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qb_512, TRUNCATE_TO_REG, 7570b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7585ffd83dbSDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_128, TRUNCATE_TO_REG, 7595ffd83dbSDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7600b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_256, INTR_TYPE_1OP_MASK, 7610b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 7620b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qd_512, INTR_TYPE_1OP_MASK, 7630b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 7640b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_128, TRUNCATE_TO_REG, 7650b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7660b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_256, TRUNCATE_TO_REG, 7670b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7680b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_qw_512, TRUNCATE_TO_REG, 7690b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7700b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_128, TRUNCATE_TO_REG, 7710b57cec5SDimitry Andric X86ISD::VTRUNCS, X86ISD::VMTRUNCS), 7720b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_256, INTR_TYPE_1OP_MASK, 7730b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 7740b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovs_wb_512, INTR_TYPE_1OP_MASK, 7750b57cec5SDimitry Andric X86ISD::VTRUNCS, 0), 7760b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_db_128, TRUNCATE_TO_REG, 7770b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7780b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_db_256, TRUNCATE_TO_REG, 7790b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7800b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_db_512, TRUNCATE_TO_REG, 7810b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7820b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_128, TRUNCATE_TO_REG, 7830b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7840b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_256, TRUNCATE_TO_REG, 7850b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7860b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_dw_512, TRUNCATE_TO_REG, 7870b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7880b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_128, TRUNCATE_TO_REG, 7890b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7900b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_256, TRUNCATE_TO_REG, 7910b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7920b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qb_512, TRUNCATE_TO_REG, 7930b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7940b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_128, TRUNCATE_TO_REG, 7950b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 7960b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_256, INTR_TYPE_1OP_MASK, 7970b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 7980b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qd_512, INTR_TYPE_1OP_MASK, 7990b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 8000b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_128, TRUNCATE_TO_REG, 8010b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 8020b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_256, TRUNCATE_TO_REG, 8030b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 8040b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_qw_512, TRUNCATE_TO_REG, 8050b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 8060b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_128, TRUNCATE_TO_REG, 8070b57cec5SDimitry Andric X86ISD::VTRUNCUS, X86ISD::VMTRUNCUS), 8080b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_256, INTR_TYPE_1OP_MASK, 8090b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 8100b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_pmovus_wb_512, INTR_TYPE_1OP_MASK, 8110b57cec5SDimitry Andric X86ISD::VTRUNCUS, 0), 812*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_range_pd_128, INTR_TYPE_3OP_MASK_SAE, 813*0fca6ea1SDimitry Andric X86ISD::VRANGE, 0), 814*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_range_pd_256, INTR_TYPE_3OP_MASK_SAE, 815*0fca6ea1SDimitry Andric X86ISD::VRANGE, 0), 816*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_range_pd_512, INTR_TYPE_3OP_MASK_SAE, 817*0fca6ea1SDimitry Andric X86ISD::VRANGE, X86ISD::VRANGE_SAE), 818*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_range_ps_128, INTR_TYPE_3OP_MASK_SAE, 819*0fca6ea1SDimitry Andric X86ISD::VRANGE, 0), 820*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_range_ps_256, INTR_TYPE_3OP_MASK_SAE, 821*0fca6ea1SDimitry Andric X86ISD::VRANGE, 0), 822*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_range_ps_512, INTR_TYPE_3OP_MASK_SAE, 823*0fca6ea1SDimitry Andric X86ISD::VRANGE, X86ISD::VRANGE_SAE), 824*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_range_sd, INTR_TYPE_SCALAR_MASK, 825*0fca6ea1SDimitry Andric X86ISD::VRANGES, X86ISD::VRANGES_SAE), 826*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_range_ss, INTR_TYPE_SCALAR_MASK, 827*0fca6ea1SDimitry Andric X86ISD::VRANGES, X86ISD::VRANGES_SAE), 828*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_reduce_pd_128, INTR_TYPE_2OP_MASK_SAE, 829*0fca6ea1SDimitry Andric X86ISD::VREDUCE, 0), 830*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_reduce_pd_256, INTR_TYPE_2OP_MASK_SAE, 831*0fca6ea1SDimitry Andric X86ISD::VREDUCE, 0), 832*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_reduce_pd_512, INTR_TYPE_2OP_MASK_SAE, 833*0fca6ea1SDimitry Andric X86ISD::VREDUCE, X86ISD::VREDUCE_SAE), 834*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_reduce_ps_128, INTR_TYPE_2OP_MASK_SAE, 835*0fca6ea1SDimitry Andric X86ISD::VREDUCE, 0), 836*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_reduce_ps_256, INTR_TYPE_2OP_MASK_SAE, 837*0fca6ea1SDimitry Andric X86ISD::VREDUCE, 0), 838*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_reduce_ps_512, INTR_TYPE_2OP_MASK_SAE, 839*0fca6ea1SDimitry Andric X86ISD::VREDUCE, X86ISD::VREDUCE_SAE), 840*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_reduce_sd, INTR_TYPE_SCALAR_MASK, 841*0fca6ea1SDimitry Andric X86ISD::VREDUCES, X86ISD::VREDUCES_SAE), 842*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_reduce_ss, INTR_TYPE_SCALAR_MASK, 843*0fca6ea1SDimitry Andric X86ISD::VREDUCES, X86ISD::VREDUCES_SAE), 844*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_rndscale_pd_128, INTR_TYPE_2OP_MASK_SAE, 845*0fca6ea1SDimitry Andric X86ISD::VRNDSCALE, 0), 846*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_rndscale_pd_256, INTR_TYPE_2OP_MASK_SAE, 847*0fca6ea1SDimitry Andric X86ISD::VRNDSCALE, 0), 848*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_rndscale_pd_512, INTR_TYPE_2OP_MASK_SAE, 849*0fca6ea1SDimitry Andric X86ISD::VRNDSCALE, X86ISD::VRNDSCALE_SAE), 850*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_rndscale_ps_128, INTR_TYPE_2OP_MASK_SAE, 851*0fca6ea1SDimitry Andric X86ISD::VRNDSCALE, 0), 852*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_rndscale_ps_256, INTR_TYPE_2OP_MASK_SAE, 853*0fca6ea1SDimitry Andric X86ISD::VRNDSCALE, 0), 854*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_rndscale_ps_512, INTR_TYPE_2OP_MASK_SAE, 855*0fca6ea1SDimitry Andric X86ISD::VRNDSCALE, X86ISD::VRNDSCALE_SAE), 8560b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_rndscale_sd, INTR_TYPE_SCALAR_MASK, 8570b57cec5SDimitry Andric X86ISD::VRNDSCALES, X86ISD::VRNDSCALES_SAE), 8580b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_rndscale_ss, INTR_TYPE_SCALAR_MASK, 8590b57cec5SDimitry Andric X86ISD::VRNDSCALES, X86ISD::VRNDSCALES_SAE), 8600b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scalef_pd_128, INTR_TYPE_2OP_MASK, 8610b57cec5SDimitry Andric X86ISD::SCALEF, 0), 8620b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scalef_pd_256, INTR_TYPE_2OP_MASK, 8630b57cec5SDimitry Andric X86ISD::SCALEF, 0), 8640b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scalef_pd_512, INTR_TYPE_2OP_MASK, 8650b57cec5SDimitry Andric X86ISD::SCALEF, X86ISD::SCALEF_RND), 8660b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scalef_ps_128, INTR_TYPE_2OP_MASK, 8670b57cec5SDimitry Andric X86ISD::SCALEF, 0), 8680b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scalef_ps_256, INTR_TYPE_2OP_MASK, 8690b57cec5SDimitry Andric X86ISD::SCALEF, 0), 8700b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scalef_ps_512, INTR_TYPE_2OP_MASK, 8710b57cec5SDimitry Andric X86ISD::SCALEF, X86ISD::SCALEF_RND), 8720b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scalef_sd, INTR_TYPE_SCALAR_MASK, 8730b57cec5SDimitry Andric X86ISD::SCALEFS, X86ISD::SCALEFS_RND), 8740b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_scalef_ss, INTR_TYPE_SCALAR_MASK, 8750b57cec5SDimitry Andric X86ISD::SCALEFS, X86ISD::SCALEFS_RND), 8760b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_sqrt_sd, INTR_TYPE_SCALAR_MASK, 8770b57cec5SDimitry Andric X86ISD::FSQRTS, X86ISD::FSQRTS_RND), 8780b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_sqrt_ss, INTR_TYPE_SCALAR_MASK, 8790b57cec5SDimitry Andric X86ISD::FSQRTS, X86ISD::FSQRTS_RND), 8800b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_sub_sd_round, INTR_TYPE_SCALAR_MASK, 8810b57cec5SDimitry Andric X86ISD::FSUBS, X86ISD::FSUBS_RND), 8820b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_sub_ss_round, INTR_TYPE_SCALAR_MASK, 8830b57cec5SDimitry Andric X86ISD::FSUBS, X86ISD::FSUBS_RND), 8840b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_vcvtph2ps_512, INTR_TYPE_1OP_MASK_SAE, 8850b57cec5SDimitry Andric X86ISD::CVTPH2PS, X86ISD::CVTPH2PS_SAE), 8860b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_128, CVTPS2PH_MASK, 8870b57cec5SDimitry Andric X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH), 8880b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_256, CVTPS2PH_MASK, 8890b57cec5SDimitry Andric X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH), 8900b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_mask_vcvtps2ph_512, CVTPS2PH_MASK, 8910b57cec5SDimitry Andric X86ISD::CVTPS2PH, X86ISD::MCVTPS2PH), 8920b57cec5SDimitry Andric 8930b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_128, FIXUPIMM_MASKZ, 8940b57cec5SDimitry Andric X86ISD::VFIXUPIMM, 0), 8950b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_256, FIXUPIMM_MASKZ, 8960b57cec5SDimitry Andric X86ISD::VFIXUPIMM, 0), 8970b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_maskz_fixupimm_pd_512, FIXUPIMM_MASKZ, 8980b57cec5SDimitry Andric X86ISD::VFIXUPIMM, X86ISD::VFIXUPIMM_SAE), 8990b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ps_128, FIXUPIMM_MASKZ, 9000b57cec5SDimitry Andric X86ISD::VFIXUPIMM, 0), 9010b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ps_256, FIXUPIMM_MASKZ, 9020b57cec5SDimitry Andric X86ISD::VFIXUPIMM, 0), 9030b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ps_512, FIXUPIMM_MASKZ, 9040b57cec5SDimitry Andric X86ISD::VFIXUPIMM, X86ISD::VFIXUPIMM_SAE), 9050b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_maskz_fixupimm_sd, FIXUPIMM_MASKZ, 9060b57cec5SDimitry Andric X86ISD::VFIXUPIMMS, X86ISD::VFIXUPIMMS_SAE), 9070b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_maskz_fixupimm_ss, FIXUPIMM_MASKZ, 9080b57cec5SDimitry Andric X86ISD::VFIXUPIMMS, X86ISD::VFIXUPIMMS_SAE), 9090b57cec5SDimitry Andric 910*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_max_pd_512, INTR_TYPE_2OP_SAE, X86ISD::FMAX, 911*0fca6ea1SDimitry Andric X86ISD::FMAX_SAE), 912*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_max_ps_512, INTR_TYPE_2OP_SAE, X86ISD::FMAX, 913*0fca6ea1SDimitry Andric X86ISD::FMAX_SAE), 914*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_min_pd_512, INTR_TYPE_2OP_SAE, X86ISD::FMIN, 915*0fca6ea1SDimitry Andric X86ISD::FMIN_SAE), 916*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_min_ps_512, INTR_TYPE_2OP_SAE, X86ISD::FMIN, 917*0fca6ea1SDimitry Andric X86ISD::FMIN_SAE), 918*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mul_pd_512, INTR_TYPE_2OP, ISD::FMUL, 919*0fca6ea1SDimitry Andric X86ISD::FMUL_RND), 920*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_mul_ps_512, INTR_TYPE_2OP, ISD::FMUL, 921*0fca6ea1SDimitry Andric X86ISD::FMUL_RND), 9220b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_packssdw_512, INTR_TYPE_2OP, X86ISD::PACKSS, 0), 9230b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_packsswb_512, INTR_TYPE_2OP, X86ISD::PACKSS, 0), 9240b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_packusdw_512, INTR_TYPE_2OP, X86ISD::PACKUS, 0), 9250b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_packuswb_512, INTR_TYPE_2OP, X86ISD::PACKUS, 0), 92681ad6265SDimitry Andric X86_INTRINSIC_DATA(avx512_pavg_b_512, INTR_TYPE_2OP, ISD::AVGCEILU, 0), 92781ad6265SDimitry Andric X86_INTRINSIC_DATA(avx512_pavg_w_512, INTR_TYPE_2OP, ISD::AVGCEILU, 0), 9280b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_df_256, VPERM_2OP, X86ISD::VPERMV, 0), 9290b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_df_512, VPERM_2OP, X86ISD::VPERMV, 0), 9300b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_di_256, VPERM_2OP, X86ISD::VPERMV, 0), 9310b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_di_512, VPERM_2OP, X86ISD::VPERMV, 0), 9320b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_hi_128, VPERM_2OP, X86ISD::VPERMV, 0), 9330b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_hi_256, VPERM_2OP, X86ISD::VPERMV, 0), 9340b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_hi_512, VPERM_2OP, X86ISD::VPERMV, 0), 9350b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_qi_128, VPERM_2OP, X86ISD::VPERMV, 0), 9360b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_qi_256, VPERM_2OP, X86ISD::VPERMV, 0), 9370b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_qi_512, VPERM_2OP, X86ISD::VPERMV, 0), 9380b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_sf_512, VPERM_2OP, X86ISD::VPERMV, 0), 9390b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_permvar_si_512, VPERM_2OP, X86ISD::VPERMV, 0), 940*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pmaddubs_w_512, INTR_TYPE_2OP, X86ISD::VPMADDUBSW, 941*0fca6ea1SDimitry Andric 0), 9420b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_pmaddw_d_512, INTR_TYPE_2OP, X86ISD::VPMADDWD, 0), 9430b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_pmul_hr_sw_512, INTR_TYPE_2OP, X86ISD::MULHRS, 0), 9440b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_pmulh_w_512, INTR_TYPE_2OP, ISD::MULHS, 0), 9450b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_pmulhu_w_512, INTR_TYPE_2OP, ISD::MULHU, 0), 946*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pmultishift_qb_128, INTR_TYPE_2OP, 947*0fca6ea1SDimitry Andric X86ISD::MULTISHIFT, 0), 948*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pmultishift_qb_256, INTR_TYPE_2OP, 949*0fca6ea1SDimitry Andric X86ISD::MULTISHIFT, 0), 950*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pmultishift_qb_512, INTR_TYPE_2OP, 951*0fca6ea1SDimitry Andric X86ISD::MULTISHIFT, 0), 9520b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psad_bw_512, INTR_TYPE_2OP, X86ISD::PSADBW, 0), 9530b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_pshuf_b_512, INTR_TYPE_2OP, X86ISD::PSHUFB, 0), 9540b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psll_d_512, INTR_TYPE_2OP, X86ISD::VSHL, 0), 9550b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psll_q_512, INTR_TYPE_2OP, X86ISD::VSHL, 0), 9560b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psll_w_512, INTR_TYPE_2OP, X86ISD::VSHL, 0), 9570b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_pslli_d_512, VSHIFT, X86ISD::VSHLI, 0), 9580b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_pslli_q_512, VSHIFT, X86ISD::VSHLI, 0), 9590b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_pslli_w_512, VSHIFT, X86ISD::VSHLI, 0), 9600b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psllv_d_512, INTR_TYPE_2OP, X86ISD::VSHLV, 0), 9610b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psllv_q_512, INTR_TYPE_2OP, X86ISD::VSHLV, 0), 9620b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psllv_w_128, INTR_TYPE_2OP, X86ISD::VSHLV, 0), 9630b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psllv_w_256, INTR_TYPE_2OP, X86ISD::VSHLV, 0), 9640b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psllv_w_512, INTR_TYPE_2OP, X86ISD::VSHLV, 0), 9650b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psra_d_512, INTR_TYPE_2OP, X86ISD::VSRA, 0), 9660b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psra_q_128, INTR_TYPE_2OP, X86ISD::VSRA, 0), 9670b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psra_q_256, INTR_TYPE_2OP, X86ISD::VSRA, 0), 9680b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psra_q_512, INTR_TYPE_2OP, X86ISD::VSRA, 0), 9690b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psra_w_512, INTR_TYPE_2OP, X86ISD::VSRA, 0), 9700b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrai_d_512, VSHIFT, X86ISD::VSRAI, 0), 9710b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrai_q_128, VSHIFT, X86ISD::VSRAI, 0), 9720b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrai_q_256, VSHIFT, X86ISD::VSRAI, 0), 9730b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrai_q_512, VSHIFT, X86ISD::VSRAI, 0), 9740b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrai_w_512, VSHIFT, X86ISD::VSRAI, 0), 9750b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrav_d_512, INTR_TYPE_2OP, X86ISD::VSRAV, 0), 9760b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrav_q_128, INTR_TYPE_2OP, X86ISD::VSRAV, 0), 9770b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrav_q_256, INTR_TYPE_2OP, X86ISD::VSRAV, 0), 9780b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrav_q_512, INTR_TYPE_2OP, X86ISD::VSRAV, 0), 9790b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrav_w_128, INTR_TYPE_2OP, X86ISD::VSRAV, 0), 9800b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrav_w_256, INTR_TYPE_2OP, X86ISD::VSRAV, 0), 9810b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrav_w_512, INTR_TYPE_2OP, X86ISD::VSRAV, 0), 9820b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrl_d_512, INTR_TYPE_2OP, X86ISD::VSRL, 0), 9830b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrl_q_512, INTR_TYPE_2OP, X86ISD::VSRL, 0), 9840b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrl_w_512, INTR_TYPE_2OP, X86ISD::VSRL, 0), 9850b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrli_d_512, VSHIFT, X86ISD::VSRLI, 0), 9860b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrli_q_512, VSHIFT, X86ISD::VSRLI, 0), 9870b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrli_w_512, VSHIFT, X86ISD::VSRLI, 0), 9880b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrlv_d_512, INTR_TYPE_2OP, X86ISD::VSRLV, 0), 9890b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrlv_q_512, INTR_TYPE_2OP, X86ISD::VSRLV, 0), 9900b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrlv_w_128, INTR_TYPE_2OP, X86ISD::VSRLV, 0), 9910b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrlv_w_256, INTR_TYPE_2OP, X86ISD::VSRLV, 0), 9920b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_psrlv_w_512, INTR_TYPE_2OP, X86ISD::VSRLV, 0), 993*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pternlog_d_128, INTR_TYPE_4OP_IMM8, 994*0fca6ea1SDimitry Andric X86ISD::VPTERNLOG, 0), 995*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pternlog_d_256, INTR_TYPE_4OP_IMM8, 996*0fca6ea1SDimitry Andric X86ISD::VPTERNLOG, 0), 997*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pternlog_d_512, INTR_TYPE_4OP_IMM8, 998*0fca6ea1SDimitry Andric X86ISD::VPTERNLOG, 0), 999*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pternlog_q_128, INTR_TYPE_4OP_IMM8, 1000*0fca6ea1SDimitry Andric X86ISD::VPTERNLOG, 0), 1001*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pternlog_q_256, INTR_TYPE_4OP_IMM8, 1002*0fca6ea1SDimitry Andric X86ISD::VPTERNLOG, 0), 1003*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_pternlog_q_512, INTR_TYPE_4OP_IMM8, 1004*0fca6ea1SDimitry Andric X86ISD::VPTERNLOG, 0), 1005*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rcp14_pd_128, INTR_TYPE_1OP_MASK, X86ISD::RCP14, 1006*0fca6ea1SDimitry Andric 0), 1007*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rcp14_pd_256, INTR_TYPE_1OP_MASK, X86ISD::RCP14, 1008*0fca6ea1SDimitry Andric 0), 1009*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rcp14_pd_512, INTR_TYPE_1OP_MASK, X86ISD::RCP14, 1010*0fca6ea1SDimitry Andric 0), 1011*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rcp14_ps_128, INTR_TYPE_1OP_MASK, X86ISD::RCP14, 1012*0fca6ea1SDimitry Andric 0), 1013*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rcp14_ps_256, INTR_TYPE_1OP_MASK, X86ISD::RCP14, 1014*0fca6ea1SDimitry Andric 0), 1015*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rcp14_ps_512, INTR_TYPE_1OP_MASK, X86ISD::RCP14, 1016*0fca6ea1SDimitry Andric 0), 1017*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rcp14_sd, INTR_TYPE_SCALAR_MASK, X86ISD::RCP14S, 1018*0fca6ea1SDimitry Andric 0), 1019*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rcp14_ss, INTR_TYPE_SCALAR_MASK, X86ISD::RCP14S, 1020*0fca6ea1SDimitry Andric 0), 1021*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rsqrt14_pd_128, INTR_TYPE_1OP_MASK, 1022*0fca6ea1SDimitry Andric X86ISD::RSQRT14, 0), 1023*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rsqrt14_pd_256, INTR_TYPE_1OP_MASK, 1024*0fca6ea1SDimitry Andric X86ISD::RSQRT14, 0), 1025*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rsqrt14_pd_512, INTR_TYPE_1OP_MASK, 1026*0fca6ea1SDimitry Andric X86ISD::RSQRT14, 0), 1027*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rsqrt14_ps_128, INTR_TYPE_1OP_MASK, 1028*0fca6ea1SDimitry Andric X86ISD::RSQRT14, 0), 1029*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rsqrt14_ps_256, INTR_TYPE_1OP_MASK, 1030*0fca6ea1SDimitry Andric X86ISD::RSQRT14, 0), 1031*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rsqrt14_ps_512, INTR_TYPE_1OP_MASK, 1032*0fca6ea1SDimitry Andric X86ISD::RSQRT14, 0), 1033*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rsqrt14_sd, INTR_TYPE_SCALAR_MASK, 1034*0fca6ea1SDimitry Andric X86ISD::RSQRT14S, 0), 1035*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_rsqrt14_ss, INTR_TYPE_SCALAR_MASK, 1036*0fca6ea1SDimitry Andric X86ISD::RSQRT14S, 0), 1037*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_sitofp_round, INTR_TYPE_1OP, ISD::SINT_TO_FP, 1038*0fca6ea1SDimitry Andric X86ISD::SINT_TO_FP_RND), 1039*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_sqrt_pd_512, INTR_TYPE_1OP, ISD::FSQRT, 1040*0fca6ea1SDimitry Andric X86ISD::FSQRT_RND), 1041*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_sqrt_ps_512, INTR_TYPE_1OP, ISD::FSQRT, 1042*0fca6ea1SDimitry Andric X86ISD::FSQRT_RND), 1043*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_sub_pd_512, INTR_TYPE_2OP, ISD::FSUB, 1044*0fca6ea1SDimitry Andric X86ISD::FSUB_RND), 1045*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_sub_ps_512, INTR_TYPE_2OP, ISD::FSUB, 1046*0fca6ea1SDimitry Andric X86ISD::FSUB_RND), 1047*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_uitofp_round, INTR_TYPE_1OP, ISD::UINT_TO_FP, 1048*0fca6ea1SDimitry Andric X86ISD::UINT_TO_FP_RND), 10490b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vcomi_sd, COMI_RM, X86ISD::COMI, X86ISD::UCOMI), 10500b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vcomi_ss, COMI_RM, X86ISD::COMI, X86ISD::UCOMI), 1051*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vcvtsd2si32, INTR_TYPE_1OP, X86ISD::CVTS2SI, 1052*0fca6ea1SDimitry Andric X86ISD::CVTS2SI_RND), 1053*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vcvtsd2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI, 1054*0fca6ea1SDimitry Andric X86ISD::CVTS2SI_RND), 1055*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vcvtsd2usi32, INTR_TYPE_1OP, X86ISD::CVTS2UI, 1056*0fca6ea1SDimitry Andric X86ISD::CVTS2UI_RND), 1057*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vcvtsd2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI, 1058*0fca6ea1SDimitry Andric X86ISD::CVTS2UI_RND), 1059*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vcvtss2si32, INTR_TYPE_1OP, X86ISD::CVTS2SI, 1060*0fca6ea1SDimitry Andric X86ISD::CVTS2SI_RND), 1061*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vcvtss2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI, 1062*0fca6ea1SDimitry Andric X86ISD::CVTS2SI_RND), 1063*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vcvtss2usi32, INTR_TYPE_1OP, X86ISD::CVTS2UI, 1064*0fca6ea1SDimitry Andric X86ISD::CVTS2UI_RND), 1065*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vcvtss2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI, 1066*0fca6ea1SDimitry Andric X86ISD::CVTS2UI_RND), 1067*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vfmadd_f32, INTR_TYPE_3OP, ISD::FMA, 1068*0fca6ea1SDimitry Andric X86ISD::FMADD_RND), 1069*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vfmadd_f64, INTR_TYPE_3OP, ISD::FMA, 1070*0fca6ea1SDimitry Andric X86ISD::FMADD_RND), 1071*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vfmadd_pd_512, INTR_TYPE_3OP, ISD::FMA, 1072*0fca6ea1SDimitry Andric X86ISD::FMADD_RND), 1073*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vfmadd_ps_512, INTR_TYPE_3OP, ISD::FMA, 1074*0fca6ea1SDimitry Andric X86ISD::FMADD_RND), 10750b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vfmaddsub_pd_512, INTR_TYPE_3OP, X86ISD::FMADDSUB, 10760b57cec5SDimitry Andric X86ISD::FMADDSUB_RND), 10770b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vfmaddsub_ps_512, INTR_TYPE_3OP, X86ISD::FMADDSUB, 10780b57cec5SDimitry Andric X86ISD::FMADDSUB_RND), 10790b57cec5SDimitry Andric 10800b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpbusd_128, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0), 10810b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpbusd_256, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0), 10820b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpbusd_512, INTR_TYPE_3OP, X86ISD::VPDPBUSD, 0), 1083*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpbusds_128, INTR_TYPE_3OP, X86ISD::VPDPBUSDS, 1084*0fca6ea1SDimitry Andric 0), 1085*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpbusds_256, INTR_TYPE_3OP, X86ISD::VPDPBUSDS, 1086*0fca6ea1SDimitry Andric 0), 1087*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpbusds_512, INTR_TYPE_3OP, X86ISD::VPDPBUSDS, 1088*0fca6ea1SDimitry Andric 0), 10890b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpwssd_128, INTR_TYPE_3OP, X86ISD::VPDPWSSD, 0), 10900b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpwssd_256, INTR_TYPE_3OP, X86ISD::VPDPWSSD, 0), 10910b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpwssd_512, INTR_TYPE_3OP, X86ISD::VPDPWSSD, 0), 1092*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpwssds_128, INTR_TYPE_3OP, X86ISD::VPDPWSSDS, 1093*0fca6ea1SDimitry Andric 0), 1094*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpwssds_256, INTR_TYPE_3OP, X86ISD::VPDPWSSDS, 1095*0fca6ea1SDimitry Andric 0), 1096*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpdpwssds_512, INTR_TYPE_3OP, X86ISD::VPDPWSSDS, 1097*0fca6ea1SDimitry Andric 0), 10980b57cec5SDimitry Andric 1099*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_d_128, INTR_TYPE_3OP, X86ISD::VPERMV3, 1100*0fca6ea1SDimitry Andric 0), 1101*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_d_256, INTR_TYPE_3OP, X86ISD::VPERMV3, 1102*0fca6ea1SDimitry Andric 0), 1103*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_d_512, INTR_TYPE_3OP, X86ISD::VPERMV3, 1104*0fca6ea1SDimitry Andric 0), 1105*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_hi_128, INTR_TYPE_3OP, X86ISD::VPERMV3, 1106*0fca6ea1SDimitry Andric 0), 1107*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_hi_256, INTR_TYPE_3OP, X86ISD::VPERMV3, 1108*0fca6ea1SDimitry Andric 0), 1109*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_hi_512, INTR_TYPE_3OP, X86ISD::VPERMV3, 1110*0fca6ea1SDimitry Andric 0), 1111*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_pd_128, INTR_TYPE_3OP, X86ISD::VPERMV3, 1112*0fca6ea1SDimitry Andric 0), 1113*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_pd_256, INTR_TYPE_3OP, X86ISD::VPERMV3, 1114*0fca6ea1SDimitry Andric 0), 1115*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_pd_512, INTR_TYPE_3OP, X86ISD::VPERMV3, 1116*0fca6ea1SDimitry Andric 0), 1117*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_ps_128, INTR_TYPE_3OP, X86ISD::VPERMV3, 1118*0fca6ea1SDimitry Andric 0), 1119*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_ps_256, INTR_TYPE_3OP, X86ISD::VPERMV3, 1120*0fca6ea1SDimitry Andric 0), 1121*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_ps_512, INTR_TYPE_3OP, X86ISD::VPERMV3, 1122*0fca6ea1SDimitry Andric 0), 1123*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_q_128, INTR_TYPE_3OP, X86ISD::VPERMV3, 1124*0fca6ea1SDimitry Andric 0), 1125*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_q_256, INTR_TYPE_3OP, X86ISD::VPERMV3, 1126*0fca6ea1SDimitry Andric 0), 1127*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_q_512, INTR_TYPE_3OP, X86ISD::VPERMV3, 1128*0fca6ea1SDimitry Andric 0), 1129*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_qi_128, INTR_TYPE_3OP, X86ISD::VPERMV3, 1130*0fca6ea1SDimitry Andric 0), 1131*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_qi_256, INTR_TYPE_3OP, X86ISD::VPERMV3, 1132*0fca6ea1SDimitry Andric 0), 1133*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermi2var_qi_512, INTR_TYPE_3OP, X86ISD::VPERMV3, 1134*0fca6ea1SDimitry Andric 0), 1135*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermilvar_pd_512, INTR_TYPE_2OP, 1136*0fca6ea1SDimitry Andric X86ISD::VPERMILPV, 0), 1137*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpermilvar_ps_512, INTR_TYPE_2OP, 1138*0fca6ea1SDimitry Andric X86ISD::VPERMILPV, 0), 11390b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpmadd52h_uq_128, IFMA_OP, X86ISD::VPMADD52H, 0), 11400b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpmadd52h_uq_256, IFMA_OP, X86ISD::VPMADD52H, 0), 11410b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpmadd52h_uq_512, IFMA_OP, X86ISD::VPMADD52H, 0), 11420b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpmadd52l_uq_128, IFMA_OP, X86ISD::VPMADD52L, 0), 11430b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpmadd52l_uq_256, IFMA_OP, X86ISD::VPMADD52L, 0), 11440b57cec5SDimitry Andric X86_INTRINSIC_DATA(avx512_vpmadd52l_uq_512, IFMA_OP, X86ISD::VPMADD52L, 0), 1145*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpshufbitqmb_128, INTR_TYPE_2OP, 1146*0fca6ea1SDimitry Andric X86ISD::VPSHUFBITQMB, 0), 1147*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpshufbitqmb_256, INTR_TYPE_2OP, 1148*0fca6ea1SDimitry Andric X86ISD::VPSHUFBITQMB, 0), 1149*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512_vpshufbitqmb_512, INTR_TYPE_2OP, 1150*0fca6ea1SDimitry Andric X86ISD::VPSHUFBITQMB, 0), 11510b57cec5SDimitry Andric // bfloat16 1152*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512bf16_cvtne2ps2bf16_128, INTR_TYPE_2OP, 1153*0fca6ea1SDimitry Andric X86ISD::CVTNE2PS2BF16, 0), 1154*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512bf16_cvtne2ps2bf16_256, INTR_TYPE_2OP, 1155*0fca6ea1SDimitry Andric X86ISD::CVTNE2PS2BF16, 0), 1156*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512bf16_cvtne2ps2bf16_512, INTR_TYPE_2OP, 1157*0fca6ea1SDimitry Andric X86ISD::CVTNE2PS2BF16, 0), 1158*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512bf16_cvtneps2bf16_256, INTR_TYPE_1OP, 1159*0fca6ea1SDimitry Andric X86ISD::CVTNEPS2BF16, 0), 1160*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512bf16_cvtneps2bf16_512, INTR_TYPE_1OP, 1161*0fca6ea1SDimitry Andric X86ISD::CVTNEPS2BF16, 0), 1162*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512bf16_dpbf16ps_128, INTR_TYPE_3OP, X86ISD::DPBF16PS, 1163*0fca6ea1SDimitry Andric 0), 1164*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512bf16_dpbf16ps_256, INTR_TYPE_3OP, X86ISD::DPBF16PS, 1165*0fca6ea1SDimitry Andric 0), 1166*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512bf16_dpbf16ps_512, INTR_TYPE_3OP, X86ISD::DPBF16PS, 1167*0fca6ea1SDimitry Andric 0), 1168*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512bf16_mask_cvtneps2bf16_128, CVTNEPS2BF16_MASK, 1169*0fca6ea1SDimitry Andric X86ISD::CVTNEPS2BF16, X86ISD::MCVTNEPS2BF16), 1170*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_add_ph_512, INTR_TYPE_2OP, ISD::FADD, 1171*0fca6ea1SDimitry Andric X86ISD::FADD_RND), 1172*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_div_ph_512, INTR_TYPE_2OP, ISD::FDIV, 1173*0fca6ea1SDimitry Andric X86ISD::FDIV_RND), 1174*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_fpclass_ph_128, INTR_TYPE_2OP, 1175*0fca6ea1SDimitry Andric X86ISD::VFPCLASS, 0), 1176*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_fpclass_ph_256, INTR_TYPE_2OP, 1177*0fca6ea1SDimitry Andric X86ISD::VFPCLASS, 0), 1178*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_fpclass_ph_512, INTR_TYPE_2OP, 1179*0fca6ea1SDimitry Andric X86ISD::VFPCLASS, 0), 1180349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_add_sh_round, INTR_TYPE_SCALAR_MASK, 1181349cc55cSDimitry Andric X86ISD::FADDS, X86ISD::FADDS_RND), 1182*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_cmp_ph_128, CMP_MASK_CC, X86ISD::CMPMM, 1183*0fca6ea1SDimitry Andric 0), 1184*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_cmp_ph_256, CMP_MASK_CC, X86ISD::CMPMM, 1185*0fca6ea1SDimitry Andric 0), 1186*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_cmp_ph_512, CMP_MASK_CC, X86ISD::CMPMM, 1187*0fca6ea1SDimitry Andric X86ISD::CMPMM_SAE), 1188349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_cmp_sh, CMP_MASK_SCALAR_CC, 1189349cc55cSDimitry Andric X86ISD::FSETCCM, X86ISD::FSETCCM_SAE), 1190349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_div_sh_round, INTR_TYPE_SCALAR_MASK, 1191349cc55cSDimitry Andric X86ISD::FDIVS, X86ISD::FDIVS_RND), 1192*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_fpclass_sh, FPCLASSS, X86ISD::VFPCLASSS, 1193*0fca6ea1SDimitry Andric 0), 1194*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_getexp_ph_128, INTR_TYPE_1OP_MASK, 1195*0fca6ea1SDimitry Andric X86ISD::FGETEXP, 0), 1196*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_getexp_ph_256, INTR_TYPE_1OP_MASK, 1197*0fca6ea1SDimitry Andric X86ISD::FGETEXP, 0), 1198349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_getexp_ph_512, INTR_TYPE_1OP_MASK_SAE, 1199349cc55cSDimitry Andric X86ISD::FGETEXP, X86ISD::FGETEXP_SAE), 1200349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_getexp_sh, INTR_TYPE_SCALAR_MASK_SAE, 1201349cc55cSDimitry Andric X86ISD::FGETEXPS, X86ISD::FGETEXPS_SAE), 1202349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_getmant_ph_128, INTR_TYPE_2OP_MASK_SAE, 1203349cc55cSDimitry Andric X86ISD::VGETMANT, 0), 1204349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_getmant_ph_256, INTR_TYPE_2OP_MASK_SAE, 1205349cc55cSDimitry Andric X86ISD::VGETMANT, 0), 1206349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_getmant_ph_512, INTR_TYPE_2OP_MASK_SAE, 1207349cc55cSDimitry Andric X86ISD::VGETMANT, X86ISD::VGETMANT_SAE), 1208*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_getmant_sh, 1209*0fca6ea1SDimitry Andric INTR_TYPE_3OP_SCALAR_MASK_SAE, X86ISD::VGETMANTS, 1210*0fca6ea1SDimitry Andric X86ISD::VGETMANTS_SAE), 1211349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_max_sh_round, INTR_TYPE_SCALAR_MASK_SAE, 1212349cc55cSDimitry Andric X86ISD::FMAXS, X86ISD::FMAXS_SAE), 1213349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_min_sh_round, INTR_TYPE_SCALAR_MASK_SAE, 1214349cc55cSDimitry Andric X86ISD::FMINS, X86ISD::FMINS_SAE), 1215349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_mul_sh_round, INTR_TYPE_SCALAR_MASK, 1216349cc55cSDimitry Andric X86ISD::FMULS, X86ISD::FMULS_RND), 1217*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rcp_ph_128, INTR_TYPE_1OP_MASK, 1218*0fca6ea1SDimitry Andric X86ISD::RCP14, 0), 1219*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rcp_ph_256, INTR_TYPE_1OP_MASK, 1220*0fca6ea1SDimitry Andric X86ISD::RCP14, 0), 1221*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rcp_ph_512, INTR_TYPE_1OP_MASK, 1222*0fca6ea1SDimitry Andric X86ISD::RCP14, 0), 1223*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rcp_sh, INTR_TYPE_SCALAR_MASK, 1224*0fca6ea1SDimitry Andric X86ISD::RCP14S, 0), 1225*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_reduce_ph_128, INTR_TYPE_2OP_MASK_SAE, 1226*0fca6ea1SDimitry Andric X86ISD::VREDUCE, 0), 1227*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_reduce_ph_256, INTR_TYPE_2OP_MASK_SAE, 1228*0fca6ea1SDimitry Andric X86ISD::VREDUCE, 0), 1229*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_reduce_ph_512, INTR_TYPE_2OP_MASK_SAE, 1230*0fca6ea1SDimitry Andric X86ISD::VREDUCE, X86ISD::VREDUCE_SAE), 1231*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_reduce_sh, INTR_TYPE_SCALAR_MASK, 1232*0fca6ea1SDimitry Andric X86ISD::VREDUCES, X86ISD::VREDUCES_SAE), 1233*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_ph_128, INTR_TYPE_2OP_MASK_SAE, 1234*0fca6ea1SDimitry Andric X86ISD::VRNDSCALE, 0), 1235*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_ph_256, INTR_TYPE_2OP_MASK_SAE, 1236*0fca6ea1SDimitry Andric X86ISD::VRNDSCALE, 0), 1237*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_ph_512, INTR_TYPE_2OP_MASK_SAE, 1238*0fca6ea1SDimitry Andric X86ISD::VRNDSCALE, X86ISD::VRNDSCALE_SAE), 1239349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rndscale_sh, INTR_TYPE_SCALAR_MASK, 1240349cc55cSDimitry Andric X86ISD::VRNDSCALES, X86ISD::VRNDSCALES_SAE), 1241*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_ph_128, INTR_TYPE_1OP_MASK, 1242*0fca6ea1SDimitry Andric X86ISD::RSQRT14, 0), 1243*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_ph_256, INTR_TYPE_1OP_MASK, 1244*0fca6ea1SDimitry Andric X86ISD::RSQRT14, 0), 1245*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_ph_512, INTR_TYPE_1OP_MASK, 1246*0fca6ea1SDimitry Andric X86ISD::RSQRT14, 0), 1247*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_rsqrt_sh, INTR_TYPE_SCALAR_MASK, 1248*0fca6ea1SDimitry Andric X86ISD::RSQRT14S, 0), 1249*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_scalef_ph_128, INTR_TYPE_2OP_MASK, 1250*0fca6ea1SDimitry Andric X86ISD::SCALEF, 0), 1251*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_scalef_ph_256, INTR_TYPE_2OP_MASK, 1252*0fca6ea1SDimitry Andric X86ISD::SCALEF, 0), 1253349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_scalef_ph_512, INTR_TYPE_2OP_MASK, 1254349cc55cSDimitry Andric X86ISD::SCALEF, X86ISD::SCALEF_RND), 1255349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_scalef_sh, INTR_TYPE_SCALAR_MASK, 1256349cc55cSDimitry Andric X86ISD::SCALEFS, X86ISD::SCALEFS_RND), 1257349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_sqrt_sh, INTR_TYPE_SCALAR_MASK, 1258349cc55cSDimitry Andric X86ISD::FSQRTS, X86ISD::FSQRTS_RND), 1259349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_sub_sh_round, INTR_TYPE_SCALAR_MASK, 1260349cc55cSDimitry Andric X86ISD::FSUBS, X86ISD::FSUBS_RND), 1261349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtdq2ph_128, TRUNCATE_TO_REG, 1262349cc55cSDimitry Andric X86ISD::CVTSI2P, X86ISD::MCVTSI2P), 1263349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtpd2ph_128, TRUNCATE_TO_REG, 1264349cc55cSDimitry Andric X86ISD::VFPROUND, X86ISD::VMFPROUND), 1265349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtpd2ph_256, TRUNCATE_TO_REG, 1266349cc55cSDimitry Andric X86ISD::VFPROUND, X86ISD::VMFPROUND), 1267349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtpd2ph_512, INTR_TYPE_1OP_MASK, 1268349cc55cSDimitry Andric X86ISD::VFPROUND, X86ISD::VFPROUND_RND), 1269349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2dq_128, INTR_TYPE_1OP_MASK, 1270349cc55cSDimitry Andric X86ISD::CVTP2SI, 0), 1271349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2dq_256, INTR_TYPE_1OP_MASK, 1272349cc55cSDimitry Andric X86ISD::CVTP2SI, 0), 1273349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2dq_512, INTR_TYPE_1OP_MASK, 1274349cc55cSDimitry Andric X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND), 1275*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2pd_128, INTR_TYPE_1OP_MASK, 1276*0fca6ea1SDimitry Andric X86ISD::VFPEXT, 0), 1277*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2pd_256, INTR_TYPE_1OP_MASK, 1278*0fca6ea1SDimitry Andric X86ISD::VFPEXT, 0), 1279349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2pd_512, INTR_TYPE_1OP_MASK_SAE, 1280349cc55cSDimitry Andric ISD::FP_EXTEND, X86ISD::VFPEXT_SAE), 1281*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2psx_128, INTR_TYPE_1OP_MASK, 1282*0fca6ea1SDimitry Andric X86ISD::VFPEXT, 0), 1283*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2psx_256, INTR_TYPE_1OP_MASK, 1284*0fca6ea1SDimitry Andric ISD::FP_EXTEND, 0), 1285349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2psx_512, INTR_TYPE_1OP_MASK_SAE, 1286349cc55cSDimitry Andric ISD::FP_EXTEND, X86ISD::VFPEXT_SAE), 1287349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2qq_128, INTR_TYPE_1OP_MASK, 1288349cc55cSDimitry Andric X86ISD::CVTP2SI, 0), 1289349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2qq_256, INTR_TYPE_1OP_MASK, 1290349cc55cSDimitry Andric X86ISD::CVTP2SI, 0), 1291349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2qq_512, INTR_TYPE_1OP_MASK, 1292349cc55cSDimitry Andric X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND), 1293349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2udq_128, INTR_TYPE_1OP_MASK, 1294349cc55cSDimitry Andric X86ISD::CVTP2UI, 0), 1295349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2udq_256, INTR_TYPE_1OP_MASK, 1296349cc55cSDimitry Andric X86ISD::CVTP2UI, 0), 1297349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2udq_512, INTR_TYPE_1OP_MASK, 1298349cc55cSDimitry Andric X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND), 1299349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uqq_128, INTR_TYPE_1OP_MASK, 1300349cc55cSDimitry Andric X86ISD::CVTP2UI, 0), 1301349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uqq_256, INTR_TYPE_1OP_MASK, 1302349cc55cSDimitry Andric X86ISD::CVTP2UI, 0), 1303349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uqq_512, INTR_TYPE_1OP_MASK, 1304349cc55cSDimitry Andric X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND), 1305349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uw_128, INTR_TYPE_1OP_MASK, 1306349cc55cSDimitry Andric X86ISD::CVTP2UI, 0), 1307349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uw_256, INTR_TYPE_1OP_MASK, 1308349cc55cSDimitry Andric X86ISD::CVTP2UI, 0), 1309349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2uw_512, INTR_TYPE_1OP_MASK, 1310349cc55cSDimitry Andric X86ISD::CVTP2UI, X86ISD::CVTP2UI_RND), 1311349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2w_128, INTR_TYPE_1OP_MASK, 1312349cc55cSDimitry Andric X86ISD::CVTP2SI, 0), 1313349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2w_256, INTR_TYPE_1OP_MASK, 1314349cc55cSDimitry Andric X86ISD::CVTP2SI, 0), 1315349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtph2w_512, INTR_TYPE_1OP_MASK, 1316349cc55cSDimitry Andric X86ISD::CVTP2SI, X86ISD::CVTP2SI_RND), 1317349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtps2phx_128, TRUNCATE_TO_REG, 1318349cc55cSDimitry Andric X86ISD::VFPROUND, X86ISD::VMFPROUND), 1319*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtps2phx_256, INTR_TYPE_1OP_MASK, 1320*0fca6ea1SDimitry Andric X86ISD::VFPROUND, 0), 1321349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtps2phx_512, INTR_TYPE_1OP_MASK, 1322349cc55cSDimitry Andric X86ISD::VFPROUND, X86ISD::VFPROUND_RND), 1323349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtqq2ph_128, TRUNCATE_TO_REG, 1324349cc55cSDimitry Andric X86ISD::CVTSI2P, X86ISD::MCVTSI2P), 1325349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtqq2ph_256, TRUNCATE_TO_REG, 1326349cc55cSDimitry Andric X86ISD::CVTSI2P, X86ISD::MCVTSI2P), 1327*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtsd2sh_round, 1328*0fca6ea1SDimitry Andric INTR_TYPE_SCALAR_MASK_RND, X86ISD::VFPROUNDS, 1329*0fca6ea1SDimitry Andric X86ISD::VFPROUNDS_RND), 1330*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtsh2sd_round, 1331*0fca6ea1SDimitry Andric INTR_TYPE_SCALAR_MASK_SAE, X86ISD::VFPEXTS, 1332*0fca6ea1SDimitry Andric X86ISD::VFPEXTS_SAE), 1333*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtsh2ss_round, 1334*0fca6ea1SDimitry Andric INTR_TYPE_SCALAR_MASK_SAE, X86ISD::VFPEXTS, 1335*0fca6ea1SDimitry Andric X86ISD::VFPEXTS_SAE), 1336*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtss2sh_round, 1337*0fca6ea1SDimitry Andric INTR_TYPE_SCALAR_MASK_RND, X86ISD::VFPROUNDS, 1338*0fca6ea1SDimitry Andric X86ISD::VFPROUNDS_RND), 1339349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2dq_128, INTR_TYPE_1OP_MASK, 1340349cc55cSDimitry Andric X86ISD::CVTTP2SI, 0), 1341349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2dq_256, INTR_TYPE_1OP_MASK, 1342349cc55cSDimitry Andric X86ISD::CVTTP2SI, 0), 1343349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2dq_512, INTR_TYPE_1OP_MASK_SAE, 1344349cc55cSDimitry Andric X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE), 1345349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2qq_128, INTR_TYPE_1OP_MASK, 1346349cc55cSDimitry Andric X86ISD::CVTTP2SI, 0), 1347349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2qq_256, INTR_TYPE_1OP_MASK, 1348349cc55cSDimitry Andric X86ISD::CVTTP2SI, 0), 1349349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2qq_512, INTR_TYPE_1OP_MASK_SAE, 1350349cc55cSDimitry Andric X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE), 1351349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2udq_128, INTR_TYPE_1OP_MASK, 1352349cc55cSDimitry Andric X86ISD::CVTTP2UI, 0), 1353349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2udq_256, INTR_TYPE_1OP_MASK, 1354349cc55cSDimitry Andric X86ISD::CVTTP2UI, 0), 1355349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2udq_512, INTR_TYPE_1OP_MASK_SAE, 1356349cc55cSDimitry Andric X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE), 1357349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uqq_128, INTR_TYPE_1OP_MASK, 1358349cc55cSDimitry Andric X86ISD::CVTTP2UI, 0), 1359349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uqq_256, INTR_TYPE_1OP_MASK, 1360349cc55cSDimitry Andric X86ISD::CVTTP2UI, 0), 1361349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uqq_512, INTR_TYPE_1OP_MASK_SAE, 1362349cc55cSDimitry Andric X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE), 1363349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uw_128, INTR_TYPE_1OP_MASK, 1364349cc55cSDimitry Andric X86ISD::CVTTP2UI, 0), 1365349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uw_256, INTR_TYPE_1OP_MASK, 1366349cc55cSDimitry Andric X86ISD::CVTTP2UI, 0), 1367349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2uw_512, INTR_TYPE_1OP_MASK_SAE, 1368349cc55cSDimitry Andric X86ISD::CVTTP2UI, X86ISD::CVTTP2UI_SAE), 1369349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2w_128, INTR_TYPE_1OP_MASK, 1370349cc55cSDimitry Andric X86ISD::CVTTP2SI, 0), 1371349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2w_256, INTR_TYPE_1OP_MASK, 1372349cc55cSDimitry Andric X86ISD::CVTTP2SI, 0), 1373349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvttph2w_512, INTR_TYPE_1OP_MASK_SAE, 1374349cc55cSDimitry Andric X86ISD::CVTTP2SI, X86ISD::CVTTP2SI_SAE), 1375349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtudq2ph_128, TRUNCATE_TO_REG, 1376349cc55cSDimitry Andric X86ISD::CVTUI2P, X86ISD::MCVTUI2P), 1377349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtuqq2ph_128, TRUNCATE_TO_REG, 1378349cc55cSDimitry Andric X86ISD::CVTUI2P, X86ISD::MCVTUI2P), 1379349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vcvtuqq2ph_256, TRUNCATE_TO_REG, 1380349cc55cSDimitry Andric X86ISD::CVTUI2P, X86ISD::MCVTUI2P), 1381*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_cph_128, CFMA_OP_MASK, 1382*0fca6ea1SDimitry Andric X86ISD::VFCMADDC, 0), 1383*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_cph_256, CFMA_OP_MASK, 1384*0fca6ea1SDimitry Andric X86ISD::VFCMADDC, 0), 1385*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_cph_512, CFMA_OP_MASK, 1386*0fca6ea1SDimitry Andric X86ISD::VFCMADDC, X86ISD::VFCMADDC_RND), 1387*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfcmadd_csh, CFMA_OP_MASK, 1388*0fca6ea1SDimitry Andric X86ISD::VFCMADDCSH, X86ISD::VFCMADDCSH_RND), 1389*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_cph_128, INTR_TYPE_2OP_MASK, 1390*0fca6ea1SDimitry Andric X86ISD::VFCMULC, 0), 1391*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_cph_256, INTR_TYPE_2OP_MASK, 1392*0fca6ea1SDimitry Andric X86ISD::VFCMULC, 0), 1393*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_cph_512, INTR_TYPE_2OP_MASK, 1394*0fca6ea1SDimitry Andric X86ISD::VFCMULC, X86ISD::VFCMULC_RND), 1395*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfcmul_csh, INTR_TYPE_SCALAR_MASK, 1396*0fca6ea1SDimitry Andric X86ISD::VFCMULCSH, X86ISD::VFCMULCSH_RND), 1397*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_cph_128, CFMA_OP_MASK, 1398*0fca6ea1SDimitry Andric X86ISD::VFMADDC, 0), 1399*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_cph_256, CFMA_OP_MASK, 1400*0fca6ea1SDimitry Andric X86ISD::VFMADDC, 0), 1401*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_cph_512, CFMA_OP_MASK, 1402*0fca6ea1SDimitry Andric X86ISD::VFMADDC, X86ISD::VFMADDC_RND), 1403*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfmadd_csh, CFMA_OP_MASK, 1404*0fca6ea1SDimitry Andric X86ISD::VFMADDCSH, X86ISD::VFMADDCSH_RND), 1405*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_cph_128, INTR_TYPE_2OP_MASK, 1406*0fca6ea1SDimitry Andric X86ISD::VFMULC, 0), 1407*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_cph_256, INTR_TYPE_2OP_MASK, 1408*0fca6ea1SDimitry Andric X86ISD::VFMULC, 0), 1409*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_cph_512, INTR_TYPE_2OP_MASK, 1410*0fca6ea1SDimitry Andric X86ISD::VFMULC, X86ISD::VFMULC_RND), 1411*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mask_vfmul_csh, INTR_TYPE_SCALAR_MASK, 1412*0fca6ea1SDimitry Andric X86ISD::VFMULCSH, X86ISD::VFMULCSH_RND), 1413*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_cph_128, CFMA_OP_MASKZ, 1414*0fca6ea1SDimitry Andric X86ISD::VFCMADDC, 0), 1415*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_cph_256, CFMA_OP_MASKZ, 1416*0fca6ea1SDimitry Andric X86ISD::VFCMADDC, 0), 1417*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_cph_512, CFMA_OP_MASKZ, 1418*0fca6ea1SDimitry Andric X86ISD::VFCMADDC, X86ISD::VFCMADDC_RND), 1419*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_maskz_vfcmadd_csh, CFMA_OP_MASKZ, 1420*0fca6ea1SDimitry Andric X86ISD::VFCMADDCSH, X86ISD::VFCMADDCSH_RND), 1421*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_cph_128, CFMA_OP_MASKZ, 1422*0fca6ea1SDimitry Andric X86ISD::VFMADDC, 0), 1423*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_cph_256, CFMA_OP_MASKZ, 1424*0fca6ea1SDimitry Andric X86ISD::VFMADDC, 0), 1425*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_cph_512, CFMA_OP_MASKZ, 1426*0fca6ea1SDimitry Andric X86ISD::VFMADDC, X86ISD::VFMADDC_RND), 1427*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_maskz_vfmadd_csh, CFMA_OP_MASKZ, 1428*0fca6ea1SDimitry Andric X86ISD::VFMADDCSH, X86ISD::VFMADDCSH_RND), 1429349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_max_ph_128, INTR_TYPE_2OP, X86ISD::FMAX, 0), 1430349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_max_ph_256, INTR_TYPE_2OP, X86ISD::FMAX, 0), 1431*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_max_ph_512, INTR_TYPE_2OP_SAE, X86ISD::FMAX, 1432*0fca6ea1SDimitry Andric X86ISD::FMAX_SAE), 1433349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_min_ph_128, INTR_TYPE_2OP, X86ISD::FMIN, 0), 1434349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_min_ph_256, INTR_TYPE_2OP, X86ISD::FMIN, 0), 1435*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_min_ph_512, INTR_TYPE_2OP_SAE, X86ISD::FMIN, 1436*0fca6ea1SDimitry Andric X86ISD::FMIN_SAE), 1437*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_mul_ph_512, INTR_TYPE_2OP, ISD::FMUL, 1438*0fca6ea1SDimitry Andric X86ISD::FMUL_RND), 1439*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_sqrt_ph_512, INTR_TYPE_1OP, ISD::FSQRT, 1440*0fca6ea1SDimitry Andric X86ISD::FSQRT_RND), 1441*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_sub_ph_512, INTR_TYPE_2OP, ISD::FSUB, 1442*0fca6ea1SDimitry Andric X86ISD::FSUB_RND), 1443*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcomi_sh, COMI_RM, X86ISD::COMI, 1444*0fca6ea1SDimitry Andric X86ISD::UCOMI), 1445349cc55cSDimitry Andric /*fp16 scalar convert instruction*/ 1446*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvtsh2si32, INTR_TYPE_1OP, X86ISD::CVTS2SI, 1447*0fca6ea1SDimitry Andric X86ISD::CVTS2SI_RND), 1448*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvtsh2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI, 1449*0fca6ea1SDimitry Andric X86ISD::CVTS2SI_RND), 1450*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvtsh2usi32, INTR_TYPE_1OP, X86ISD::CVTS2UI, 1451*0fca6ea1SDimitry Andric X86ISD::CVTS2UI_RND), 1452*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvtsh2usi64, INTR_TYPE_1OP, X86ISD::CVTS2UI, 1453*0fca6ea1SDimitry Andric X86ISD::CVTS2UI_RND), 1454349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvtsi2sh, INTR_TYPE_2OP, 1455*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP, 1456*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP_RND), 1457349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvtsi642sh, INTR_TYPE_2OP, 1458*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP, 1459*0fca6ea1SDimitry Andric X86ISD::SCALAR_SINT_TO_FP_RND), 1460*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvttsh2si32, INTR_TYPE_1OP_SAE, 1461*0fca6ea1SDimitry Andric X86ISD::CVTTS2SI, X86ISD::CVTTS2SI_SAE), 1462*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvttsh2si64, INTR_TYPE_1OP_SAE, 1463*0fca6ea1SDimitry Andric X86ISD::CVTTS2SI, X86ISD::CVTTS2SI_SAE), 1464*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvttsh2usi32, INTR_TYPE_1OP_SAE, 1465*0fca6ea1SDimitry Andric X86ISD::CVTTS2UI, X86ISD::CVTTS2UI_SAE), 1466*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvttsh2usi64, INTR_TYPE_1OP_SAE, 1467*0fca6ea1SDimitry Andric X86ISD::CVTTS2UI, X86ISD::CVTTS2UI_SAE), 1468349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvtusi2sh, INTR_TYPE_2OP, 1469*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP, 1470*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP_RND), 1471349cc55cSDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vcvtusi642sh, INTR_TYPE_2OP, 1472*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP, 1473*0fca6ea1SDimitry Andric X86ISD::SCALAR_UINT_TO_FP_RND), 1474*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vfmadd_f16, INTR_TYPE_3OP, ISD::FMA, 1475*0fca6ea1SDimitry Andric X86ISD::FMADD_RND), 1476*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vfmadd_ph_512, INTR_TYPE_3OP, ISD::FMA, 1477*0fca6ea1SDimitry Andric X86ISD::FMADD_RND), 1478*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vfmaddsub_ph_128, INTR_TYPE_3OP, 1479*0fca6ea1SDimitry Andric X86ISD::FMADDSUB, 0), 1480*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vfmaddsub_ph_256, INTR_TYPE_3OP, 1481*0fca6ea1SDimitry Andric X86ISD::FMADDSUB, 0), 1482*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(avx512fp16_vfmaddsub_ph_512, INTR_TYPE_3OP, 1483*0fca6ea1SDimitry Andric X86ISD::FMADDSUB, X86ISD::FMADDSUB_RND), 14840b57cec5SDimitry Andric X86_INTRINSIC_DATA(bmi_bextr_32, INTR_TYPE_2OP, X86ISD::BEXTR, 0), 14850b57cec5SDimitry Andric X86_INTRINSIC_DATA(bmi_bextr_64, INTR_TYPE_2OP, X86ISD::BEXTR, 0), 14860b57cec5SDimitry Andric X86_INTRINSIC_DATA(bmi_bzhi_32, INTR_TYPE_2OP, X86ISD::BZHI, 0), 14870b57cec5SDimitry Andric X86_INTRINSIC_DATA(bmi_bzhi_64, INTR_TYPE_2OP, X86ISD::BZHI, 0), 14885ffd83dbSDimitry Andric X86_INTRINSIC_DATA(bmi_pdep_32, INTR_TYPE_2OP, X86ISD::PDEP, 0), 14895ffd83dbSDimitry Andric X86_INTRINSIC_DATA(bmi_pdep_64, INTR_TYPE_2OP, X86ISD::PDEP, 0), 14905ffd83dbSDimitry Andric X86_INTRINSIC_DATA(bmi_pext_32, INTR_TYPE_2OP, X86ISD::PEXT, 0), 14915ffd83dbSDimitry Andric X86_INTRINSIC_DATA(bmi_pext_64, INTR_TYPE_2OP, X86ISD::PEXT, 0), 14925ffd83dbSDimitry Andric X86_INTRINSIC_DATA(fma_vfmaddsub_pd, INTR_TYPE_3OP, X86ISD::FMADDSUB, 0), 1493*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(fma_vfmaddsub_pd_256, INTR_TYPE_3OP, X86ISD::FMADDSUB, 1494*0fca6ea1SDimitry Andric 0), 14955ffd83dbSDimitry Andric X86_INTRINSIC_DATA(fma_vfmaddsub_ps, INTR_TYPE_3OP, X86ISD::FMADDSUB, 0), 1496*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(fma_vfmaddsub_ps_256, INTR_TYPE_3OP, X86ISD::FMADDSUB, 1497*0fca6ea1SDimitry Andric 0), 14980b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_cmp_ps, INTR_TYPE_3OP, X86ISD::CMPP, 0), 14995ffd83dbSDimitry Andric X86_INTRINSIC_DATA(sse_cmp_ss, INTR_TYPE_3OP, X86ISD::FSETCC, 0), 15000b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_comieq_ss, COMI, X86ISD::COMI, ISD::SETEQ), 15010b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_comige_ss, COMI, X86ISD::COMI, ISD::SETGE), 15020b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_comigt_ss, COMI, X86ISD::COMI, ISD::SETGT), 15030b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_comile_ss, COMI, X86ISD::COMI, ISD::SETLE), 15040b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_comilt_ss, COMI, X86ISD::COMI, ISD::SETLT), 15050b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_comineq_ss, COMI, X86ISD::COMI, ISD::SETNE), 15060b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_cvtss2si, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0), 15070b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_cvtss2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0), 15080b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_cvttss2si, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0), 15090b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_cvttss2si64, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0), 15100b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_max_ps, INTR_TYPE_2OP, X86ISD::FMAX, 0), 15110b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_max_ss, INTR_TYPE_2OP, X86ISD::FMAXS, 0), 15120b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_min_ps, INTR_TYPE_2OP, X86ISD::FMIN, 0), 15130b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_min_ss, INTR_TYPE_2OP, X86ISD::FMINS, 0), 15140b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_movmsk_ps, INTR_TYPE_1OP, X86ISD::MOVMSK, 0), 15150b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_rcp_ps, INTR_TYPE_1OP, X86ISD::FRCP, 0), 15160b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_rsqrt_ps, INTR_TYPE_1OP, X86ISD::FRSQRT, 0), 15170b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_ucomieq_ss, COMI, X86ISD::UCOMI, ISD::SETEQ), 15180b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_ucomige_ss, COMI, X86ISD::UCOMI, ISD::SETGE), 15190b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_ucomigt_ss, COMI, X86ISD::UCOMI, ISD::SETGT), 15200b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_ucomile_ss, COMI, X86ISD::UCOMI, ISD::SETLE), 15210b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_ucomilt_ss, COMI, X86ISD::UCOMI, ISD::SETLT), 15220b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse_ucomineq_ss, COMI, X86ISD::UCOMI, ISD::SETNE), 15230b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cmp_pd, INTR_TYPE_3OP, X86ISD::CMPP, 0), 15245ffd83dbSDimitry Andric X86_INTRINSIC_DATA(sse2_cmp_sd, INTR_TYPE_3OP, X86ISD::FSETCC, 0), 15250b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_comieq_sd, COMI, X86ISD::COMI, ISD::SETEQ), 15260b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_comige_sd, COMI, X86ISD::COMI, ISD::SETGE), 15270b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_comigt_sd, COMI, X86ISD::COMI, ISD::SETGT), 15280b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_comile_sd, COMI, X86ISD::COMI, ISD::SETLE), 15290b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_comilt_sd, COMI, X86ISD::COMI, ISD::SETLT), 15300b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_comineq_sd, COMI, X86ISD::COMI, ISD::SETNE), 15310b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvtpd2dq, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0), 15320b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvtpd2ps, INTR_TYPE_1OP, X86ISD::VFPROUND, 0), 15330b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvtps2dq, INTR_TYPE_1OP, X86ISD::CVTP2SI, 0), 15340b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvtsd2si, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0), 15350b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvtsd2si64, INTR_TYPE_1OP, X86ISD::CVTS2SI, 0), 15360b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvtsd2ss, INTR_TYPE_2OP, X86ISD::VFPROUNDS, 0), 15370b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvttpd2dq, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0), 15380b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvttps2dq, INTR_TYPE_1OP, X86ISD::CVTTP2SI, 0), 15390b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvttsd2si, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0), 15400b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_cvttsd2si64, INTR_TYPE_1OP, X86ISD::CVTTS2SI, 0), 15410b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_max_pd, INTR_TYPE_2OP, X86ISD::FMAX, 0), 15420b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_max_sd, INTR_TYPE_2OP, X86ISD::FMAXS, 0), 15430b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_min_pd, INTR_TYPE_2OP, X86ISD::FMIN, 0), 15440b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_min_sd, INTR_TYPE_2OP, X86ISD::FMINS, 0), 15450b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_movmsk_pd, INTR_TYPE_1OP, X86ISD::MOVMSK, 0), 15460b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_packssdw_128, INTR_TYPE_2OP, X86ISD::PACKSS, 0), 15470b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_packsswb_128, INTR_TYPE_2OP, X86ISD::PACKSS, 0), 15480b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_packuswb_128, INTR_TYPE_2OP, X86ISD::PACKUS, 0), 154981ad6265SDimitry Andric X86_INTRINSIC_DATA(sse2_pavg_b, INTR_TYPE_2OP, ISD::AVGCEILU, 0), 155081ad6265SDimitry Andric X86_INTRINSIC_DATA(sse2_pavg_w, INTR_TYPE_2OP, ISD::AVGCEILU, 0), 15510b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_pmadd_wd, INTR_TYPE_2OP, X86ISD::VPMADDWD, 0), 15520b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_pmovmskb_128, INTR_TYPE_1OP, X86ISD::MOVMSK, 0), 15530b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_pmulh_w, INTR_TYPE_2OP, ISD::MULHS, 0), 15540b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_pmulhu_w, INTR_TYPE_2OP, ISD::MULHU, 0), 15550b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psad_bw, INTR_TYPE_2OP, X86ISD::PSADBW, 0), 15560b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psll_d, INTR_TYPE_2OP, X86ISD::VSHL, 0), 15570b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psll_q, INTR_TYPE_2OP, X86ISD::VSHL, 0), 15580b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psll_w, INTR_TYPE_2OP, X86ISD::VSHL, 0), 15590b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_pslli_d, VSHIFT, X86ISD::VSHLI, 0), 15600b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_pslli_q, VSHIFT, X86ISD::VSHLI, 0), 15610b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_pslli_w, VSHIFT, X86ISD::VSHLI, 0), 15620b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psra_d, INTR_TYPE_2OP, X86ISD::VSRA, 0), 15630b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psra_w, INTR_TYPE_2OP, X86ISD::VSRA, 0), 15640b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psrai_d, VSHIFT, X86ISD::VSRAI, 0), 15650b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psrai_w, VSHIFT, X86ISD::VSRAI, 0), 15660b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psrl_d, INTR_TYPE_2OP, X86ISD::VSRL, 0), 15670b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psrl_q, INTR_TYPE_2OP, X86ISD::VSRL, 0), 15680b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psrl_w, INTR_TYPE_2OP, X86ISD::VSRL, 0), 15690b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psrli_d, VSHIFT, X86ISD::VSRLI, 0), 15700b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psrli_q, VSHIFT, X86ISD::VSRLI, 0), 15710b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_psrli_w, VSHIFT, X86ISD::VSRLI, 0), 15720b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_ucomieq_sd, COMI, X86ISD::UCOMI, ISD::SETEQ), 15730b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_ucomige_sd, COMI, X86ISD::UCOMI, ISD::SETGE), 15740b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_ucomigt_sd, COMI, X86ISD::UCOMI, ISD::SETGT), 15750b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_ucomile_sd, COMI, X86ISD::UCOMI, ISD::SETLE), 15760b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_ucomilt_sd, COMI, X86ISD::UCOMI, ISD::SETLT), 15770b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse2_ucomineq_sd, COMI, X86ISD::UCOMI, ISD::SETNE), 15780b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse3_addsub_pd, INTR_TYPE_2OP, X86ISD::ADDSUB, 0), 15790b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse3_addsub_ps, INTR_TYPE_2OP, X86ISD::ADDSUB, 0), 15800b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse3_hadd_pd, INTR_TYPE_2OP, X86ISD::FHADD, 0), 15810b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse3_hadd_ps, INTR_TYPE_2OP, X86ISD::FHADD, 0), 15820b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse3_hsub_pd, INTR_TYPE_2OP, X86ISD::FHSUB, 0), 15830b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse3_hsub_ps, INTR_TYPE_2OP, X86ISD::FHSUB, 0), 15840b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_blendvpd, BLENDV, X86ISD::BLENDV, 0), 15850b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_blendvps, BLENDV, X86ISD::BLENDV, 0), 15860b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_insertps, INTR_TYPE_3OP, X86ISD::INSERTPS, 0), 15870b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_packusdw, INTR_TYPE_2OP, X86ISD::PACKUS, 0), 15880b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_pblendvb, BLENDV, X86ISD::BLENDV, 0), 15890b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_phminposuw, INTR_TYPE_1OP, X86ISD::PHMINPOS, 0), 15900b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_round_pd, ROUNDP, X86ISD::VRNDSCALE, 0), 15910b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_round_ps, ROUNDP, X86ISD::VRNDSCALE, 0), 15920b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_round_sd, ROUNDS, X86ISD::VRNDSCALES, 0), 15930b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse41_round_ss, ROUNDS, X86ISD::VRNDSCALES, 0), 15940b57cec5SDimitry Andric X86_INTRINSIC_DATA(sse4a_extrqi, INTR_TYPE_3OP, X86ISD::EXTRQI, 0), 1595e8d8bef9SDimitry Andric X86_INTRINSIC_DATA(sse4a_insertqi, INTR_TYPE_4OP_IMM8, X86ISD::INSERTQI, 0), 15960b57cec5SDimitry Andric X86_INTRINSIC_DATA(ssse3_phadd_d_128, INTR_TYPE_2OP, X86ISD::HADD, 0), 15970b57cec5SDimitry Andric X86_INTRINSIC_DATA(ssse3_phadd_w_128, INTR_TYPE_2OP, X86ISD::HADD, 0), 15980b57cec5SDimitry Andric X86_INTRINSIC_DATA(ssse3_phsub_d_128, INTR_TYPE_2OP, X86ISD::HSUB, 0), 15990b57cec5SDimitry Andric X86_INTRINSIC_DATA(ssse3_phsub_w_128, INTR_TYPE_2OP, X86ISD::HSUB, 0), 1600*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(ssse3_pmadd_ub_sw_128, INTR_TYPE_2OP, X86ISD::VPMADDUBSW, 1601*0fca6ea1SDimitry Andric 0), 16020b57cec5SDimitry Andric X86_INTRINSIC_DATA(ssse3_pmul_hr_sw_128, INTR_TYPE_2OP, X86ISD::MULHRS, 0), 16030b57cec5SDimitry Andric X86_INTRINSIC_DATA(ssse3_pshuf_b_128, INTR_TYPE_2OP, X86ISD::PSHUFB, 0), 16040b57cec5SDimitry Andric X86_INTRINSIC_DATA(subborrow_32, ADX, X86ISD::SBB, X86ISD::SUB), 16050b57cec5SDimitry Andric X86_INTRINSIC_DATA(subborrow_64, ADX, X86ISD::SBB, X86ISD::SUB), 1606e8d8bef9SDimitry Andric X86_INTRINSIC_DATA(tbm_bextri_u32, BEXTRI, X86ISD::BEXTRI, 0), 1607e8d8bef9SDimitry Andric X86_INTRINSIC_DATA(tbm_bextri_u64, BEXTRI, X86ISD::BEXTRI, 0), 16080b57cec5SDimitry Andric X86_INTRINSIC_DATA(vcvtps2ph_128, INTR_TYPE_2OP, X86ISD::CVTPS2PH, 0), 16090b57cec5SDimitry Andric X86_INTRINSIC_DATA(vcvtps2ph_256, INTR_TYPE_2OP, X86ISD::CVTPS2PH, 0), 16100b57cec5SDimitry Andric 16110b57cec5SDimitry Andric X86_INTRINSIC_DATA(vgf2p8affineinvqb_128, INTR_TYPE_3OP, 16120b57cec5SDimitry Andric X86ISD::GF2P8AFFINEINVQB, 0), 16130b57cec5SDimitry Andric X86_INTRINSIC_DATA(vgf2p8affineinvqb_256, INTR_TYPE_3OP, 16140b57cec5SDimitry Andric X86ISD::GF2P8AFFINEINVQB, 0), 16150b57cec5SDimitry Andric X86_INTRINSIC_DATA(vgf2p8affineinvqb_512, INTR_TYPE_3OP, 16160b57cec5SDimitry Andric X86ISD::GF2P8AFFINEINVQB, 0), 1617*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(vgf2p8affineqb_128, INTR_TYPE_3OP, X86ISD::GF2P8AFFINEQB, 1618*0fca6ea1SDimitry Andric 0), 1619*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(vgf2p8affineqb_256, INTR_TYPE_3OP, X86ISD::GF2P8AFFINEQB, 1620*0fca6ea1SDimitry Andric 0), 1621*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(vgf2p8affineqb_512, INTR_TYPE_3OP, X86ISD::GF2P8AFFINEQB, 1622*0fca6ea1SDimitry Andric 0), 1623*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(vgf2p8mulb_128, INTR_TYPE_2OP, X86ISD::GF2P8MULB, 0), 1624*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(vgf2p8mulb_256, INTR_TYPE_2OP, X86ISD::GF2P8MULB, 0), 1625*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(vgf2p8mulb_512, INTR_TYPE_2OP, X86ISD::GF2P8MULB, 0), 16260b57cec5SDimitry Andric 1627e8d8bef9SDimitry Andric X86_INTRINSIC_DATA(xop_vpermil2pd, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2, 0), 1628*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(xop_vpermil2pd_256, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2, 1629*0fca6ea1SDimitry Andric 0), 1630e8d8bef9SDimitry Andric X86_INTRINSIC_DATA(xop_vpermil2ps, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2, 0), 1631*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(xop_vpermil2ps_256, INTR_TYPE_4OP_IMM8, X86ISD::VPERMIL2, 1632*0fca6ea1SDimitry Andric 0), 16330b57cec5SDimitry Andric X86_INTRINSIC_DATA(xop_vpperm, INTR_TYPE_3OP, X86ISD::VPPERM, 0), 16340b57cec5SDimitry Andric X86_INTRINSIC_DATA(xop_vpshab, INTR_TYPE_2OP, X86ISD::VPSHA, 0), 16350b57cec5SDimitry Andric X86_INTRINSIC_DATA(xop_vpshad, INTR_TYPE_2OP, X86ISD::VPSHA, 0), 16360b57cec5SDimitry Andric X86_INTRINSIC_DATA(xop_vpshaq, INTR_TYPE_2OP, X86ISD::VPSHA, 0), 16370b57cec5SDimitry Andric X86_INTRINSIC_DATA(xop_vpshaw, INTR_TYPE_2OP, X86ISD::VPSHA, 0), 16380b57cec5SDimitry Andric X86_INTRINSIC_DATA(xop_vpshlb, INTR_TYPE_2OP, X86ISD::VPSHL, 0), 16390b57cec5SDimitry Andric X86_INTRINSIC_DATA(xop_vpshld, INTR_TYPE_2OP, X86ISD::VPSHL, 0), 16400b57cec5SDimitry Andric X86_INTRINSIC_DATA(xop_vpshlq, INTR_TYPE_2OP, X86ISD::VPSHL, 0), 1641*0fca6ea1SDimitry Andric X86_INTRINSIC_DATA(xop_vpshlw, INTR_TYPE_2OP, X86ISD::VPSHL, 0)}; 16420b57cec5SDimitry Andric 16430b57cec5SDimitry Andric /* 16440b57cec5SDimitry Andric * Retrieve data for Intrinsic without chain. 16450b57cec5SDimitry Andric * Return nullptr if intrinsic is not defined in the table. 16460b57cec5SDimitry Andric */ 16470b57cec5SDimitry Andric static const IntrinsicData *getIntrinsicWithoutChain(unsigned IntNo) { 1648fe6060f1SDimitry Andric const IntrinsicData *Data = lower_bound(IntrinsicsWithoutChain, IntNo); 16490b57cec5SDimitry Andric if (Data != std::end(IntrinsicsWithoutChain) && Data->Id == IntNo) 16500b57cec5SDimitry Andric return Data; 16510b57cec5SDimitry Andric return nullptr; 16520b57cec5SDimitry Andric } 16530b57cec5SDimitry Andric 16540b57cec5SDimitry Andric static void verifyIntrinsicTables() { 16555ffd83dbSDimitry Andric assert(llvm::is_sorted(IntrinsicsWithoutChain) && 16565ffd83dbSDimitry Andric llvm::is_sorted(IntrinsicsWithChain) && 16570b57cec5SDimitry Andric "Intrinsic data tables should be sorted by Intrinsic ID"); 16580b57cec5SDimitry Andric assert((std::adjacent_find(std::begin(IntrinsicsWithoutChain), 16590b57cec5SDimitry Andric std::end(IntrinsicsWithoutChain)) == 16600b57cec5SDimitry Andric std::end(IntrinsicsWithoutChain)) && 16610b57cec5SDimitry Andric (std::adjacent_find(std::begin(IntrinsicsWithChain), 16620b57cec5SDimitry Andric std::end(IntrinsicsWithChain)) == 16630b57cec5SDimitry Andric std::end(IntrinsicsWithChain)) && 16640b57cec5SDimitry Andric "Intrinsic data tables should have unique entries"); 16650b57cec5SDimitry Andric } 1666*0fca6ea1SDimitry Andric } // namespace llvm 16670b57cec5SDimitry Andric 16680b57cec5SDimitry Andric #endif 1669