[llvm] 3207ed1 - [GlobalISel] Add IRTranslator support for @llvm.lround.* -> G_LROUND
Jessica Paquette via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 19 17:15:55 PDT 2021
Author: Jessica Paquette
Date: 2021-08-19T17:08:08-07:00
New Revision: 3207ed196c75e464ad2fea2b1b7be515a619d57c
URL: https://github.com/llvm/llvm-project/commit/3207ed196c75e464ad2fea2b1b7be515a619d57c
DIFF: https://github.com/llvm/llvm-project/commit/3207ed196c75e464ad2fea2b1b7be515a619d57c.diff
LOG: [GlobalISel] Add IRTranslator support for @llvm.lround.* -> G_LROUND
Translate the `@llvm.lround.*` family to G_LROUND via
`IRTranslator::translateSimpleIntrinsic`.
Differential Revision: https://reviews.llvm.org/D108418
Added:
Modified:
llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
index 866326463a04..b60b1d311b12 100644
--- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
@@ -1763,6 +1763,8 @@ unsigned IRTranslator::getSimpleIntrinsicOpcode(Intrinsic::ID ID) {
return TargetOpcode::G_VECREDUCE_UMAX;
case Intrinsic::vector_reduce_umin:
return TargetOpcode::G_VECREDUCE_UMIN;
+ case Intrinsic::lround:
+ return TargetOpcode::G_LROUND;
}
return Intrinsic::not_intrinsic;
}
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll
index d8a94c4015f2..3bf7a5cdb048 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll
@@ -2457,3 +2457,16 @@ define {i8, i32} @test_freeze_struct({ i8, i32 }* %addr) {
}
!0 = !{ i64 0, i64 2 }
+
+declare i64 @llvm.lround.i64.f32(float) nounwind readnone
+define i64 @lround(float %x) {
+ ; CHECK-LABEL: name: lround
+ ; CHECK: bb.1 (%ir-block.0):
+ ; CHECK: liveins: $s0
+ ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
+ ; CHECK: [[LROUND:%[0-9]+]]:_(s64) = G_LROUND [[COPY]](s32)
+ ; CHECK: $x0 = COPY [[LROUND]](s64)
+ ; CHECK: RET_ReallyLR implicit $x0
+ %lround = tail call i64 @llvm.lround.i64.f32(float %x)
+ ret i64 %lround
+}
More information about the llvm-commits
mailing list