[ARM] Use v2i1 for MVE and CDE intrinsics
authorDavid Green <david.green@arm.com>
Fri, 3 Dec 2021 15:27:58 +0000 (15:27 +0000)
committerDavid Green <david.green@arm.com>
Fri, 3 Dec 2021 15:27:58 +0000 (15:27 +0000)
commitab0c5cea0b1a9a1227fea840184dd7b5983c22a5
tree97ef839afe4da0cf4db818d00eb9a9761aaf3bb0
parentdbed678f4be29107d9848c3716f54bca3ec266bc
[ARM] Use v2i1 for MVE and CDE intrinsics

This adjusts all the MVE and CDE intrinsics now that v2i1 is a legal
type, to use a <2 x i1> as opposed to emulating the predicate with a
<4 x i1>. The v4i1 workarounds have been removed leaving the natural
v2i1 types, notably in vctp64 which now generates a v2i1 type.

AutoUpgrade code has been added to upgrade old IR, which needs to
convert the old v4i1 to a v2i1 be converting it back and forth to an
integer with arm.mve.v2i and arm.mve.i2v intrinsics. These should be
optimized away in the final assembly.

Differential Revision: https://reviews.llvm.org/D114455
30 files changed:
clang/test/CodeGen/arm-cde-vec.c
clang/test/CodeGen/arm-mve-intrinsics/predicates.c
clang/test/CodeGen/arm-mve-intrinsics/scatter-gather.c
clang/test/CodeGen/arm-mve-intrinsics/vld24.c
clang/test/CodeGen/arm-mve-intrinsics/vldr.c
clang/test/CodeGen/arm-mve-intrinsics/vmullbq.c
clang/test/CodeGen/arm-mve-intrinsics/vmulltq.c
clang/test/CodeGen/arm-mve-intrinsics/vqdmullbq.c
clang/test/CodeGen/arm-mve-intrinsics/vqdmulltq.c
clang/utils/TableGen/MveEmitter.cpp
llvm/include/llvm/IR/IntrinsicsARM.td
llvm/lib/Analysis/ConstantFolding.cpp
llvm/lib/IR/AutoUpgrade.cpp
llvm/lib/Target/ARM/ARMInstrMVE.td
llvm/lib/Target/ARM/MVETailPredication.cpp
llvm/test/CodeGen/Thumb2/active_lane_mask.ll
llvm/test/CodeGen/Thumb2/cde-vec.ll
llvm/test/CodeGen/Thumb2/mve-gatherscatter-mmo.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/predicates.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/scatter-gather.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/v2i1-upgrade.ll [new file with mode: 0644]
llvm/test/CodeGen/Thumb2/mve-intrinsics/vldr.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vmullbq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vmulltq.ll
llvm/test/CodeGen/Thumb2/mve-intrinsics/vqdmull.ll
llvm/test/CodeGen/Thumb2/mve-vctp.ll
llvm/test/Transforms/InstCombine/ARM/mve-v2i2v.ll
llvm/test/Transforms/InstSimplify/ConstProp/ARM/mve-vctp.ll
llvm/test/Transforms/LoopStrengthReduce/ARM/vctp-chains-inseltpoison.ll
llvm/test/Transforms/LoopStrengthReduce/ARM/vctp-chains.ll