1*ca7c307dSSotiris Apostolakis //===--- SelectOptimize.cpp - Convert select to branches if profitable ---===// 2*ca7c307dSSotiris Apostolakis // 3*ca7c307dSSotiris Apostolakis // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*ca7c307dSSotiris Apostolakis // See https://llvm.org/LICENSE.txt for license information. 5*ca7c307dSSotiris Apostolakis // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*ca7c307dSSotiris Apostolakis // 7*ca7c307dSSotiris Apostolakis //===----------------------------------------------------------------------===// 8*ca7c307dSSotiris Apostolakis // 9*ca7c307dSSotiris Apostolakis // This pass converts selects to conditional jumps when profitable. 10*ca7c307dSSotiris Apostolakis // 11*ca7c307dSSotiris Apostolakis //===----------------------------------------------------------------------===// 12*ca7c307dSSotiris Apostolakis 13*ca7c307dSSotiris Apostolakis #include "llvm/CodeGen/Passes.h" 14*ca7c307dSSotiris Apostolakis #include "llvm/IR/Function.h" 15*ca7c307dSSotiris Apostolakis #include "llvm/InitializePasses.h" 16*ca7c307dSSotiris Apostolakis #include "llvm/Pass.h" 17*ca7c307dSSotiris Apostolakis 18*ca7c307dSSotiris Apostolakis using namespace llvm; 19*ca7c307dSSotiris Apostolakis 20*ca7c307dSSotiris Apostolakis namespace { 21*ca7c307dSSotiris Apostolakis 22*ca7c307dSSotiris Apostolakis class SelectOptimize : public FunctionPass { 23*ca7c307dSSotiris Apostolakis public: 24*ca7c307dSSotiris Apostolakis static char ID; 25*ca7c307dSSotiris Apostolakis SelectOptimize() : FunctionPass(ID) { 26*ca7c307dSSotiris Apostolakis initializeSelectOptimizePass(*PassRegistry::getPassRegistry()); 27*ca7c307dSSotiris Apostolakis } 28*ca7c307dSSotiris Apostolakis 29*ca7c307dSSotiris Apostolakis bool runOnFunction(Function &F) override; 30*ca7c307dSSotiris Apostolakis 31*ca7c307dSSotiris Apostolakis void getAnalysisUsage(AnalysisUsage &AU) const override {} 32*ca7c307dSSotiris Apostolakis }; 33*ca7c307dSSotiris Apostolakis } // namespace 34*ca7c307dSSotiris Apostolakis 35*ca7c307dSSotiris Apostolakis char SelectOptimize::ID = 0; 36*ca7c307dSSotiris Apostolakis INITIALIZE_PASS(SelectOptimize, "select-optimize", "Optimize selects", false, 37*ca7c307dSSotiris Apostolakis false) 38*ca7c307dSSotiris Apostolakis 39*ca7c307dSSotiris Apostolakis FunctionPass *llvm::createSelectOptimizePass() { return new SelectOptimize(); } 40*ca7c307dSSotiris Apostolakis 41*ca7c307dSSotiris Apostolakis bool SelectOptimize::runOnFunction(Function &F) { 42*ca7c307dSSotiris Apostolakis llvm_unreachable("Unimplemented"); 43*ca7c307dSSotiris Apostolakis } 44