003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
lib
/
CodeGen
/
GlobalISel
/
📁
..
📄
CSEInfo.cpp
(12.25 KB)
📄
CSEMIRBuilder.cpp
(8.85 KB)
📄
CallLowering.cpp
(19.93 KB)
📄
Combiner.cpp
(5.58 KB)
📄
CombinerHelper.cpp
(62.81 KB)
📄
GISelChangeObserver.cpp
(1.69 KB)
📄
GISelKnownBits.cpp
(18.45 KB)
📄
GlobalISel.cpp
(901 B)
📄
IRTranslator.cpp
(90.61 KB)
📄
InlineAsmLowering.cpp
(24.72 KB)
📄
InstructionSelect.cpp
(9.31 KB)
📄
InstructionSelector.cpp
(2.88 KB)
📄
LegalityPredicates.cpp
(6.61 KB)
📄
LegalizeMutations.cpp
(2.68 KB)
📄
Legalizer.cpp
(14.52 KB)
📄
LegalizerHelper.cpp
(185.18 KB)
📄
LegalizerInfo.cpp
(27.83 KB)
📄
Localizer.cpp
(7.14 KB)
📄
LostDebugLocObserver.cpp
(3.38 KB)
📄
MachineIRBuilder.cpp
(45.42 KB)
📄
RegBankSelect.cpp
(41.82 KB)
📄
RegisterBank.cpp
(3.96 KB)
📄
RegisterBankInfo.cpp
(30.26 KB)
📄
Utils.cpp
(19.66 KB)
Editing: LegalizeMutations.cpp
//===- lib/CodeGen/GlobalISel/LegalizerMutations.cpp - Mutations ----------===// // // 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 // //===----------------------------------------------------------------------===// // // A library of mutation factories to use for LegalityMutation. // //===----------------------------------------------------------------------===// #include "llvm/CodeGen/GlobalISel/LegalizerInfo.h" using namespace llvm; LegalizeMutation LegalizeMutations::changeTo(unsigned TypeIdx, LLT Ty) { return [=](const LegalityQuery &Query) { return std::make_pair(TypeIdx, Ty); }; } LegalizeMutation LegalizeMutations::changeTo(unsigned TypeIdx, unsigned FromTypeIdx) { return [=](const LegalityQuery &Query) { return std::make_pair(TypeIdx, Query.Types[FromTypeIdx]); }; } LegalizeMutation LegalizeMutations::changeElementTo(unsigned TypeIdx, unsigned FromTypeIdx) { return [=](const LegalityQuery &Query) { const LLT OldTy = Query.Types[TypeIdx]; const LLT NewTy = Query.Types[FromTypeIdx]; return std::make_pair(TypeIdx, OldTy.changeElementType(NewTy)); }; } LegalizeMutation LegalizeMutations::changeElementTo(unsigned TypeIdx, LLT NewEltTy) { return [=](const LegalityQuery &Query) { const LLT OldTy = Query.Types[TypeIdx]; return std::make_pair(TypeIdx, OldTy.changeElementType(NewEltTy)); }; } LegalizeMutation LegalizeMutations::widenScalarOrEltToNextPow2(unsigned TypeIdx, unsigned Min) { return [=](const LegalityQuery &Query) { const LLT Ty = Query.Types[TypeIdx]; unsigned NewEltSizeInBits = std::max(1u << Log2_32_Ceil(Ty.getScalarSizeInBits()), Min); return std::make_pair(TypeIdx, Ty.changeElementSize(NewEltSizeInBits)); }; } LegalizeMutation LegalizeMutations::moreElementsToNextPow2(unsigned TypeIdx, unsigned Min) { return [=](const LegalityQuery &Query) { const LLT VecTy = Query.Types[TypeIdx]; unsigned NewNumElements = std::max(1u << Log2_32_Ceil(VecTy.getNumElements()), Min); return std::make_pair(TypeIdx, LLT::vector(NewNumElements, VecTy.getElementType())); }; } LegalizeMutation LegalizeMutations::scalarize(unsigned TypeIdx) { return [=](const LegalityQuery &Query) { return std::make_pair(TypeIdx, Query.Types[TypeIdx].getElementType()); }; }
Upload File
Create Folder