[all-commits] [llvm/llvm-project] 3d7662: [ARM] Undeprecate complex IT blocks

Mark Murray via All-commits all-commits at lists.llvm.org
Mon Feb 7 07:48:07 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3d7662142d50e4137332a0aa9d1e7d727aeb5941
      https://github.com/llvm/llvm-project/commit/3d7662142d50e4137332a0aa9d1e7d727aeb5941
  Author: Mark Murray <mark.murray at arm.com>
  Date:   2022-02-07 (Mon, 07 Feb 2022)

  Changed paths:
    M clang/docs/ClangCommandLineReference.rst
    M clang/include/clang/Driver/Options.td
    M clang/lib/Driver/ToolChains/Clang.cpp
    M clang/test/Driver/arm-restrict-it.c
    R clang/test/Driver/woa-restrict-it.c
    M llvm/docs/ReleaseNotes.rst
    M llvm/lib/Target/ARM/ARMInstrInfo.td
    M llvm/lib/Target/ARM/ARMInstrThumb2.td
    M llvm/lib/Target/ARM/ARMSubtarget.cpp
    M llvm/lib/Target/ARM/ARMSubtarget.h
    M llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
    M llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
    M llvm/lib/Target/ARM/Thumb2ITBlockPass.cpp
    M llvm/test/CodeGen/ARM/2013-05-05-IfConvertBug.ll
    M llvm/test/CodeGen/ARM/arm-and-tst-peephole.ll
    M llvm/test/CodeGen/ARM/arm-bf16-pcs.ll
    M llvm/test/CodeGen/ARM/atomic-ops-v8.ll
    M llvm/test/CodeGen/ARM/codesize-ifcvt.mir
    M llvm/test/CodeGen/ARM/fp16-no-condition.ll
    M llvm/test/CodeGen/ARM/hoist-and-by-const-from-lshr-in-eqcmp-zero.ll
    M llvm/test/CodeGen/ARM/hoist-and-by-const-from-shl-in-eqcmp-zero.ll
    M llvm/test/CodeGen/ARM/ifcvt-branch-weight.ll
    M llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
    M llvm/test/CodeGen/Thumb2/ifcvt-rescan-diamonds.ll
    M llvm/test/CodeGen/Thumb2/thumb2-ifcvt1.ll
    M llvm/test/CodeGen/Thumb2/thumb2-ifcvt2.ll
    M llvm/test/CodeGen/Thumb2/thumb2-ifcvt3.ll
    M llvm/test/CodeGen/Thumb2/v8_IT_3.ll
    M llvm/test/CodeGen/Thumb2/v8_IT_4.ll
    M llvm/test/CodeGen/Thumb2/v8_IT_5.ll
    R llvm/test/CodeGen/Thumb2/v8_deprecate_IT.ll
    M llvm/test/MC/ARM/deprecated-v8.s
    R llvm/test/MC/ARM/v8_IT_manual.s

  Log Message:
  -----------
  [ARM] Undeprecate complex IT blocks

AArch32/Armv8A  introduced the performance deprecation of certain patterns
of IT instructions.  After some debate internal to ARM, this is now being
reverted; i.e. no IT instruction patterns are performance deprecated
anymore, as the perfomance degredation is not significant enough.

This reverts the following:

"ARMv8-A deprecates some uses of the T32 IT instruction. All uses of
IT that apply to instructions other than a single subsequent 16-bit
instruction from a restricted set are deprecated, as are explicit
references to the PC within that single 16-bit instruction. This permits
the non-deprecated forms of IT and subsequent instructions to be treated
as a single 32-bit conditional instruction."

The deprecation no longer applies, but the behaviour may be controlled
by the -arm-restrict-it and -arm-no-restrict-it command-line options,
with the latter being the default. No warnings about complex IT blocks
will be generated.

Reviewed By: dmgreen

Differential Revision: https://reviews.llvm.org/D118044




More information about the All-commits mailing list