//===- X86ReplaceableInstrs.def ----------------------------------*- C++ -*-==// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // These are the replaceable SSE instructions. Some of these have Int variants // that we don't include here. We don't want to replace instructions selected // by intrinsics. #define ENTRY(A, B, C) … static const uint16_t ReplaceableInstrs[][3] = …; static const uint16_t ReplaceableInstrsAVX2[][3] = …; static const uint16_t ReplaceableInstrsFP[][3] = …; static const uint16_t ReplaceableInstrsAVX2InsertExtract[][3] = …; // NOTE: These should only be used by the custom domain methods. static const uint16_t ReplaceableBlendInstrs[][3] = …; static const uint16_t ReplaceableBlendAVX2Instrs[][3] = …; #undef ENTRY #define ENTRY(A, B, C, D) … static const uint16_t ReplaceableInstrsAVX512[][4] = …; static const uint16_t ReplaceableInstrsAVX512DQ[][4] = …; static const uint16_t ReplaceableInstrsAVX512DQMasked[][4] = …; // Special table for changing EVEX logic instructions to VEX. // TODO: Should we run EVEX->VEX earlier? static const uint16_t ReplaceableCustomAVX512LogicInstrs[][4] = …;