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 patterns matched by the PowerPC to reassociate FMA chains.
32 // These are multiply-add patterns matched by the AArch64 machine combiner.
45 // NEON integers vectors
72 MULADDv4i16_indexed_OP1,
73 MULADDv4i16_indexed_OP2,
74 MULADDv8i16_indexed_OP1,
75 MULADDv8i16_indexed_OP2,
76 MULADDv2i32_indexed_OP1,
77 MULADDv2i32_indexed_OP2,
78 MULADDv4i32_indexed_OP1,
79 MULADDv4i32_indexed_OP2,
81 MULSUBv4i16_indexed_OP1,
82 MULSUBv4i16_indexed_OP2,
83 MULSUBv8i16_indexed_OP1,
84 MULSUBv8i16_indexed_OP2,
85 MULSUBv2i32_indexed_OP1,
86 MULSUBv2i32_indexed_OP2,
87 MULSUBv4i32_indexed_OP1,
88 MULSUBv4i32_indexed_OP2,
106 FMLAv1i32_indexed_OP1,
107 FMLAv1i32_indexed_OP2,
108 FMLAv1i64_indexed_OP1,
109 FMLAv1i64_indexed_OP2,
118 FMLAv4i16_indexed_OP1,
119 FMLAv4i16_indexed_OP2,
120 FMLAv8i16_indexed_OP1,
121 FMLAv8i16_indexed_OP2,
122 FMLAv2i32_indexed_OP1,
123 FMLAv2i32_indexed_OP2,
124 FMLAv2i64_indexed_OP1,
125 FMLAv2i64_indexed_OP2,
128 FMLAv4i32_indexed_OP1,
129 FMLAv4i32_indexed_OP2,
130 FMLSv1i32_indexed_OP2,
131 FMLSv1i64_indexed_OP2,
140 FMLSv4i16_indexed_OP1,
141 FMLSv4i16_indexed_OP2,
142 FMLSv8i16_indexed_OP1,
143 FMLSv8i16_indexed_OP2,
144 FMLSv2i32_indexed_OP1,
145 FMLSv2i32_indexed_OP2,
146 FMLSv2i64_indexed_OP1,
147 FMLSv2i64_indexed_OP2,
150 FMLSv4i32_indexed_OP1,
151 FMLSv4i32_indexed_OP2
154 } // end namespace llvm