1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4 2; RUN: opt < %s -passes=instsimplify -S | FileCheck %s 3 4; REQUIRES: has_logf128 5declare fp128 @llvm.log.f128(fp128) 6declare fp128 @logl(fp128) 7 8define fp128 @log_e_64(){ 9; CHECK-LABEL: define fp128 @log_e_64() { 10; CHECK-NEXT: ret fp128 0xL300000000000000040010A2B23F3BAB7 11; 12 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000004005000000000000) 13 ret fp128 %A 14} 15 16define fp128 @log_e_smallest_positive_subnormal_number(){ 17; CHECK-LABEL: define fp128 @log_e_smallest_positive_subnormal_number() { 18; CHECK-NEXT: ret fp128 0xL3000000000000000C00C654628220780 19; 20 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000010000000000000000) 21 ret fp128 %A 22} 23 24define fp128 @log_e_largest_subnormal_number(){ 25; CHECK-LABEL: define fp128 @log_e_largest_subnormal_number() { 26; CHECK-NEXT: ret fp128 0xLD000000000000000C00C62D918CE2421 27; 28 %A = call fp128 @llvm.log.f128(fp128 noundef 0xLFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF) 29 ret fp128 %A 30} 31 32define fp128 @log_e_smallest_positive_normal_number(){ 33; 34; CHECK-LABEL: define fp128 @log_e_smallest_positive_normal_number() { 35; CHECK-NEXT: ret fp128 0xLD000000000000000C00C62D918CE2421 36; 37 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000000001000000000000) 38 ret fp128 %A 39} 40 41define fp128 @log_e_largest_normal_number(){ 42; CHECK-LABEL: define fp128 @log_e_largest_normal_number() { 43; CHECK-NEXT: ret fp128 0xLF000000000000000400C62E42FEFA39E 44; 45 %A = call fp128 @llvm.log.f128(fp128 noundef 0xLFFFFFFFFFFFFFFFF7FFEFFFFFFFFFFFF) 46 ret fp128 %A 47} 48 49define fp128 @log_e_largest_number_less_than_one(){ 50; CHECK-LABEL: define fp128 @log_e_largest_number_less_than_one() { 51; CHECK-NEXT: ret fp128 0xL0000000000000000BF8E000000000000 52; 53 %A = call fp128 @llvm.log.f128(fp128 noundef 0xLFFFFFFFFFFFFFFFF3FFEFFFFFFFFFFFF) 54 ret fp128 %A 55} 56 57define fp128 @log_e_1(){ 58; CHECK-LABEL: define fp128 @log_e_1() { 59; CHECK-NEXT: ret fp128 0xL00000000000000000000000000000000 60; 61 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000003FFF000000000000) 62 ret fp128 %A 63} 64 65define fp128 @log_e_smallest_number_larger_than_one(){ 66; CHECK-LABEL: define fp128 @log_e_smallest_number_larger_than_one() { 67; CHECK-NEXT: ret fp128 0xL00000000000000003F8F000000000000 68; 69 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000013FFF000000000000) 70 ret fp128 %A 71} 72 73define fp128 @log_e_negative_2(){ 74; CHECK-LABEL: define fp128 @log_e_negative_2() { 75; CHECK-NEXT: ret fp128 0xL0000000000000000{{[7|F]}}FFF800000000000 76; 77 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL0000000000000000C000000000000000) 78 ret fp128 %A 79} 80 81define fp128 @log_e_0(){ 82; CHECK-LABEL: define fp128 @log_e_0() { 83; CHECK-NEXT: ret fp128 0xL0000000000000000FFFF000000000000 84; 85 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000000000000000000000) 86 ret fp128 %A 87} 88 89define fp128 @log_e_negative_0(){ 90; CHECK-LABEL: define fp128 @log_e_negative_0() { 91; CHECK-NEXT: ret fp128 0xL0000000000000000FFFF000000000000 92; 93 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000008000000000000000) 94 ret fp128 %A 95} 96 97define fp128 @log_e_infinity(){ 98; CHECK-LABEL: define fp128 @log_e_infinity() { 99; CHECK-NEXT: ret fp128 0xL00000000000000007FFF000000000000 100; 101 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000007FFF000000000000) 102 ret fp128 %A 103} 104 105define fp128 @log_e_negative_infinity(){ 106; CHECK-LABEL: define fp128 @log_e_negative_infinity() { 107; CHECK-NEXT: ret fp128 0xL0000000000000000{{[7|F]}}FFF800000000000 108; 109 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL0000000000000000FFFF000000000000) 110 ret fp128 %A 111} 112 113define fp128 @log_e_nan(){ 114; CHECK-LABEL: define fp128 @log_e_nan() { 115; CHECK-NEXT: ret fp128 0xL00000000000000007FFF800000000001 116; 117 %A = call fp128 @llvm.log.f128(fp128 noundef 0xL00000000000000007FFF000000000001) 118 ret fp128 %A 119} 120 121define <2 x fp128> @log_e_negative_2_vector(){ 122; CHECK-LABEL: define <2 x fp128> @log_e_negative_2_vector() { 123; CHECK-NEXT: ret <2 x fp128> <fp128 0xL0000000000000000{{[7|F]}}FFF800000000000, fp128 0xL0000000000000000{{[7|F]}}FFF800000000000> 124; 125 %A = call <2 x fp128> @llvm.log.v2f128(<2 x fp128> <fp128 0xL0000000000000000C000000000000000, fp128 0xL0000000000000000C000000000000001>) 126 ret <2 x fp128> %A 127} 128 129define fp128 @logl_e_64(){ 130; CHECK-LABEL: define fp128 @logl_e_64() { 131; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000004005000000000000) 132; CHECK-NEXT: ret fp128 0xL300000000000000040010A2B23F3BAB7 133; 134 %A = call fp128 @logl(fp128 noundef 0xL00000000000000004005000000000000) 135 ret fp128 %A 136} 137 138define fp128 @logl_e_0(){ 139; CHECK-LABEL: define fp128 @logl_e_0() { 140; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000000000000000000000) 141; CHECK-NEXT: ret fp128 [[A]] 142; 143 %A = call fp128 @logl(fp128 noundef 0xL00000000000000000000000000000000) 144 ret fp128 %A 145} 146 147define fp128 @logl_e_infinity(){ 148; CHECK-LABEL: define fp128 @logl_e_infinity() { 149; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000000) 150; CHECK-NEXT: ret fp128 0xL00000000000000007FFF000000000000 151; 152 %A = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000000) 153 ret fp128 %A 154} 155 156define fp128 @logl_e_nan(){ 157; CHECK-LABEL: define fp128 @logl_e_nan() { 158; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000001) 159; CHECK-NEXT: ret fp128 [[A]] 160; 161 %A = call fp128 @logl(fp128 noundef 0xL00000000000000007FFF000000000001) 162 ret fp128 %A 163} 164 165 166define fp128 @logl_e_negative_2(){ 167; CHECK-LABEL: define fp128 @logl_e_negative_2() { 168; CHECK-NEXT: [[A:%.*]] = call fp128 @logl(fp128 noundef 0xL0000000000000000C000000000000000) 169; CHECK-NEXT: ret fp128 [[A]] 170; 171 %A = call fp128 @logl(fp128 noundef 0xL0000000000000000C000000000000000) 172 ret fp128 %A 173} 174