[llvm] [SimplifyLibCalls] Constant fold nan libcall (PR #101459)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 1 01:11:28 PDT 2024
================
@@ -0,0 +1,70 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
+; RUN: opt < %s -passes=instcombine -S | FileCheck %s
+
+ at empty = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
+ at dec = private unnamed_addr constant [2 x i8] c"1\00", align 1
+ at hex = private unnamed_addr constant [4 x i8] c"0xf\00", align 1
+
+define double @nan_empty() {
+; CHECK-LABEL: define double @nan_empty() {
+; CHECK-NEXT: ret double 0x7FF8000000000000
+;
+ %res = call double @nan(ptr @empty)
+ ret double %res
+}
+
+define double @nan_dec() {
+; CHECK-LABEL: define double @nan_dec() {
+; CHECK-NEXT: ret double 0x7FF8000000000001
+;
+ %res = call double @nan(ptr @dec)
+ ret double %res
+}
+
+define double @nan_hex() {
+; CHECK-LABEL: define double @nan_hex() {
+; CHECK-NEXT: ret double 0x7FF800000000000F
+;
+ %res = call double @nan(ptr @hex)
+ ret double %res
+}
+
+define float @nanf_empty() {
+; CHECK-LABEL: define float @nanf_empty() {
+; CHECK-NEXT: ret float 0x7FF8000000000000
+;
+ %res = call float @nanf(ptr @empty)
+ ret float %res
+}
+
+; nagative tests
+
+define double @nan_poison() {
+; CHECK-LABEL: define double @nan_poison() {
+; CHECK-NEXT: [[RES:%.*]] = call double @nan(ptr poison)
+; CHECK-NEXT: ret double [[RES]]
+;
+ %res = call double @nan(ptr poison)
+ ret double %res
+}
+
+define double @nan_undef() {
+; CHECK-LABEL: define double @nan_undef() {
+; CHECK-NEXT: [[RES:%.*]] = call double @nan(ptr undef)
+; CHECK-NEXT: ret double [[RES]]
+;
+ %res = call double @nan(ptr undef)
+ ret double %res
+}
+
+define double @nan_null() {
+; CHECK-LABEL: define double @nan_null() {
+; CHECK-NEXT: [[RES:%.*]] = call double @nan(ptr null)
+; CHECK-NEXT: ret double [[RES]]
+;
+ %res = call double @nan(ptr null)
+ ret double %res
+}
+
----------------
arsenm wrote:
Should have a non-constant negative test too
https://github.com/llvm/llvm-project/pull/101459
More information about the llvm-commits
mailing list