106c3fb27SDimitry Andric//===- X86EncodingOptimizationForImmediate.def.def ---------------*- C++ -*-==// 206c3fb27SDimitry Andric// 306c3fb27SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 406c3fb27SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 506c3fb27SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 606c3fb27SDimitry Andric// 706c3fb27SDimitry Andric//===----------------------------------------------------------------------===// 806c3fb27SDimitry Andric// \file 906c3fb27SDimitry Andric// This file defines all the entries of X86 instruction relaxation for immediate 1006c3fb27SDimitry Andric//===----------------------------------------------------------------------===// 1106c3fb27SDimitry Andric 1206c3fb27SDimitry Andric#ifndef ENTRY 1306c3fb27SDimitry Andric#define ENTRY(LONG, SHORT) 1406c3fb27SDimitry Andric#endif 1506c3fb27SDimitry AndricENTRY(CMP16mi, CMP16mi8) 1606c3fb27SDimitry AndricENTRY(CMP16ri, CMP16ri8) 1706c3fb27SDimitry AndricENTRY(CMP32mi, CMP32mi8) 1806c3fb27SDimitry AndricENTRY(CMP32ri, CMP32ri8) 1906c3fb27SDimitry AndricENTRY(CMP64mi32, CMP64mi8) 2006c3fb27SDimitry AndricENTRY(CMP64ri32, CMP64ri8) 21*0fca6ea1SDimitry AndricENTRY(CCMP16mi, CCMP16mi8) 22*0fca6ea1SDimitry AndricENTRY(CCMP16ri, CCMP16ri8) 23*0fca6ea1SDimitry AndricENTRY(CCMP32mi, CCMP32mi8) 24*0fca6ea1SDimitry AndricENTRY(CCMP32ri, CCMP32ri8) 25*0fca6ea1SDimitry AndricENTRY(CCMP64mi32, CCMP64mi8) 26*0fca6ea1SDimitry AndricENTRY(CCMP64ri32, CCMP64ri8) 2706c3fb27SDimitry AndricENTRY(PUSH16i, PUSH16i8) 2806c3fb27SDimitry AndricENTRY(PUSH32i, PUSH32i8) 2906c3fb27SDimitry AndricENTRY(PUSH64i32, PUSH64i8) 30*0fca6ea1SDimitry Andric#define ENTRYS(LONG, SHORT) \ 31*0fca6ea1SDimitry Andric ENTRY(LONG, SHORT) \ 32*0fca6ea1SDimitry Andric ENTRY(LONG##_EVEX, SHORT##_EVEX) \ 33*0fca6ea1SDimitry Andric ENTRY(LONG##_NF, SHORT##_NF) \ 34*0fca6ea1SDimitry Andric ENTRY(LONG##_ND, SHORT##_ND) \ 35*0fca6ea1SDimitry Andric ENTRY(LONG##_NF_ND, SHORT##_NF_ND) 36*0fca6ea1SDimitry AndricENTRYS(ADD16mi, ADD16mi8) 37*0fca6ea1SDimitry AndricENTRYS(ADD16ri, ADD16ri8) 38*0fca6ea1SDimitry AndricENTRYS(ADD32mi, ADD32mi8) 39*0fca6ea1SDimitry AndricENTRYS(ADD32ri, ADD32ri8) 40*0fca6ea1SDimitry AndricENTRYS(ADD64mi32, ADD64mi8) 41*0fca6ea1SDimitry AndricENTRYS(ADD64ri32, ADD64ri8) 42*0fca6ea1SDimitry AndricENTRYS(AND16mi, AND16mi8) 43*0fca6ea1SDimitry AndricENTRYS(AND16ri, AND16ri8) 44*0fca6ea1SDimitry AndricENTRYS(AND32mi, AND32mi8) 45*0fca6ea1SDimitry AndricENTRYS(AND32ri, AND32ri8) 46*0fca6ea1SDimitry AndricENTRYS(AND64mi32, AND64mi8) 47*0fca6ea1SDimitry AndricENTRYS(AND64ri32, AND64ri8) 48*0fca6ea1SDimitry AndricENTRYS(OR16mi, OR16mi8) 49*0fca6ea1SDimitry AndricENTRYS(OR16ri, OR16ri8) 50*0fca6ea1SDimitry AndricENTRYS(OR32mi, OR32mi8) 51*0fca6ea1SDimitry AndricENTRYS(OR32ri, OR32ri8) 52*0fca6ea1SDimitry AndricENTRYS(OR64mi32, OR64mi8) 53*0fca6ea1SDimitry AndricENTRYS(OR64ri32, OR64ri8) 54*0fca6ea1SDimitry AndricENTRYS(SUB16mi, SUB16mi8) 55*0fca6ea1SDimitry AndricENTRYS(SUB16ri, SUB16ri8) 56*0fca6ea1SDimitry AndricENTRYS(SUB32mi, SUB32mi8) 57*0fca6ea1SDimitry AndricENTRYS(SUB32ri, SUB32ri8) 58*0fca6ea1SDimitry AndricENTRYS(SUB64mi32, SUB64mi8) 59*0fca6ea1SDimitry AndricENTRYS(SUB64ri32, SUB64ri8) 60*0fca6ea1SDimitry AndricENTRYS(XOR16mi, XOR16mi8) 61*0fca6ea1SDimitry AndricENTRYS(XOR16ri, XOR16ri8) 62*0fca6ea1SDimitry AndricENTRYS(XOR32mi, XOR32mi8) 63*0fca6ea1SDimitry AndricENTRYS(XOR32ri, XOR32ri8) 64*0fca6ea1SDimitry AndricENTRYS(XOR64mi32, XOR64mi8) 65*0fca6ea1SDimitry AndricENTRYS(XOR64ri32, XOR64ri8) 66*0fca6ea1SDimitry Andric#undef ENTRYS 67*0fca6ea1SDimitry Andric#define ENTRYS(LONG, SHORT) \ 68*0fca6ea1SDimitry Andric ENTRY(LONG, SHORT) \ 69*0fca6ea1SDimitry Andric ENTRY(LONG##_EVEX, SHORT##_EVEX) \ 70*0fca6ea1SDimitry Andric ENTRY(LONG##_NF, SHORT##_NF) 71*0fca6ea1SDimitry AndricENTRYS(IMUL16rmi, IMUL16rmi8) 72*0fca6ea1SDimitry AndricENTRYS(IMUL16rri, IMUL16rri8) 73*0fca6ea1SDimitry AndricENTRYS(IMUL32rmi, IMUL32rmi8) 74*0fca6ea1SDimitry AndricENTRYS(IMUL32rri, IMUL32rri8) 75*0fca6ea1SDimitry AndricENTRYS(IMUL64rmi32, IMUL64rmi8) 76*0fca6ea1SDimitry AndricENTRYS(IMUL64rri32, IMUL64rri8) 77*0fca6ea1SDimitry Andric#undef ENTRYS 78*0fca6ea1SDimitry Andric#define ENTRYS(LONG, SHORT) \ 79*0fca6ea1SDimitry Andric ENTRY(LONG, SHORT) \ 80*0fca6ea1SDimitry Andric ENTRY(LONG##_EVEX, SHORT##_EVEX) \ 81*0fca6ea1SDimitry Andric ENTRY(LONG##_ND, SHORT##_ND) 82*0fca6ea1SDimitry AndricENTRYS(ADC16mi, ADC16mi8) 83*0fca6ea1SDimitry AndricENTRYS(ADC16ri, ADC16ri8) 84*0fca6ea1SDimitry AndricENTRYS(ADC32mi, ADC32mi8) 85*0fca6ea1SDimitry AndricENTRYS(ADC32ri, ADC32ri8) 86*0fca6ea1SDimitry AndricENTRYS(ADC64mi32, ADC64mi8) 87*0fca6ea1SDimitry AndricENTRYS(ADC64ri32, ADC64ri8) 88*0fca6ea1SDimitry AndricENTRYS(SBB16mi, SBB16mi8) 89*0fca6ea1SDimitry AndricENTRYS(SBB16ri, SBB16ri8) 90*0fca6ea1SDimitry AndricENTRYS(SBB32mi, SBB32mi8) 91*0fca6ea1SDimitry AndricENTRYS(SBB32ri, SBB32ri8) 92*0fca6ea1SDimitry AndricENTRYS(SBB64mi32, SBB64mi8) 93*0fca6ea1SDimitry AndricENTRYS(SBB64ri32, SBB64ri8) 94*0fca6ea1SDimitry Andric#undef ENTRYS 9506c3fb27SDimitry Andric#undef ENTRY 96