13613b268SMatthew Devereau; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 23613b268SMatthew Devereau; RUN: opt < %s -passes=instsimplify -S | FileCheck %s 33613b268SMatthew Devereau 43613b268SMatthew Devereau; REQUIRES: has_logf128 53613b268SMatthew Devereaudeclare fp128 @llvm.log.f128(fp128) 6d38c8a7aSMatthew Devereaudeclare fp128 @logl(fp128) 73613b268SMatthew Devereau 83613b268SMatthew Devereaudefine fp128 @log_e_64(){ 93613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_64() { 103613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xL300000000000000040010A2B23F3BAB7 113613b268SMatthew Devereau; 123613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000004005000000000000) 133613b268SMatthew Devereau ret fp128 %A 143613b268SMatthew Devereau} 153613b268SMatthew Devereau 163613b268SMatthew Devereaudefine fp128 @log_e_smallest_positive_subnormal_number(){ 173613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_smallest_positive_subnormal_number() { 183613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xL3000000000000000C00C654628220780 193613b268SMatthew Devereau; 203613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000010000000000000000) 213613b268SMatthew Devereau ret fp128 %A 223613b268SMatthew Devereau} 233613b268SMatthew Devereau 243613b268SMatthew Devereaudefine fp128 @log_e_largest_subnormal_number(){ 253613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_largest_subnormal_number() { 263613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xLD000000000000000C00C62D918CE2421 273613b268SMatthew Devereau; 283613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xLFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF) 293613b268SMatthew Devereau ret fp128 %A 303613b268SMatthew Devereau} 313613b268SMatthew Devereau 323613b268SMatthew Devereaudefine fp128 @log_e_smallest_positive_normal_number(){ 333613b268SMatthew Devereau; 343613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_smallest_positive_normal_number() { 353613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xLD000000000000000C00C62D918CE2421 363613b268SMatthew Devereau; 373613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000000001000000000000) 383613b268SMatthew Devereau ret fp128 %A 393613b268SMatthew Devereau} 403613b268SMatthew Devereau 413613b268SMatthew Devereaudefine fp128 @log_e_largest_normal_number(){ 423613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_largest_normal_number() { 433613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xLF000000000000000400C62E42FEFA39E 443613b268SMatthew Devereau; 453613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xLFFFFFFFFFFFFFFFF7FFEFFFFFFFFFFFF) 463613b268SMatthew Devereau ret fp128 %A 473613b268SMatthew Devereau} 483613b268SMatthew Devereau 493613b268SMatthew Devereaudefine fp128 @log_e_largest_number_less_than_one(){ 503613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_largest_number_less_than_one() { 513613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xL0000000000000000BF8E000000000000 523613b268SMatthew Devereau; 533613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xLFFFFFFFFFFFFFFFF3FFEFFFFFFFFFFFF) 543613b268SMatthew Devereau ret fp128 %A 553613b268SMatthew Devereau} 563613b268SMatthew Devereau 573613b268SMatthew Devereaudefine fp128 @log_e_1(){ 583613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_1() { 593613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xL00000000000000000000000000000000 603613b268SMatthew Devereau; 613613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000003FFF000000000000) 623613b268SMatthew Devereau ret fp128 %A 633613b268SMatthew Devereau} 643613b268SMatthew Devereau 653613b268SMatthew Devereaudefine fp128 @log_e_smallest_number_larger_than_one(){ 663613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_smallest_number_larger_than_one() { 673613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xL00000000000000003F8F000000000000 683613b268SMatthew Devereau; 693613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000013FFF000000000000) 703613b268SMatthew Devereau ret fp128 %A 713613b268SMatthew Devereau} 723613b268SMatthew Devereau 733613b268SMatthew Devereaudefine fp128 @log_e_negative_2(){ 743613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_negative_2() { 75*ccb2b796SMatt Devereau; CHECK-NEXT: ret fp128 0xL0000000000000000{{[7|F]}}FFF800000000000 763613b268SMatthew Devereau; 773613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL0000000000000000C000000000000000) 783613b268SMatthew Devereau ret fp128 %A 793613b268SMatthew Devereau} 803613b268SMatthew Devereau 813613b268SMatthew Devereaudefine fp128 @log_e_0(){ 823613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_0() { 833613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xL0000000000000000FFFF000000000000 843613b268SMatthew Devereau; 853613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000000000000000000000) 863613b268SMatthew Devereau ret fp128 %A 873613b268SMatthew Devereau} 883613b268SMatthew Devereau 893613b268SMatthew Devereaudefine fp128 @log_e_negative_0(){ 903613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_negative_0() { 913613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xL0000000000000000FFFF000000000000 923613b268SMatthew Devereau; 933613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000008000000000000000) 943613b268SMatthew Devereau ret fp128 %A 953613b268SMatthew Devereau} 963613b268SMatthew Devereau 973613b268SMatthew Devereaudefine fp128 @log_e_infinity(){ 983613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_infinity() { 993613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xL00000000000000007FFF000000000000 1003613b268SMatthew Devereau; 1013613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000007FFF000000000000) 1023613b268SMatthew Devereau ret fp128 %A 1033613b268SMatthew Devereau} 1043613b268SMatthew Devereau 1053613b268SMatthew Devereaudefine fp128 @log_e_negative_infinity(){ 1063613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_negative_infinity() { 107*ccb2b796SMatt Devereau; CHECK-NEXT: ret fp128 0xL0000000000000000{{[7|F]}}FFF800000000000 1083613b268SMatthew Devereau; 1093613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL0000000000000000FFFF000000000000) 1103613b268SMatthew Devereau ret fp128 %A 1113613b268SMatthew Devereau} 1123613b268SMatthew Devereau 1133613b268SMatthew Devereaudefine fp128 @log_e_nan(){ 1143613b268SMatthew Devereau; CHECK-LABEL: define fp128 @log_e_nan() { 1153613b268SMatthew Devereau; CHECK-NEXT: ret fp128 0xL00000000000000007FFF800000000001 1163613b268SMatthew Devereau; 1173613b268SMatthew Devereau %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000007FFF000000000001) 1183613b268SMatthew Devereau ret fp128 %A 1193613b268SMatthew Devereau} 1203613b268SMatthew Devereau 1213613b268SMatthew Devereaudefine <2 x fp128> @log_e_negative_2_vector(){ 1223613b268SMatthew Devereau; CHECK-LABEL: define <2 x fp128> @log_e_negative_2_vector() { 123*ccb2b796SMatt Devereau; CHECK-NEXT: ret <2 x fp128> <fp128 0xL0000000000000000{{[7|F]}}FFF800000000000, fp128 0xL0000000000000000{{[7|F]}}FFF800000000000> 1243613b268SMatthew Devereau; 1253613b268SMatthew Devereau %A = call <2 x fp128> @llvm.log.v2f128(<2 x fp128> <fp128 0xL0000000000000000C000000000000000, fp128 0xL0000000000000000C000000000000001>) 1263613b268SMatthew Devereau ret <2 x fp128> %A 1273613b268SMatthew Devereau} 128d38c8a7aSMatthew Devereau 129d38c8a7aSMatthew Devereaudefine fp128 @logl_e_64(){ 130d38c8a7aSMatthew Devereau; CHECK-LABEL: define fp128 @logl_e_64() { 131d38c8a7aSMatthew Devereau; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000004005000000000000) 132d38c8a7aSMatthew Devereau; CHECK-NEXT: ret fp128 0xL300000000000000040010A2B23F3BAB7 133d38c8a7aSMatthew Devereau; 134d38c8a7aSMatthew Devereau %A = call fp128 @logl(fp128 noundef 0xL00000000000000004005000000000000) 135d38c8a7aSMatthew Devereau ret fp128 %A 136d38c8a7aSMatthew Devereau} 137d38c8a7aSMatthew Devereau 138d38c8a7aSMatthew Devereaudefine fp128 @logl_e_0(){ 139d38c8a7aSMatthew Devereau; CHECK-LABEL: define fp128 @logl_e_0() { 140d38c8a7aSMatthew Devereau; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000000000000000000000) 141d38c8a7aSMatthew Devereau; CHECK-NEXT: ret fp128 [[A]] 142d38c8a7aSMatthew Devereau; 143d38c8a7aSMatthew Devereau %A = call fp128 @logl(fp128 noundef 0xL00000000000000000000000000000000) 144d38c8a7aSMatthew Devereau ret fp128 %A 145d38c8a7aSMatthew Devereau} 146d38c8a7aSMatthew Devereau 147d38c8a7aSMatthew Devereaudefine fp128 @logl_e_infinity(){ 148d38c8a7aSMatthew Devereau; CHECK-LABEL: define fp128 @logl_e_infinity() { 149d38c8a7aSMatthew Devereau; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000000) 150d38c8a7aSMatthew Devereau; CHECK-NEXT: ret fp128 0xL00000000000000007FFF000000000000 151d38c8a7aSMatthew Devereau; 152d38c8a7aSMatthew Devereau %A = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000000) 153d38c8a7aSMatthew Devereau ret fp128 %A 154d38c8a7aSMatthew Devereau} 155d38c8a7aSMatthew Devereau 156d38c8a7aSMatthew Devereaudefine fp128 @logl_e_nan(){ 157d38c8a7aSMatthew Devereau; CHECK-LABEL: define fp128 @logl_e_nan() { 158d38c8a7aSMatthew Devereau; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000001) 159d38c8a7aSMatthew Devereau; CHECK-NEXT: ret fp128 [[A]] 160d38c8a7aSMatthew Devereau; 161d38c8a7aSMatthew Devereau %A = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000001) 162d38c8a7aSMatthew Devereau ret fp128 %A 163d38c8a7aSMatthew Devereau} 164d38c8a7aSMatthew Devereau 165d38c8a7aSMatthew Devereau 166d38c8a7aSMatthew Devereaudefine fp128 @logl_e_negative_2(){ 167d38c8a7aSMatthew Devereau; CHECK-LABEL: define fp128 @logl_e_negative_2() { 168d38c8a7aSMatthew Devereau; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL0000000000000000C000000000000000) 169d38c8a7aSMatthew Devereau; CHECK-NEXT: ret fp128 [[A]] 170d38c8a7aSMatthew Devereau; 171d38c8a7aSMatthew Devereau %A = call fp128 @logl(fp128 noundef 0xL0000000000000000C000000000000000) 172d38c8a7aSMatthew Devereau ret fp128 %A 173d38c8a7aSMatthew Devereau} 174