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 */
getIntrinsicWithChain(unsigned IntNo)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 */
getIntrinsicWithoutChain(unsigned IntNo)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
verifyIntrinsicTables()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