[PATCH] D76551: [Alignment][NFC] Use TargetFrameLowering::getStackAlign()

2020-03-23 Thread Guillaume Chatelet via Phabricator via cfe-commits
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()

2020-03-23 Thread Guillaume Chatelet via Phabricator via cfe-commits
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