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