xref: /freebsd-src/contrib/llvm-project/llvm/lib/Target/AMDGPU/AMDGPUCombinerHelper.h (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
1*06c3fb27SDimitry Andric //=== lib/CodeGen/GlobalISel/AMDGPUCombinerHelper.h -------------*- C++ -*-===//
2349cc55cSDimitry Andric //
3349cc55cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4349cc55cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5349cc55cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6349cc55cSDimitry Andric //
7349cc55cSDimitry Andric //===----------------------------------------------------------------------===//
8349cc55cSDimitry Andric ///
9349cc55cSDimitry Andric /// \file
10349cc55cSDimitry Andric /// This contains common combine transformations that may be used in a combine
11349cc55cSDimitry Andric /// pass.
12349cc55cSDimitry Andric ///
13349cc55cSDimitry Andric //===----------------------------------------------------------------------===//
14349cc55cSDimitry Andric 
15*06c3fb27SDimitry Andric #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUCOMBINERHELPER_H
16*06c3fb27SDimitry Andric #define LLVM_LIB_TARGET_AMDGPU_AMDGPUCOMBINERHELPER_H
17*06c3fb27SDimitry Andric 
18349cc55cSDimitry Andric #include "llvm/CodeGen/GlobalISel/Combiner.h"
19349cc55cSDimitry Andric #include "llvm/CodeGen/GlobalISel/CombinerHelper.h"
20349cc55cSDimitry Andric 
21349cc55cSDimitry Andric using namespace llvm;
22349cc55cSDimitry Andric 
23349cc55cSDimitry Andric class AMDGPUCombinerHelper : public CombinerHelper {
24349cc55cSDimitry Andric public:
25349cc55cSDimitry Andric   using CombinerHelper::CombinerHelper;
26349cc55cSDimitry Andric 
27349cc55cSDimitry Andric   bool matchFoldableFneg(MachineInstr &MI, MachineInstr *&MatchInfo);
28349cc55cSDimitry Andric   void applyFoldableFneg(MachineInstr &MI, MachineInstr *&MatchInfo);
29*06c3fb27SDimitry Andric 
30*06c3fb27SDimitry Andric   bool matchExpandPromotedF16FMed3(MachineInstr &MI, Register Src0,
31*06c3fb27SDimitry Andric                                    Register Src1, Register Src2);
32*06c3fb27SDimitry Andric   void applyExpandPromotedF16FMed3(MachineInstr &MI, Register Src0,
33*06c3fb27SDimitry Andric                                    Register Src1, Register Src2);
34349cc55cSDimitry Andric };
35*06c3fb27SDimitry Andric 
36*06c3fb27SDimitry Andric #endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUCOMBINERHELPER_H
37