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