1 //===-- llvm/CodeGen/MachineCombinerPattern.h - Instruction pattern supported by 2 // combiner ------*- C++ -*-===// 3 // 4 // The LLVM Compiler Infrastructure 5 // 6 // This file is distributed under the University of Illinois Open Source 7 // License. See LICENSE.TXT for details. 8 // 9 //===----------------------------------------------------------------------===// 10 // 11 // This file defines instruction pattern supported by combiner 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_CODEGEN_MACHINECOMBINERPATTERN_H 16 #define LLVM_CODEGEN_MACHINECOMBINERPATTERN_H 17 18 namespace llvm { 19 20 /// These are instruction patterns matched by the machine combiner pass. 21 enum class MachineCombinerPattern { 22 // These are commutative variants for reassociating a computation chain. See 23 // the comments before getMachineCombinerPatterns() in TargetInstrInfo.cpp. 24 REASSOC_AX_BY, 25 REASSOC_AX_YB, 26 REASSOC_XA_BY, 27 REASSOC_XA_YB, 28 29 // These are multiply-add patterns matched by the AArch64 machine combiner. 30 MULADDW_OP1, 31 MULADDW_OP2, 32 MULSUBW_OP1, 33 MULSUBW_OP2, 34 MULADDWI_OP1, 35 MULSUBWI_OP1, 36 MULADDX_OP1, 37 MULADDX_OP2, 38 MULSUBX_OP1, 39 MULSUBX_OP2, 40 MULADDXI_OP1, 41 MULSUBXI_OP1 42 }; 43 44 } // end namespace llvm 45 46 #endif 47