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