Skip to content

Commit 312fb7d

Browse files
committed
CodeGen: Port ExpandLargeDivRem to new pass manager
1 parent d636d73 commit 312fb7d

File tree

8 files changed

+45
-1
lines changed

8 files changed

+45
-1
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//===- ExpandLargeDivRem.h --------------------------------------*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef LLVM_CODEGEN_EXPANDLARGEDIVREM_H
10+
#define LLVM_CODEGEN_EXPANDLARGEDIVREM_H
11+
12+
#include "llvm/IR/PassManager.h"
13+
14+
namespace llvm {
15+
16+
class TargetMachine;
17+
18+
class ExpandLargeDivRemPass : public PassInfoMixin<ExpandLargeDivRemPass> {
19+
private:
20+
const TargetMachine *TM;
21+
22+
public:
23+
explicit ExpandLargeDivRemPass(const TargetMachine *TM_) : TM(TM_) {}
24+
25+
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
26+
};
27+
28+
} // end namespace llvm
29+
30+
#endif // LLVM_CODEGEN_EXPANDLARGEDIVREM_H

llvm/lib/CodeGen/ExpandLargeDivRem.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
//
1515
//===----------------------------------------------------------------------===//
1616

17+
#include "llvm/CodeGen/ExpandLargeDivRem.h"
1718
#include "llvm/ADT/SmallVector.h"
1819
#include "llvm/ADT/StringExtras.h"
1920
#include "llvm/Analysis/GlobalsModRef.h"
@@ -128,6 +129,13 @@ class ExpandLargeDivRemLegacyPass : public FunctionPass {
128129
};
129130
} // namespace
130131

132+
PreservedAnalyses ExpandLargeDivRemPass::run(Function &F,
133+
FunctionAnalysisManager &FAM) {
134+
const TargetSubtargetInfo *STI = TM->getSubtargetImpl(F);
135+
PreservedAnalyses PA = PreservedAnalyses::none();
136+
return runImpl(F, *STI->getTargetLowering()) ? PA : PreservedAnalyses::all();
137+
}
138+
131139
char ExpandLargeDivRemLegacyPass::ID = 0;
132140
INITIALIZE_PASS_BEGIN(ExpandLargeDivRemLegacyPass, "expand-large-div-rem",
133141
"Expand large div/rem", false, false)

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
#include "llvm/Analysis/TargetTransformInfo.h"
7373
#include "llvm/Analysis/TypeBasedAliasAnalysis.h"
7474
#include "llvm/Analysis/UniformityAnalysis.h"
75+
#include "llvm/CodeGen/ExpandLargeDivRem.h"
7576
#include "llvm/CodeGen/HardwareLoops.h"
7677
#include "llvm/CodeGen/TypePromotion.h"
7778
#include "llvm/IR/DebugInfo.h"
@@ -234,8 +235,8 @@
234235
#include "llvm/Transforms/Utils/CanonicalizeAliases.h"
235236
#include "llvm/Transforms/Utils/CanonicalizeFreezeInLoops.h"
236237
#include "llvm/Transforms/Utils/CountVisits.h"
237-
#include "llvm/Transforms/Utils/Debugify.h"
238238
#include "llvm/Transforms/Utils/DXILUpgrade.h"
239+
#include "llvm/Transforms/Utils/Debugify.h"
239240
#include "llvm/Transforms/Utils/EntryExitInstrumenter.h"
240241
#include "llvm/Transforms/Utils/FixIrreducible.h"
241242
#include "llvm/Transforms/Utils/HelloWorld.h"

llvm/lib/Passes/PassRegistry.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ FUNCTION_PASS("transform-warning", WarnMissedTransformationsPass())
445445
FUNCTION_PASS("tsan", ThreadSanitizerPass())
446446
FUNCTION_PASS("memprof", MemProfilerPass())
447447
FUNCTION_PASS("declare-to-assign", llvm::AssignmentTrackingPass())
448+
FUNCTION_PASS("expand-large-div-rem", ExpandLargeDivRemPass(TM));
448449
#undef FUNCTION_PASS
449450

450451
#ifndef FUNCTION_PASS_WITH_PARAMS

llvm/test/Transforms/ExpandLargeDivRem/X86/sdiv129.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22
; RUN: opt -S -mtriple=x86_64-- -expand-large-div-rem -expand-div-rem-bits 128 < %s | FileCheck %s
3+
; RUN: opt -S -mtriple=x86_64-- -passes=expand-large-div-rem -expand-div-rem-bits 128 < %s | FileCheck %s
34

45
define void @sdiv129(ptr %ptr, ptr %out) nounwind {
56
; CHECK-LABEL: @sdiv129(

llvm/test/Transforms/ExpandLargeDivRem/X86/srem129.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22
; RUN: opt -S -mtriple=x86_64-- -expand-large-div-rem -expand-div-rem-bits 128 < %s | FileCheck %s
3+
; RUN: opt -S -mtriple=x86_64-- -passes=expand-large-div-rem -expand-div-rem-bits 128 < %s | FileCheck %s
34

45
define void @test(ptr %ptr, ptr %out) nounwind {
56
; CHECK-LABEL: @test(

llvm/test/Transforms/ExpandLargeDivRem/X86/udiv129.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22
; RUN: opt -S -mtriple=x86_64-- -expand-large-div-rem -expand-div-rem-bits 128 < %s | FileCheck %s
3+
; RUN: opt -S -mtriple=x86_64-- -passes=expand-large-div-rem -expand-div-rem-bits 128 < %s | FileCheck %s
34

45
define void @test(ptr %ptr, ptr %out) nounwind {
56
; CHECK-LABEL: @test(

llvm/test/Transforms/ExpandLargeDivRem/X86/urem129.ll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22
; RUN: opt -S -mtriple=x86_64-- -expand-large-div-rem -expand-div-rem-bits 128 < %s | FileCheck %s
3+
; RUN: opt -S -mtriple=x86_64-- -passes=expand-large-div-rem -expand-div-rem-bits 128 < %s | FileCheck %s
34

45
define void @test(ptr %ptr, ptr %out) nounwind {
56
; CHECK-LABEL: @test(

0 commit comments

Comments
 (0)