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