From 0e71e73faacf2a061f27654e59c22586adff51b8 Mon Sep 17 00:00:00 2001 From: Jessica Paquette Date: Tue, 12 Feb 2019 17:28:17 +0000 Subject: [GlobalISel][AArch64] Select llvm.bswap* for non-vector types This teaches the IRTranslator to emit G_BSWAP when it runs into Intrinsic::bswap. This allows us to select G_BSWAP for non-vector types in AArch64. Add a select-bswap.mir test, and add global isel checks to a couple existing tests in test/CodeGen/AArch64. This doesn't handle every bswap case, since some of these rely on known bits stuff. This just lets us handle the naive case. Differential Revision: https://reviews.llvm.org/D58081 llvm-svn: 353861 --- llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'llvm/lib/CodeGen') diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index 9b94a9923f0..dd4e0df3188 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -794,6 +794,8 @@ IRTranslator::getSimpleUnaryIntrinsicOpcode(Intrinsic::ID ID) { switch (ID) { default: break; + case Intrinsic::bswap: + return TargetOpcode::G_BSWAP; case Intrinsic::ceil: return TargetOpcode::G_FCEIL; case Intrinsic::cos: -- cgit v1.2.3