mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-21 18:56:49 +00:00
Rename ExpandLargeFpConvertPass to ExpandFpPass (#131128)
This is meant as a preparation for PR #130988 "[AMDGPU] Implement IR expansion for frem instruction" which implements the expansion of another instruction in this pass. The more general name seems more appropriate given this change and quite reasonable even without it.
This commit is contained in:
parent
73e93ec3a2
commit
6962cf1700
llvm
docs
include/llvm
lib
CodeGen
Passes
test
CodeGen
AArch64
AMDGPU
ARM
LoongArch
M68k
PowerPC
RISCV
X86
Transforms/ExpandLargeFpConvert/X86
tools/opt
utils/gn/secondary/llvm/lib/CodeGen
@ -652,7 +652,7 @@ default optimization pipelines, e.g. (the output has been trimmed):
|
||||
Pre-ISel Intrinsic Lowering
|
||||
FunctionPass Manager
|
||||
Expand large div/rem
|
||||
Expand large fp convert
|
||||
Expand fp
|
||||
Expand Atomic instructions
|
||||
SVE intrinsics optimizations
|
||||
FunctionPass Manager
|
||||
|
@ -1,4 +1,4 @@
|
||||
//===- ExpandLargeFpConvert.h -----------------------------------*- C++ -*-===//
|
||||
//===- ExpandFp.h -----------------------------------*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
@ -6,8 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_CODEGEN_EXPANDLARGEFPCONVERT_H
|
||||
#define LLVM_CODEGEN_EXPANDLARGEFPCONVERT_H
|
||||
#ifndef LLVM_CODEGEN_EXPANDFP_H
|
||||
#define LLVM_CODEGEN_EXPANDFP_H
|
||||
|
||||
#include "llvm/IR/PassManager.h"
|
||||
|
||||
@ -15,17 +15,16 @@ namespace llvm {
|
||||
|
||||
class TargetMachine;
|
||||
|
||||
class ExpandLargeFpConvertPass
|
||||
: public PassInfoMixin<ExpandLargeFpConvertPass> {
|
||||
class ExpandFpPass : public PassInfoMixin<ExpandFpPass> {
|
||||
private:
|
||||
const TargetMachine *TM;
|
||||
|
||||
public:
|
||||
explicit ExpandLargeFpConvertPass(const TargetMachine *TM_) : TM(TM_) {}
|
||||
explicit ExpandFpPass(const TargetMachine *TM_) : TM(TM_) {}
|
||||
|
||||
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif // LLVM_CODEGEN_EXPANDLARGEFPCONVERT_H
|
||||
#endif // LLVM_CODEGEN_EXPANDFP_H
|
@ -529,7 +529,7 @@ namespace llvm {
|
||||
FunctionPass *createExpandLargeDivRemPass();
|
||||
|
||||
// Expands large div/rem instructions.
|
||||
FunctionPass *createExpandLargeFpConvertPass();
|
||||
FunctionPass *createExpandFpPass();
|
||||
|
||||
// This pass expands memcmp() to load/stores.
|
||||
FunctionPass *createExpandMemCmpLegacyPass();
|
||||
|
@ -2148,8 +2148,8 @@ public:
|
||||
return MaxDivRemBitWidthSupported;
|
||||
}
|
||||
|
||||
/// Returns the size in bits of the maximum larget fp convert the backend
|
||||
/// supports. Larger operations will be expanded by ExpandLargeFPConvert.
|
||||
/// Returns the size in bits of the maximum fp to/from int conversion the
|
||||
/// backend supports. Larger operations will be expanded by ExpandFp.
|
||||
unsigned getMaxLargeFPConvertBitWidthSupported() const {
|
||||
return MaxLargeFPConvertBitWidthSupported;
|
||||
}
|
||||
@ -2782,8 +2782,8 @@ protected:
|
||||
MaxDivRemBitWidthSupported = SizeInBits;
|
||||
}
|
||||
|
||||
/// Set the size in bits of the maximum fp convert the backend supports.
|
||||
/// Larger operations will be expanded by ExpandLargeFPConvert.
|
||||
/// Set the size in bits of the maximum fp to/from int conversion the backend
|
||||
/// supports. Larger operations will be expanded by ExpandFp.
|
||||
void setMaxLargeFPConvertBitWidthSupported(unsigned SizeInBits) {
|
||||
MaxLargeFPConvertBitWidthSupported = SizeInBits;
|
||||
}
|
||||
@ -3580,8 +3580,9 @@ private:
|
||||
/// Larger operations will be expanded by ExpandLargeDivRem.
|
||||
unsigned MaxDivRemBitWidthSupported;
|
||||
|
||||
/// Size in bits of the maximum larget fp convert size the backend
|
||||
/// supports. Larger operations will be expanded by ExpandLargeFPConvert.
|
||||
/// Size in bits of the maximum fp to/from int conversion size the
|
||||
/// backend supports. Larger operations will be expanded by
|
||||
/// ExpandFp.
|
||||
unsigned MaxLargeFPConvertBitWidthSupported;
|
||||
|
||||
/// Size in bits of the minimum cmpxchg or ll/sc operation the
|
||||
|
@ -105,7 +105,7 @@ void initializeEarlyMachineLICMPass(PassRegistry &);
|
||||
void initializeEarlyTailDuplicateLegacyPass(PassRegistry &);
|
||||
void initializeEdgeBundlesWrapperLegacyPass(PassRegistry &);
|
||||
void initializeEHContGuardTargetsPass(PassRegistry &);
|
||||
void initializeExpandLargeFpConvertLegacyPassPass(PassRegistry &);
|
||||
void initializeExpandFpLegacyPassPass(PassRegistry &);
|
||||
void initializeExpandLargeDivRemLegacyPassPass(PassRegistry &);
|
||||
void initializeExpandMemCmpLegacyPassPass(PassRegistry &);
|
||||
void initializeExpandPostRALegacyPass(PassRegistry &);
|
||||
|
@ -30,8 +30,8 @@
|
||||
#include "llvm/CodeGen/DetectDeadLanes.h"
|
||||
#include "llvm/CodeGen/DwarfEHPrepare.h"
|
||||
#include "llvm/CodeGen/EarlyIfConversion.h"
|
||||
#include "llvm/CodeGen/ExpandFp.h"
|
||||
#include "llvm/CodeGen/ExpandLargeDivRem.h"
|
||||
#include "llvm/CodeGen/ExpandLargeFpConvert.h"
|
||||
#include "llvm/CodeGen/ExpandMemCmp.h"
|
||||
#include "llvm/CodeGen/ExpandPostRAPseudos.h"
|
||||
#include "llvm/CodeGen/ExpandReductions.h"
|
||||
@ -663,7 +663,7 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addISelPasses(
|
||||
|
||||
addPass(PreISelIntrinsicLoweringPass(&TM));
|
||||
addPass(ExpandLargeDivRemPass(&TM));
|
||||
addPass(ExpandLargeFpConvertPass(&TM));
|
||||
addPass(ExpandFpPass(&TM));
|
||||
|
||||
derived().addIRPasses(addPass);
|
||||
derived().addCodeGenPrepare(addPass);
|
||||
|
@ -52,7 +52,7 @@ FUNCTION_PASS("consthoist", ConstantHoistingPass())
|
||||
FUNCTION_PASS("dwarf-eh-prepare", DwarfEHPreparePass(TM))
|
||||
FUNCTION_PASS("ee-instrument", EntryExitInstrumenterPass(false))
|
||||
FUNCTION_PASS("expand-large-div-rem", ExpandLargeDivRemPass(TM))
|
||||
FUNCTION_PASS("expand-large-fp-convert", ExpandLargeFpConvertPass(TM))
|
||||
FUNCTION_PASS("expand-fp", ExpandFpPass(TM))
|
||||
FUNCTION_PASS("expand-memcmp", ExpandMemCmpPass(TM))
|
||||
FUNCTION_PASS("expand-reductions", ExpandReductionsPass())
|
||||
FUNCTION_PASS("gc-lowering", GCLoweringPass())
|
||||
|
@ -57,7 +57,7 @@ add_llvm_component_library(LLVMCodeGen
|
||||
EHContGuardTargets.cpp
|
||||
ExecutionDomainFix.cpp
|
||||
ExpandLargeDivRem.cpp
|
||||
ExpandLargeFpConvert.cpp
|
||||
ExpandFp.cpp
|
||||
ExpandMemCmp.cpp
|
||||
ExpandPostRAPseudos.cpp
|
||||
ExpandReductions.cpp
|
||||
|
@ -40,7 +40,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
|
||||
initializeEarlyMachineLICMPass(Registry);
|
||||
initializeEarlyTailDuplicateLegacyPass(Registry);
|
||||
initializeExpandLargeDivRemLegacyPassPass(Registry);
|
||||
initializeExpandLargeFpConvertLegacyPassPass(Registry);
|
||||
initializeExpandFpLegacyPassPass(Registry);
|
||||
initializeExpandMemCmpLegacyPassPass(Registry);
|
||||
initializeExpandPostRALegacyPass(Registry);
|
||||
initializeFEntryInserterPass(Registry);
|
||||
|
@ -1,20 +1,20 @@
|
||||
//===--- ExpandLargeFpConvert.cpp - Expand large fp convert----------------===//
|
||||
//===--- ExpandFp.cpp - Expand fp instructions ----------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
// This pass expands certain floating point instructions at the IR level.
|
||||
//
|
||||
|
||||
// This pass expands ‘fptoui .. to’, ‘fptosi .. to’, ‘uitofp .. to’,
|
||||
// ‘sitofp .. to’ instructions with a bitwidth above a threshold into
|
||||
// auto-generated functions. This is useful for targets like x86_64 that cannot
|
||||
// lower fp convertions with more than 128 bits.
|
||||
// It expands ‘fptoui .. to’, ‘fptosi .. to’, ‘uitofp .. to’, ‘sitofp
|
||||
// .. to’ instructions with a bitwidth above a threshold. This is
|
||||
// useful for targets like x86_64 that cannot lower fp convertions
|
||||
// with more than 128 bits.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/CodeGen/ExpandLargeFpConvert.h"
|
||||
#include "llvm/CodeGen/ExpandFp.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/Analysis/GlobalsModRef.h"
|
||||
#include "llvm/CodeGen/Passes.h"
|
||||
@ -33,9 +33,11 @@ using namespace llvm;
|
||||
|
||||
static cl::opt<unsigned>
|
||||
ExpandFpConvertBits("expand-fp-convert-bits", cl::Hidden,
|
||||
cl::init(llvm::IntegerType::MAX_INT_BITS),
|
||||
cl::desc("fp convert instructions on integers with "
|
||||
"more than <N> bits are expanded."));
|
||||
cl::init(llvm::IntegerType::MAX_INT_BITS),
|
||||
cl::desc("fp convert instructions on integers with "
|
||||
"more than <N> bits are expanded."));
|
||||
|
||||
// clang-format off: preserve formatting of the following example
|
||||
|
||||
/// Generate code to convert a fp number to integer, replacing FPToS(U)I with
|
||||
/// the generated code. This currently generates code similarly to compiler-rt's
|
||||
@ -88,6 +90,7 @@ static cl::opt<unsigned>
|
||||
///
|
||||
/// Replace fp to integer with generated code.
|
||||
static void expandFPToI(Instruction *FPToI) {
|
||||
// clang-format on
|
||||
IRBuilder<> Builder(FPToI);
|
||||
auto *FloatVal = FPToI->getOperand(0);
|
||||
IntegerType *IntTy = cast<IntegerType>(FPToI->getType());
|
||||
@ -224,6 +227,8 @@ static void expandFPToI(Instruction *FPToI) {
|
||||
FPToI->eraseFromParent();
|
||||
}
|
||||
|
||||
// clang-format off: preserve formatting of the following example
|
||||
|
||||
/// Generate code to convert a fp number to integer, replacing S(U)IToFP with
|
||||
/// the generated code. This currently generates code similarly to compiler-rt's
|
||||
/// implementations. This implementation has an implicit assumption that integer
|
||||
@ -307,6 +312,7 @@ static void expandFPToI(Instruction *FPToI) {
|
||||
///
|
||||
/// Replace integer to fp with generated code.
|
||||
static void expandIToFP(Instruction *IToFP) {
|
||||
// clang-format on
|
||||
IRBuilder<> Builder(IToFP);
|
||||
auto *IntVal = IToFP->getOperand(0);
|
||||
IntegerType *IntTy = cast<IntegerType>(IntVal->getType());
|
||||
@ -666,13 +672,12 @@ static bool runImpl(Function &F, const TargetLowering &TLI) {
|
||||
}
|
||||
|
||||
namespace {
|
||||
class ExpandLargeFpConvertLegacyPass : public FunctionPass {
|
||||
class ExpandFpLegacyPass : public FunctionPass {
|
||||
public:
|
||||
static char ID;
|
||||
|
||||
ExpandLargeFpConvertLegacyPass() : FunctionPass(ID) {
|
||||
initializeExpandLargeFpConvertLegacyPassPass(
|
||||
*PassRegistry::getPassRegistry());
|
||||
ExpandFpLegacyPass() : FunctionPass(ID) {
|
||||
initializeExpandFpLegacyPassPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
bool runOnFunction(Function &F) override {
|
||||
@ -689,19 +694,15 @@ public:
|
||||
};
|
||||
} // namespace
|
||||
|
||||
PreservedAnalyses ExpandLargeFpConvertPass::run(Function &F,
|
||||
FunctionAnalysisManager &FAM) {
|
||||
PreservedAnalyses ExpandFpPass::run(Function &F, FunctionAnalysisManager &FAM) {
|
||||
const TargetSubtargetInfo *STI = TM->getSubtargetImpl(F);
|
||||
return runImpl(F, *STI->getTargetLowering()) ? PreservedAnalyses::none()
|
||||
: PreservedAnalyses::all();
|
||||
}
|
||||
|
||||
char ExpandLargeFpConvertLegacyPass::ID = 0;
|
||||
INITIALIZE_PASS_BEGIN(ExpandLargeFpConvertLegacyPass, "expand-large-fp-convert",
|
||||
"Expand large fp convert", false, false)
|
||||
INITIALIZE_PASS_END(ExpandLargeFpConvertLegacyPass, "expand-large-fp-convert",
|
||||
"Expand large fp convert", false, false)
|
||||
char ExpandFpLegacyPass::ID = 0;
|
||||
INITIALIZE_PASS_BEGIN(ExpandFpLegacyPass, "expand-fp",
|
||||
"Expand certain fp instructions", false, false)
|
||||
INITIALIZE_PASS_END(ExpandFpLegacyPass, "expand-fp", "Expand fp", false, false)
|
||||
|
||||
FunctionPass *llvm::createExpandLargeFpConvertPass() {
|
||||
return new ExpandLargeFpConvertLegacyPass();
|
||||
}
|
||||
FunctionPass *llvm::createExpandFpPass() { return new ExpandFpLegacyPass(); }
|
@ -1070,7 +1070,7 @@ bool TargetPassConfig::addISelPasses() {
|
||||
PM->add(createTargetTransformInfoWrapperPass(TM->getTargetIRAnalysis()));
|
||||
addPass(createPreISelIntrinsicLoweringPass());
|
||||
addPass(createExpandLargeDivRemPass());
|
||||
addPass(createExpandLargeFpConvertPass());
|
||||
addPass(createExpandFpPass());
|
||||
addIRPasses();
|
||||
addCodeGenPrepare();
|
||||
addPassesToHandleExceptions();
|
||||
|
@ -89,8 +89,8 @@
|
||||
#include "llvm/CodeGen/DwarfEHPrepare.h"
|
||||
#include "llvm/CodeGen/EarlyIfConversion.h"
|
||||
#include "llvm/CodeGen/EdgeBundles.h"
|
||||
#include "llvm/CodeGen/ExpandFp.h"
|
||||
#include "llvm/CodeGen/ExpandLargeDivRem.h"
|
||||
#include "llvm/CodeGen/ExpandLargeFpConvert.h"
|
||||
#include "llvm/CodeGen/ExpandMemCmp.h"
|
||||
#include "llvm/CodeGen/ExpandPostRAPseudos.h"
|
||||
#include "llvm/CodeGen/FinalizeISel.h"
|
||||
|
@ -366,7 +366,7 @@ FUNCTION_PASS("dot-post-dom-only", PostDomOnlyPrinter())
|
||||
FUNCTION_PASS("dse", DSEPass())
|
||||
FUNCTION_PASS("dwarf-eh-prepare", DwarfEHPreparePass(TM))
|
||||
FUNCTION_PASS("expand-large-div-rem", ExpandLargeDivRemPass(TM))
|
||||
FUNCTION_PASS("expand-large-fp-convert", ExpandLargeFpConvertPass(TM))
|
||||
FUNCTION_PASS("expand-fp", ExpandFpPass(TM))
|
||||
FUNCTION_PASS("expand-memcmp", ExpandMemCmpPass(TM))
|
||||
FUNCTION_PASS("extra-vector-passes",
|
||||
ExtraFunctionPassManager<ShouldRunExtraVectorPasses>())
|
||||
|
@ -16,7 +16,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: Module Verifier
|
||||
; CHECK-NEXT: Lower Garbage Collection Instructions
|
||||
|
@ -20,7 +20,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: SVE intrinsics optimizations
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
|
@ -2,7 +2,7 @@
|
||||
; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,SDAG %s
|
||||
; RUN: not --crash llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s 2>&1 | FileCheck -check-prefix=GISEL %s
|
||||
|
||||
; FIXME: GISEL can't handle the "fptrunc float to bfloat" that expand-large-fp-convert emits.
|
||||
; FIXME: GISEL can't handle the "fptrunc float to bfloat" that expand-fp emits.
|
||||
|
||||
; GISEL: unable to translate instruction: fptrunc
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
; GCN-O0-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; GCN-O0-NEXT: FunctionPass Manager
|
||||
; GCN-O0-NEXT: Expand large div/rem
|
||||
; GCN-O0-NEXT: Expand large fp convert
|
||||
; GCN-O0-NEXT: Expand fp
|
||||
; GCN-O0-NEXT: AMDGPU Remove Incompatible Functions
|
||||
; GCN-O0-NEXT: AMDGPU Printf lowering
|
||||
; GCN-O0-NEXT: Lower ctors and dtors for AMDGPU
|
||||
@ -177,7 +177,7 @@
|
||||
; GCN-O1-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; GCN-O1-NEXT: FunctionPass Manager
|
||||
; GCN-O1-NEXT: Expand large div/rem
|
||||
; GCN-O1-NEXT: Expand large fp convert
|
||||
; GCN-O1-NEXT: Expand fp
|
||||
; GCN-O1-NEXT: AMDGPU Remove Incompatible Functions
|
||||
; GCN-O1-NEXT: AMDGPU Printf lowering
|
||||
; GCN-O1-NEXT: Lower ctors and dtors for AMDGPU
|
||||
@ -462,7 +462,7 @@
|
||||
; GCN-O1-OPTS-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; GCN-O1-OPTS-NEXT: FunctionPass Manager
|
||||
; GCN-O1-OPTS-NEXT: Expand large div/rem
|
||||
; GCN-O1-OPTS-NEXT: Expand large fp convert
|
||||
; GCN-O1-OPTS-NEXT: Expand fp
|
||||
; GCN-O1-OPTS-NEXT: AMDGPU Remove Incompatible Functions
|
||||
; GCN-O1-OPTS-NEXT: AMDGPU Printf lowering
|
||||
; GCN-O1-OPTS-NEXT: Lower ctors and dtors for AMDGPU
|
||||
@ -775,7 +775,7 @@
|
||||
; GCN-O2-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; GCN-O2-NEXT: FunctionPass Manager
|
||||
; GCN-O2-NEXT: Expand large div/rem
|
||||
; GCN-O2-NEXT: Expand large fp convert
|
||||
; GCN-O2-NEXT: Expand fp
|
||||
; GCN-O2-NEXT: AMDGPU Remove Incompatible Functions
|
||||
; GCN-O2-NEXT: AMDGPU Printf lowering
|
||||
; GCN-O2-NEXT: Lower ctors and dtors for AMDGPU
|
||||
@ -1094,7 +1094,7 @@
|
||||
; GCN-O3-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; GCN-O3-NEXT: FunctionPass Manager
|
||||
; GCN-O3-NEXT: Expand large div/rem
|
||||
; GCN-O3-NEXT: Expand large fp convert
|
||||
; GCN-O3-NEXT: Expand fp
|
||||
; GCN-O3-NEXT: AMDGPU Remove Incompatible Functions
|
||||
; GCN-O3-NEXT: AMDGPU Printf lowering
|
||||
; GCN-O3-NEXT: Lower ctors and dtors for AMDGPU
|
||||
|
@ -6,7 +6,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: Simplify the CFG
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
|
@ -20,7 +20,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: Module Verifier
|
||||
; CHECK-NEXT: Lower Garbage Collection Instructions
|
||||
|
@ -32,7 +32,7 @@
|
||||
; LAXX-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; LAXX-NEXT: FunctionPass Manager
|
||||
; LAXX-NEXT: Expand large div/rem
|
||||
; LAXX-NEXT: Expand large fp convert
|
||||
; LAXX-NEXT: Expand fp
|
||||
; LAXX-NEXT: Expand Atomic instructions
|
||||
; LAXX-NEXT: Module Verifier
|
||||
; LAXX-NEXT: Dominator Tree Construction
|
||||
|
@ -3,7 +3,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: Module Verifier
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
|
@ -17,7 +17,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: PPC Lower MASS Entries
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
|
@ -20,7 +20,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Convert i1 constants to i32/i64 if they are returned
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: PPC Lower MASS Entries
|
||||
|
@ -20,7 +20,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: RISC-V Zacas ABI fix
|
||||
; CHECK-NEXT: Module Verifier
|
||||
|
@ -24,7 +24,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: RISC-V Zacas ABI fix
|
||||
; CHECK-NEXT: Dominator Tree Construction
|
||||
|
@ -18,7 +18,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: Lower AMX intrinsics
|
||||
; CHECK-NEXT: Lower AMX type for load/store
|
||||
|
@ -28,7 +28,7 @@
|
||||
; CHECK-NEXT: Pre-ISel Intrinsic Lowering
|
||||
; CHECK-NEXT: FunctionPass Manager
|
||||
; CHECK-NEXT: Expand large div/rem
|
||||
; CHECK-NEXT: Expand large fp convert
|
||||
; CHECK-NEXT: Expand fp
|
||||
; CHECK-NEXT: Expand Atomic instructions
|
||||
; CHECK-NEXT: Lower AMX intrinsics
|
||||
; CHECK-NEXT: Lower AMX type for load/store
|
||||
|
@ -1,6 +1,6 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S -mtriple=x86_64-- -expand-large-fp-convert < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- -passes=expand-large-fp-convert < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- --expand-fp < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- -passes=expand-fp < %s | FileCheck %s
|
||||
|
||||
define i129 @halftosi129(half %a) {
|
||||
; CHECK-LABEL: @halftosi129(
|
||||
|
@ -1,6 +1,6 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S -mtriple=x86_64-- -expand-large-fp-convert < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- -passes=expand-large-fp-convert < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- --expand-fp < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- -passes=expand-fp < %s | FileCheck %s
|
||||
|
||||
define i129 @halftoui129(half %a) {
|
||||
; CHECK-LABEL: @halftoui129(
|
||||
|
@ -1,6 +1,6 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S -mtriple=x86_64-- -expand-large-fp-convert < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- -passes=expand-large-fp-convert < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- --expand-fp < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- -passes=expand-fp < %s | FileCheck %s
|
||||
|
||||
define half @si129tohalf(i129 %a) {
|
||||
; CHECK-LABEL: @si129tohalf(
|
||||
|
@ -1,6 +1,6 @@
|
||||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S -mtriple=x86_64-- -expand-large-fp-convert < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- -passes=expand-large-fp-convert < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- --expand-fp < %s | FileCheck %s
|
||||
; RUN: opt -S -mtriple=x86_64-- -passes=expand-fp < %s | FileCheck %s
|
||||
|
||||
define half @ui129tohalf(i129 %a) {
|
||||
; CHECK-LABEL: @ui129tohalf(
|
||||
|
@ -373,7 +373,7 @@ static bool shouldPinPassToLegacyPM(StringRef Pass) {
|
||||
"expand-large-div-rem",
|
||||
"structurizecfg",
|
||||
"fix-irreducible",
|
||||
"expand-large-fp-convert",
|
||||
"expand-fp",
|
||||
"callbrprepare",
|
||||
"scalarizer",
|
||||
};
|
||||
@ -425,7 +425,7 @@ extern "C" int optMain(
|
||||
// For codegen passes, only passes that do IR to IR transformation are
|
||||
// supported.
|
||||
initializeExpandLargeDivRemLegacyPassPass(Registry);
|
||||
initializeExpandLargeFpConvertLegacyPassPass(Registry);
|
||||
initializeExpandFpLegacyPassPass(Registry);
|
||||
initializeExpandMemCmpLegacyPassPass(Registry);
|
||||
initializeScalarizeMaskedMemIntrinLegacyPassPass(Registry);
|
||||
initializeSelectOptimizePass(Registry);
|
||||
|
@ -57,7 +57,7 @@ static_library("CodeGen") {
|
||||
"EdgeBundles.cpp",
|
||||
"ExecutionDomainFix.cpp",
|
||||
"ExpandLargeDivRem.cpp",
|
||||
"ExpandLargeFpConvert.cpp",
|
||||
"ExpandFp.cpp",
|
||||
"ExpandMemCmp.cpp",
|
||||
"ExpandPostRAPseudos.cpp",
|
||||
"ExpandReductions.cpp",
|
||||
|
Loading…
x
Reference in New Issue
Block a user