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