1 //===-- llvm/CodeGen/MachineCombinerPattern.h - Instruction pattern supported by
2 // combiner ------*- C++ -*-===//
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 //===----------------------------------------------------------------------===//
10 // This file defines instruction pattern supported by combiner
12 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_CODEGEN_MACHINECOMBINERPATTERN_H
15 #define LLVM_CODEGEN_MACHINECOMBINERPATTERN_H
19 /// These are instruction patterns matched by the machine combiner pass.
20 enum class MachineCombinerPattern
{
21 // These are commutative variants for reassociating a computation chain. See
22 // the comments before getMachineCombinerPatterns() in TargetInstrInfo.cpp.
28 // These are multiply-add patterns matched by the AArch64 machine combiner.
57 FMLAv1i32_indexed_OP1
,
58 FMLAv1i32_indexed_OP2
,
59 FMLAv1i64_indexed_OP1
,
60 FMLAv1i64_indexed_OP2
,
69 FMLAv4i16_indexed_OP1
,
70 FMLAv4i16_indexed_OP2
,
71 FMLAv8i16_indexed_OP1
,
72 FMLAv8i16_indexed_OP2
,
73 FMLAv2i32_indexed_OP1
,
74 FMLAv2i32_indexed_OP2
,
75 FMLAv2i64_indexed_OP1
,
76 FMLAv2i64_indexed_OP2
,
79 FMLAv4i32_indexed_OP1
,
80 FMLAv4i32_indexed_OP2
,
81 FMLSv1i32_indexed_OP2
,
82 FMLSv1i64_indexed_OP2
,
91 FMLSv4i16_indexed_OP1
,
92 FMLSv4i16_indexed_OP2
,
93 FMLSv8i16_indexed_OP1
,
94 FMLSv8i16_indexed_OP2
,
95 FMLSv2i32_indexed_OP1
,
96 FMLSv2i32_indexed_OP2
,
97 FMLSv2i64_indexed_OP1
,
98 FMLSv2i64_indexed_OP2
,
101 FMLSv4i32_indexed_OP1
,
102 FMLSv4i32_indexed_OP2
105 } // end namespace llvm