[PATCH] D76551: [Alignment][NFC] Use TargetFrameLowering::getStackAlign()
gchatelet updated this revision to Diff 251971. gchatelet added a comment. Herald added a reviewer: jdoerfert. rebase Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76551/new/ https://reviews.llvm.org/D76551 Files: llvm/lib/CodeGen/MachineFunction.cpp llvm/lib/CodeGen/PrologEpilogInserter.cpp llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp llvm/lib/Target/AVR/AVRFrameLowering.cpp llvm/lib/Target/MSP430/MSP430FrameLowering.cpp llvm/lib/Target/Mips/MipsCallLowering.cpp llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp llvm/lib/Target/RISCV/RISCVFrameLowering.cpp llvm/lib/Target/X86/X86CallFrameOptimization.cpp llvm/lib/Target/X86/X86FastISel.cpp llvm/lib/Target/X86/X86FrameLowering.cpp llvm/lib/Target/X86/X86ISelLowering.cpp llvm/lib/Target/X86/X86InstrInfo.cpp llvm/lib/Target/X86/X86InstrInfo.h Index: llvm/lib/Target/X86/X86InstrInfo.h === --- llvm/lib/Target/X86/X86InstrInfo.h +++ llvm/lib/Target/X86/X86InstrInfo.h @@ -474,7 +474,7 @@ unsigned OpNum, ArrayRef MOs, MachineBasicBlock::iterator InsertPt, - unsigned Size, unsigned Alignment, + unsigned Size, Align Alignment, bool AllowCommute) const; bool isHighLatencyDef(int opc) const override; @@ -594,7 +594,7 @@ unsigned OpNum, ArrayRef MOs, MachineBasicBlock::iterator InsertPt, -unsigned Size, unsigned Align) const; +unsigned Size, Align Alignment) const; /// isFrameOperand - Return true and the FrameIndex if the specified /// operand and follow operands form a reference to the stack frame. Index: llvm/lib/Target/X86/X86InstrInfo.cpp === --- llvm/lib/Target/X86/X86InstrInfo.cpp +++ llvm/lib/Target/X86/X86InstrInfo.cpp @@ -625,8 +625,7 @@ const TargetFrameLowering *TFI = MF->getSubtarget().getFrameLowering(); if (isFrameInstr(MI)) { -unsigned StackAlign = TFI->getStackAlignment(); -int SPAdj = alignTo(getFrameSize(MI), StackAlign); +int SPAdj = alignTo(getFrameSize(MI), TFI->getStackAlign()); SPAdj -= getFrameAdjustment(MI); if (!isFrameSetup(MI)) SPAdj = -SPAdj; @@ -3737,7 +3736,7 @@ "Stack slot too small for store"); unsigned Alignment = std::max(TRI->getSpillSize(*RC), 16); bool isAligned = - (Subtarget.getFrameLowering()->getStackAlignment() >= Alignment) || + (Subtarget.getFrameLowering()->getStackAlign() >= Alignment) || RI.canRealignStack(MF); unsigned Opc = getStoreRegOpcode(SrcReg, RC, isAligned, Subtarget); addFrameReference(BuildMI(MBB, MI, DebugLoc(), get(Opc)), FrameIdx) @@ -3752,7 +3751,7 @@ const MachineFunction &MF = *MBB.getParent(); unsigned Alignment = std::max(TRI->getSpillSize(*RC), 16); bool isAligned = - (Subtarget.getFrameLowering()->getStackAlignment() >= Alignment) || + (Subtarget.getFrameLowering()->getStackAlign() >= Alignment) || RI.canRealignStack(MF); unsigned Opc = getLoadRegOpcode(DestReg, RC, isAligned, Subtarget); addFrameReference(BuildMI(MBB, MI, DebugLoc(), get(Opc), DestReg), FrameIdx); @@ -5211,7 +5210,7 @@ MachineInstr *X86InstrInfo::foldMemoryOperandCustom( MachineFunction &MF, MachineInstr &MI, unsigned OpNum, ArrayRef MOs, MachineBasicBlock::iterator InsertPt, -unsigned Size, unsigned Align) const { +unsigned Size, Align Alignment) const { switch (MI.getOpcode()) { case X86::INSERTPSrr: case X86::VINSERTPSrr: @@ -5227,7 +5226,7 @@ const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo(); const TargetRegisterClass *RC = getRegClass(MI.getDesc(), OpNum, &RI, MF); unsigned RCSize = TRI.getRegSizeInBits(*RC) / 8; - if ((Size == 0 || Size >= 16) && RCSize >= 16 && 4 <= Align) { + if ((Size == 0 || Size >= 16) && RCSize >= 16 && Alignment >= Align(4)) { int PtrOffset = SrcIdx * 4; unsigned NewImm = (DstIdx << 4) | ZMask; unsigned NewOpCode = @@ -5251,7 +5250,7 @@ const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo(); const TargetRegisterClass *RC = getRegClass(MI.getDesc(), OpNum, &RI, MF); unsigned RCSize = TRI.getRegSizeInBits(*RC) / 8; - if ((Size == 0 || Size >= 16) && RCSize >= 16 && 8 <= Align) { + if ((Size == 0 || Size >= 16) && RCSize >= 16 && Alignment >= Align(8)) { unsigned NewOpCode = (MI.getOpcode() == X86::VMOVHLPSZrr) ? X86::VMOVLPSZ128r
[PATCH] D76551: [Alignment][NFC] Use TargetFrameLowering::getStackAlign()
gchatelet updated this revision to Diff 251969. gchatelet marked 3 inline comments as done. gchatelet added a comment. Herald added subscribers: libc-commits, openmp-commits, libcxx-commits, cfe-commits, Joonsoo, kerbowa, liufengdb, aartbik, lucyrfox, mgester, arpith-jacob, csigg, nicolasvasilache, antiagainst, shauheen, burmako, jpienaar, rriddle, mehdi_amini, dmgreen, rupprecht, arphaman, dexonsmith, steven_wu, mgorny, nhaehnle, jvesely, emaste, jholewinski. Herald added a reviewer: bollu. Herald added a reviewer: espindola. Herald added a reviewer: alexshap. Herald added a reviewer: jhenderson. Herald added a reviewer: nicolasvasilache. Herald added a reviewer: herhut. Herald added a reviewer: rriddle. Herald added a reviewer: aartbik. Herald added projects: clang, libc++, OpenMP, libc-project. Herald added a reviewer: libc++. - inline variable - Address comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D76551/new/ https://reviews.llvm.org/D76551 Files: clang-tools-extra/docs/clang-rename.rst clang/docs/LibASTImporter.rst clang/docs/ReleaseNotes.rst clang/docs/analyzer/checkers.rst clang/include/clang/AST/OpenMPClause.h clang/include/clang/Driver/ToolChain.h clang/lib/CodeGen/EHScopeStack.h clang/lib/Driver/ToolChain.cpp clang/lib/Driver/ToolChains/Cuda.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/HIP.cpp libc/CMakeLists.txt libc/config/linux/api.td libc/lib/CMakeLists.txt libc/spec/stdc.td libc/src/signal/linux/CMakeLists.txt libc/src/signal/linux/signal.cpp libc/src/signal/signal.h libc/test/src/signal/CMakeLists.txt libc/test/src/signal/signal_test.cpp libc/utils/UnitTest/Test.cpp libc/utils/UnitTest/Test.h libcxx/docs/TestingLibcxx.rst libcxx/docs/UsingLibcxx.rst libcxx/docs/index.rst libunwind/docs/BuildingLibunwind.rst libunwind/docs/index.rst lld/docs/AtomLLD.rst lld/docs/NewLLD.rst lld/docs/design.rst lld/docs/development.rst lld/docs/getting_started.rst lld/docs/index.rst llvm/docs/AMDGPUUsage.rst llvm/docs/AliasAnalysis.rst llvm/docs/CMake.rst llvm/docs/CommandGuide/llvm-lipo.rst llvm/docs/CommandGuide/llvm-objcopy.rst llvm/docs/CommandGuide/llvm-objdump.rst llvm/docs/CommandGuide/llvm-size.rst llvm/docs/CommandGuide/llvm-strings.rst llvm/docs/CommandGuide/llvm-strip.rst llvm/docs/CompileCudaWithLLVM.rst llvm/docs/Docker.rst llvm/docs/FAQ.rst llvm/docs/Frontend/PerformanceTips.rst llvm/docs/GettingStarted.rst llvm/docs/GettingStartedVS.rst llvm/docs/GlobalISel/GMIR.rst llvm/docs/GlobalISel/IRTranslator.rst llvm/docs/GlobalISel/KnownBits.rst llvm/docs/HistoricalNotes/2007-OriginalClangReadme.txt llvm/docs/HowToCrossCompileLLVM.rst llvm/docs/HowToSetUpLLVMStyleRTTI.rst llvm/docs/HowToSubmitABug.rst llvm/docs/LLVMBuild.txt llvm/docs/LangRef.rst llvm/docs/Lexicon.rst llvm/docs/LibFuzzer.rst llvm/docs/LoopTerminology.rst llvm/docs/MarkdownQuickstartTemplate.md llvm/docs/MergeFunctions.rst llvm/docs/Packaging.rst llvm/docs/ProgrammersManual.rst llvm/docs/Proposals/GitHubMove.rst llvm/docs/README.txt llvm/docs/Reference.rst llvm/docs/ReleaseProcess.rst llvm/docs/SphinxQuickstartTemplate.rst llvm/docs/TableGen/index.rst llvm/docs/TestSuiteGuide.md llvm/docs/TestingGuide.rst llvm/docs/TypeMetadata.rst llvm/docs/UserGuides.rst llvm/docs/Vectorizers.rst llvm/docs/WritingAnLLVMPass.rst llvm/docs/index.rst llvm/docs/tutorial/BuildingAJIT1.rst llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl02.rst llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl03.rst llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl04.rst llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl05.rst llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl08.rst llvm/docs/tutorial/MyFirstLanguageFrontend/LangImpl09.rst llvm/docs/tutorial/OCamlLangImpl3.rst llvm/docs/tutorial/OCamlLangImpl5.rst llvm/docs/tutorial/index.rst llvm/include/llvm/ADT/Triple.h llvm/include/llvm/ExecutionEngine/Orc/Core.h llvm/include/llvm/ExecutionEngine/Orc/DebugUtils.h llvm/include/llvm/ExecutionEngine/Orc/Speculation.h llvm/include/llvm/MC/MCObjectFileInfo.h llvm/include/llvm/Target/TargetLoweringObjectFile.h llvm/include/llvm/TextAPI/MachO/InterfaceFile.h llvm/include/llvm/Transforms/IPO/PassManagerBuilder.h llvm/include/llvm/Transforms/InstCombine/InstCombine.h llvm/include/llvm/Transforms/Utils/LowerMemIntrinsics.h llvm/lib/Analysis/LazyValueInfo.cpp llvm/lib/Analysis/TargetLibraryInfo.cpp llvm/lib/Analysis/ValueTracking.cpp llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp llvm/lib/CodeGen/MachineFunction.cpp llvm/lib/CodeGen/PrologEpilogInserter.cpp llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/lib/CodeGen/SelectionD