1 //===-- X86EncodingOptimization.h - X86 Encoding optimization ---*- 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 // 9 // This file contains the declarations of the X86 encoding optimization 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef LLVM_LIB_TARGET_X86_X86ENCODINGOPTIMIZATION_H 14 #define LLVM_LIB_TARGET_X86_X86ENCODINGOPTIMIZATION_H 15 namespace llvm { 16 class MCInst; 17 class MCInstrDesc; 18 namespace X86 { 19 bool optimizeInstFromVEX3ToVEX2(MCInst &MI, const MCInstrDesc &Desc); 20 bool optimizeShiftRotateWithImmediateOne(MCInst &MI); 21 bool optimizeVPCMPWithImmediateOneOrSix(MCInst &MI); 22 bool optimizeMOVSX(MCInst &MI); 23 bool optimizeINCDEC(MCInst &MI, bool In64BitMode); 24 bool optimizeMOV(MCInst &MI, bool In64BitMode); 25 bool optimizeToFixedRegisterOrShortImmediateForm(MCInst &MI); 26 unsigned getOpcodeForShortImmediateForm(unsigned Opcode); 27 unsigned getOpcodeForLongImmediateForm(unsigned Opcode); 28 } // namespace X86 29 } // namespace llvm 30 #endif 31