xref: /freebsd/contrib/llvm-project/llvm/lib/Target/X86/MCTargetDesc/X86EncodingOptimizationForImmediate.def (revision 8ccc0d235c226d84112561d453c49904398d085c)
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