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