1a8376bbeSMatt Arsenault; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2 2a8376bbeSMatt Arsenault; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=amdgpu-simplifylib %s | FileCheck %s 3a8376bbeSMatt Arsenault 4*32f9983cSJessica Deltarget datalayout = "e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32-p7:160:256:256:32-p8:128:128-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1-ni:7:8:9" 5a8376bbeSMatt Arsenault 6a8376bbeSMatt Arsenaultdeclare float @_Z3logf(float) 7a8376bbeSMatt Arsenaultdeclare <2 x float> @_Z3logDv2_f(<2 x float>) 8a8376bbeSMatt Arsenaultdeclare <3 x float> @_Z3logDv3_f(<3 x float>) 9a8376bbeSMatt Arsenaultdeclare <4 x float> @_Z3logDv4_f(<4 x float>) 10a8376bbeSMatt Arsenaultdeclare <8 x float> @_Z3logDv8_f(<8 x float>) 11a8376bbeSMatt Arsenaultdeclare <16 x float> @_Z3logDv16_f(<16 x float>) 12a8376bbeSMatt Arsenault 13a8376bbeSMatt Arsenaultdeclare double @_Z3logd(double) 14a8376bbeSMatt Arsenaultdeclare <2 x double> @_Z3logDv2_d(<2 x double>) 15a8376bbeSMatt Arsenaultdeclare <3 x double> @_Z3logDv3_d(<3 x double>) 16a8376bbeSMatt Arsenaultdeclare <4 x double> @_Z3logDv4_d(<4 x double>) 17a8376bbeSMatt Arsenaultdeclare <8 x double> @_Z3logDv8_d(<8 x double>) 18a8376bbeSMatt Arsenaultdeclare <16 x double> @_Z3logDv16_d(<16 x double>) 19a8376bbeSMatt Arsenault 20a8376bbeSMatt Arsenaultdeclare half @_Z3logDh(half) 21a8376bbeSMatt Arsenaultdeclare <2 x half> @_Z3logDv2_Dh(<2 x half>) 22a8376bbeSMatt Arsenaultdeclare <3 x half> @_Z3logDv3_Dh(<3 x half>) 23a8376bbeSMatt Arsenaultdeclare <4 x half> @_Z3logDv4_Dh(<4 x half>) 24a8376bbeSMatt Arsenaultdeclare <8 x half> @_Z3logDv8_Dh(<8 x half>) 25a8376bbeSMatt Arsenaultdeclare <16 x half> @_Z3logDv16_Dh(<16 x half>) 26a8376bbeSMatt Arsenault 27a8376bbeSMatt Arsenaultdefine float @test_log_f32(float %arg) { 28a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32 29a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 30a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call float @_Z3logf(float [[ARG]]), !fpmath !0 31a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 32a8376bbeSMatt Arsenault; 33a8376bbeSMatt Arsenault %log = tail call float @_Z3logf(float %arg), !fpmath !0 34a8376bbeSMatt Arsenault ret float %log 35a8376bbeSMatt Arsenault} 36a8376bbeSMatt Arsenault 37a8376bbeSMatt Arsenaultdefine <2 x float> @test_log_v2f32(<2 x float> %arg) { 38a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x float> @test_log_v2f32 39a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x float> [[ARG:%.*]]) { 40a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <2 x float> @_Z3logDv2_f(<2 x float> [[ARG]]), !fpmath !0 41a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x float> [[LOG]] 42a8376bbeSMatt Arsenault; 43a8376bbeSMatt Arsenault %log = tail call <2 x float> @_Z3logDv2_f(<2 x float> %arg), !fpmath !0 44a8376bbeSMatt Arsenault ret <2 x float> %log 45a8376bbeSMatt Arsenault} 46a8376bbeSMatt Arsenault 47a8376bbeSMatt Arsenaultdefine <3 x float> @test_log_v3f32(<3 x float> %arg) { 48a8376bbeSMatt Arsenault; CHECK-LABEL: define <3 x float> @test_log_v3f32 49a8376bbeSMatt Arsenault; CHECK-SAME: (<3 x float> [[ARG:%.*]]) { 50a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <3 x float> @_Z3logDv3_f(<3 x float> [[ARG]]), !fpmath !0 51a8376bbeSMatt Arsenault; CHECK-NEXT: ret <3 x float> [[LOG]] 52a8376bbeSMatt Arsenault; 53a8376bbeSMatt Arsenault %log = tail call <3 x float> @_Z3logDv3_f(<3 x float> %arg), !fpmath !0 54a8376bbeSMatt Arsenault ret <3 x float> %log 55a8376bbeSMatt Arsenault} 56a8376bbeSMatt Arsenault 57a8376bbeSMatt Arsenaultdefine <4 x float> @test_log_v4f32(<4 x float> %arg) { 58a8376bbeSMatt Arsenault; CHECK-LABEL: define <4 x float> @test_log_v4f32 59a8376bbeSMatt Arsenault; CHECK-SAME: (<4 x float> [[ARG:%.*]]) { 60a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <4 x float> @_Z3logDv4_f(<4 x float> [[ARG]]), !fpmath !0 61a8376bbeSMatt Arsenault; CHECK-NEXT: ret <4 x float> [[LOG]] 62a8376bbeSMatt Arsenault; 63a8376bbeSMatt Arsenault %log = tail call <4 x float> @_Z3logDv4_f(<4 x float> %arg), !fpmath !0 64a8376bbeSMatt Arsenault ret <4 x float> %log 65a8376bbeSMatt Arsenault} 66a8376bbeSMatt Arsenault 67a8376bbeSMatt Arsenaultdefine <8 x float> @test_log_v8f32(<8 x float> %arg) { 68a8376bbeSMatt Arsenault; CHECK-LABEL: define <8 x float> @test_log_v8f32 69a8376bbeSMatt Arsenault; CHECK-SAME: (<8 x float> [[ARG:%.*]]) { 70a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <8 x float> @_Z3logDv8_f(<8 x float> [[ARG]]), !fpmath !0 71a8376bbeSMatt Arsenault; CHECK-NEXT: ret <8 x float> [[LOG]] 72a8376bbeSMatt Arsenault; 73a8376bbeSMatt Arsenault %log = tail call <8 x float> @_Z3logDv8_f(<8 x float> %arg), !fpmath !0 74a8376bbeSMatt Arsenault ret <8 x float> %log 75a8376bbeSMatt Arsenault} 76a8376bbeSMatt Arsenault 77a8376bbeSMatt Arsenaultdefine <16 x float> @test_log_v16f32(<16 x float> %arg) { 78a8376bbeSMatt Arsenault; CHECK-LABEL: define <16 x float> @test_log_v16f32 79a8376bbeSMatt Arsenault; CHECK-SAME: (<16 x float> [[ARG:%.*]]) { 80a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <16 x float> @_Z3logDv16_f(<16 x float> [[ARG]]), !fpmath !0 81a8376bbeSMatt Arsenault; CHECK-NEXT: ret <16 x float> [[LOG]] 82a8376bbeSMatt Arsenault; 83a8376bbeSMatt Arsenault %log = tail call <16 x float> @_Z3logDv16_f(<16 x float> %arg), !fpmath !0 84a8376bbeSMatt Arsenault ret <16 x float> %log 85a8376bbeSMatt Arsenault} 86a8376bbeSMatt Arsenault 87a8376bbeSMatt Arsenaultdefine float @test_log_cr_f32(float %arg) { 88a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_cr_f32 89a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 90a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call float @_Z3logf(float [[ARG]]) 91a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 92a8376bbeSMatt Arsenault; 93a8376bbeSMatt Arsenault %log = tail call float @_Z3logf(float %arg) 94a8376bbeSMatt Arsenault ret float %log 95a8376bbeSMatt Arsenault} 96a8376bbeSMatt Arsenault 97a8376bbeSMatt Arsenaultdefine <2 x float> @test_log_cr_v2f32(<2 x float> %arg) { 98a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x float> @test_log_cr_v2f32 99a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x float> [[ARG:%.*]]) { 100a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <2 x float> @_Z3logDv2_f(<2 x float> [[ARG]]) 101a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x float> [[LOG]] 102a8376bbeSMatt Arsenault; 103a8376bbeSMatt Arsenault %log = tail call <2 x float> @_Z3logDv2_f(<2 x float> %arg) 104a8376bbeSMatt Arsenault ret <2 x float> %log 105a8376bbeSMatt Arsenault} 106a8376bbeSMatt Arsenault 107a8376bbeSMatt Arsenaultdefine <3 x float> @test_log_cr_v3f32(<3 x float> %arg) { 108a8376bbeSMatt Arsenault; CHECK-LABEL: define <3 x float> @test_log_cr_v3f32 109a8376bbeSMatt Arsenault; CHECK-SAME: (<3 x float> [[ARG:%.*]]) { 110a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <3 x float> @_Z3logDv3_f(<3 x float> [[ARG]]) 111a8376bbeSMatt Arsenault; CHECK-NEXT: ret <3 x float> [[LOG]] 112a8376bbeSMatt Arsenault; 113a8376bbeSMatt Arsenault %log = tail call <3 x float> @_Z3logDv3_f(<3 x float> %arg) 114a8376bbeSMatt Arsenault ret <3 x float> %log 115a8376bbeSMatt Arsenault} 116a8376bbeSMatt Arsenault 117a8376bbeSMatt Arsenaultdefine <4 x float> @test_log_cr_v4f32(<4 x float> %arg) { 118a8376bbeSMatt Arsenault; CHECK-LABEL: define <4 x float> @test_log_cr_v4f32 119a8376bbeSMatt Arsenault; CHECK-SAME: (<4 x float> [[ARG:%.*]]) { 120a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <4 x float> @_Z3logDv4_f(<4 x float> [[ARG]]) 121a8376bbeSMatt Arsenault; CHECK-NEXT: ret <4 x float> [[LOG]] 122a8376bbeSMatt Arsenault; 123a8376bbeSMatt Arsenault %log = tail call <4 x float> @_Z3logDv4_f(<4 x float> %arg) 124a8376bbeSMatt Arsenault ret <4 x float> %log 125a8376bbeSMatt Arsenault} 126a8376bbeSMatt Arsenault 127a8376bbeSMatt Arsenaultdefine <8 x float> @test_log_cr_v8f32(<8 x float> %arg) { 128a8376bbeSMatt Arsenault; CHECK-LABEL: define <8 x float> @test_log_cr_v8f32 129a8376bbeSMatt Arsenault; CHECK-SAME: (<8 x float> [[ARG:%.*]]) { 130a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <8 x float> @_Z3logDv8_f(<8 x float> [[ARG]]) 131a8376bbeSMatt Arsenault; CHECK-NEXT: ret <8 x float> [[LOG]] 132a8376bbeSMatt Arsenault; 133a8376bbeSMatt Arsenault %log = tail call <8 x float> @_Z3logDv8_f(<8 x float> %arg) 134a8376bbeSMatt Arsenault ret <8 x float> %log 135a8376bbeSMatt Arsenault} 136a8376bbeSMatt Arsenault 137a8376bbeSMatt Arsenaultdefine <16 x float> @test_log_cr_v16f32(<16 x float> %arg) { 138a8376bbeSMatt Arsenault; CHECK-LABEL: define <16 x float> @test_log_cr_v16f32 139a8376bbeSMatt Arsenault; CHECK-SAME: (<16 x float> [[ARG:%.*]]) { 140a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <16 x float> @_Z3logDv16_f(<16 x float> [[ARG]]) 141a8376bbeSMatt Arsenault; CHECK-NEXT: ret <16 x float> [[LOG]] 142a8376bbeSMatt Arsenault; 143a8376bbeSMatt Arsenault %log = tail call <16 x float> @_Z3logDv16_f(<16 x float> %arg) 144a8376bbeSMatt Arsenault ret <16 x float> %log 145a8376bbeSMatt Arsenault} 146a8376bbeSMatt Arsenault 147a8376bbeSMatt Arsenaultdefine double @test_log_f64(double %arg) { 148a8376bbeSMatt Arsenault; CHECK-LABEL: define double @test_log_f64 149a8376bbeSMatt Arsenault; CHECK-SAME: (double [[ARG:%.*]]) { 150a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call double @_Z3logd(double [[ARG]]) 151a8376bbeSMatt Arsenault; CHECK-NEXT: ret double [[LOG]] 152a8376bbeSMatt Arsenault; 153a8376bbeSMatt Arsenault %log = tail call double @_Z3logd(double %arg) 154a8376bbeSMatt Arsenault ret double %log 155a8376bbeSMatt Arsenault} 156a8376bbeSMatt Arsenault 157a8376bbeSMatt Arsenaultdefine <2 x double> @test_log_v2f64(<2 x double> %arg) { 158a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x double> @test_log_v2f64 159a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x double> [[ARG:%.*]]) { 160a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <2 x double> @_Z3logDv2_d(<2 x double> [[ARG]]) 161a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x double> [[LOG]] 162a8376bbeSMatt Arsenault; 163a8376bbeSMatt Arsenault %log = tail call <2 x double> @_Z3logDv2_d(<2 x double> %arg) 164a8376bbeSMatt Arsenault ret <2 x double> %log 165a8376bbeSMatt Arsenault} 166a8376bbeSMatt Arsenault 167a8376bbeSMatt Arsenaultdefine <3 x double> @test_log_v3f64(<3 x double> %arg) { 168a8376bbeSMatt Arsenault; CHECK-LABEL: define <3 x double> @test_log_v3f64 169a8376bbeSMatt Arsenault; CHECK-SAME: (<3 x double> [[ARG:%.*]]) { 170a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <3 x double> @_Z3logDv3_d(<3 x double> [[ARG]]) 171a8376bbeSMatt Arsenault; CHECK-NEXT: ret <3 x double> [[LOG]] 172a8376bbeSMatt Arsenault; 173a8376bbeSMatt Arsenault %log = tail call <3 x double> @_Z3logDv3_d(<3 x double> %arg) 174a8376bbeSMatt Arsenault ret <3 x double> %log 175a8376bbeSMatt Arsenault} 176a8376bbeSMatt Arsenault 177a8376bbeSMatt Arsenaultdefine <4 x double> @test_log_v4f64(<4 x double> %arg) { 178a8376bbeSMatt Arsenault; CHECK-LABEL: define <4 x double> @test_log_v4f64 179a8376bbeSMatt Arsenault; CHECK-SAME: (<4 x double> [[ARG:%.*]]) { 180a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <4 x double> @_Z3logDv4_d(<4 x double> [[ARG]]) 181a8376bbeSMatt Arsenault; CHECK-NEXT: ret <4 x double> [[LOG]] 182a8376bbeSMatt Arsenault; 183a8376bbeSMatt Arsenault %log = tail call <4 x double> @_Z3logDv4_d(<4 x double> %arg) 184a8376bbeSMatt Arsenault ret <4 x double> %log 185a8376bbeSMatt Arsenault} 186a8376bbeSMatt Arsenault 187a8376bbeSMatt Arsenaultdefine <8 x double> @test_log_v8f64(<8 x double> %arg) { 188a8376bbeSMatt Arsenault; CHECK-LABEL: define <8 x double> @test_log_v8f64 189a8376bbeSMatt Arsenault; CHECK-SAME: (<8 x double> [[ARG:%.*]]) { 190a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <8 x double> @_Z3logDv8_d(<8 x double> [[ARG]]) 191a8376bbeSMatt Arsenault; CHECK-NEXT: ret <8 x double> [[LOG]] 192a8376bbeSMatt Arsenault; 193a8376bbeSMatt Arsenault %log = tail call <8 x double> @_Z3logDv8_d(<8 x double> %arg) 194a8376bbeSMatt Arsenault ret <8 x double> %log 195a8376bbeSMatt Arsenault} 196a8376bbeSMatt Arsenault 197a8376bbeSMatt Arsenaultdefine <16 x double> @test_log_v16f64(<16 x double> %arg) { 198a8376bbeSMatt Arsenault; CHECK-LABEL: define <16 x double> @test_log_v16f64 199a8376bbeSMatt Arsenault; CHECK-SAME: (<16 x double> [[ARG:%.*]]) { 200a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <16 x double> @_Z3logDv16_d(<16 x double> [[ARG]]) 201a8376bbeSMatt Arsenault; CHECK-NEXT: ret <16 x double> [[LOG]] 202a8376bbeSMatt Arsenault; 203a8376bbeSMatt Arsenault %log = tail call <16 x double> @_Z3logDv16_d(<16 x double> %arg) 204a8376bbeSMatt Arsenault ret <16 x double> %log 205a8376bbeSMatt Arsenault} 206a8376bbeSMatt Arsenault 207a8376bbeSMatt Arsenaultdefine half @test_log_f16(half %arg) { 208a8376bbeSMatt Arsenault; CHECK-LABEL: define half @test_log_f16 209a8376bbeSMatt Arsenault; CHECK-SAME: (half [[ARG:%.*]]) { 210a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call half @_Z3logDh(half [[ARG]]) 211a8376bbeSMatt Arsenault; CHECK-NEXT: ret half [[LOG]] 212a8376bbeSMatt Arsenault; 213a8376bbeSMatt Arsenault %log = tail call half @_Z3logDh(half %arg) 214a8376bbeSMatt Arsenault ret half %log 215a8376bbeSMatt Arsenault} 216a8376bbeSMatt Arsenault 217a8376bbeSMatt Arsenaultdefine half @test_log_f16_fast(half %arg) { 218a8376bbeSMatt Arsenault; CHECK-LABEL: define half @test_log_f16_fast 219a8376bbeSMatt Arsenault; CHECK-SAME: (half [[ARG:%.*]]) { 220d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call fast half @llvm.log.f16(half [[ARG]]) 221a8376bbeSMatt Arsenault; CHECK-NEXT: ret half [[LOG]] 222a8376bbeSMatt Arsenault; 223a8376bbeSMatt Arsenault %log = tail call fast half @_Z3logDh(half %arg) 224a8376bbeSMatt Arsenault ret half %log 225a8376bbeSMatt Arsenault} 226a8376bbeSMatt Arsenault 227a8376bbeSMatt Arsenaultdefine <2 x half> @test_log_v2f16(<2 x half> %arg) { 228a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x half> @test_log_v2f16 229a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x half> [[ARG:%.*]]) { 230a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <2 x half> @_Z3logDv2_Dh(<2 x half> [[ARG]]) 231a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x half> [[LOG]] 232a8376bbeSMatt Arsenault; 233a8376bbeSMatt Arsenault %log = tail call <2 x half> @_Z3logDv2_Dh(<2 x half> %arg) 234a8376bbeSMatt Arsenault ret <2 x half> %log 235a8376bbeSMatt Arsenault} 236a8376bbeSMatt Arsenault 237a8376bbeSMatt Arsenaultdefine <3 x half> @test_log_v3f16(<3 x half> %arg) { 238a8376bbeSMatt Arsenault; CHECK-LABEL: define <3 x half> @test_log_v3f16 239a8376bbeSMatt Arsenault; CHECK-SAME: (<3 x half> [[ARG:%.*]]) { 240a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <3 x half> @_Z3logDv3_Dh(<3 x half> [[ARG]]) 241a8376bbeSMatt Arsenault; CHECK-NEXT: ret <3 x half> [[LOG]] 242a8376bbeSMatt Arsenault; 243a8376bbeSMatt Arsenault %log = tail call <3 x half> @_Z3logDv3_Dh(<3 x half> %arg) 244a8376bbeSMatt Arsenault ret <3 x half> %log 245a8376bbeSMatt Arsenault} 246a8376bbeSMatt Arsenault 247a8376bbeSMatt Arsenaultdefine <4 x half> @test_log_v4f16(<4 x half> %arg) { 248a8376bbeSMatt Arsenault; CHECK-LABEL: define <4 x half> @test_log_v4f16 249a8376bbeSMatt Arsenault; CHECK-SAME: (<4 x half> [[ARG:%.*]]) { 250a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <4 x half> @_Z3logDv4_Dh(<4 x half> [[ARG]]) 251a8376bbeSMatt Arsenault; CHECK-NEXT: ret <4 x half> [[LOG]] 252a8376bbeSMatt Arsenault; 253a8376bbeSMatt Arsenault %log = tail call <4 x half> @_Z3logDv4_Dh(<4 x half> %arg) 254a8376bbeSMatt Arsenault ret <4 x half> %log 255a8376bbeSMatt Arsenault} 256a8376bbeSMatt Arsenault 257a8376bbeSMatt Arsenaultdefine <8 x half> @test_log_v8f16(<8 x half> %arg) { 258a8376bbeSMatt Arsenault; CHECK-LABEL: define <8 x half> @test_log_v8f16 259a8376bbeSMatt Arsenault; CHECK-SAME: (<8 x half> [[ARG:%.*]]) { 260a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <8 x half> @_Z3logDv8_Dh(<8 x half> [[ARG]]) 261a8376bbeSMatt Arsenault; CHECK-NEXT: ret <8 x half> [[LOG]] 262a8376bbeSMatt Arsenault; 263a8376bbeSMatt Arsenault %log = tail call <8 x half> @_Z3logDv8_Dh(<8 x half> %arg) 264a8376bbeSMatt Arsenault ret <8 x half> %log 265a8376bbeSMatt Arsenault} 266a8376bbeSMatt Arsenault 267a8376bbeSMatt Arsenaultdefine <16 x half> @test_log_v16f16(<16 x half> %arg) { 268a8376bbeSMatt Arsenault; CHECK-LABEL: define <16 x half> @test_log_v16f16 269a8376bbeSMatt Arsenault; CHECK-SAME: (<16 x half> [[ARG:%.*]]) { 270a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <16 x half> @_Z3logDv16_Dh(<16 x half> [[ARG]]) 271a8376bbeSMatt Arsenault; CHECK-NEXT: ret <16 x half> [[LOG]] 272a8376bbeSMatt Arsenault; 273a8376bbeSMatt Arsenault %log = tail call <16 x half> @_Z3logDv16_Dh(<16 x half> %arg) 274a8376bbeSMatt Arsenault ret <16 x half> %log 275a8376bbeSMatt Arsenault} 276a8376bbeSMatt Arsenault 277a8376bbeSMatt Arsenaultdefine float @test_log_f32_nobuiltin_callsite(float %arg) { 278a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_nobuiltin_callsite 279a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 280d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call float @_Z3logf(float [[ARG]]) #[[ATTR6:[0-9]+]], !fpmath !0 281a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 282a8376bbeSMatt Arsenault; 283a8376bbeSMatt Arsenault %log = tail call float @_Z3logf(float %arg) #0, !fpmath !0 284a8376bbeSMatt Arsenault ret float %log 285a8376bbeSMatt Arsenault} 286a8376bbeSMatt Arsenault 287a8376bbeSMatt Arsenaultdefine <2 x float> @test_log_v2f32_nobuiltin_callsite(<2 x float> %arg) { 288a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x float> @test_log_v2f32_nobuiltin_callsite 289a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x float> [[ARG:%.*]]) { 290d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <2 x float> @_Z3logDv2_f(<2 x float> [[ARG]]) #[[ATTR6]], !fpmath !0 291a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x float> [[LOG]] 292a8376bbeSMatt Arsenault; 293a8376bbeSMatt Arsenault %log = tail call <2 x float> @_Z3logDv2_f(<2 x float> %arg) #0, !fpmath !0 294a8376bbeSMatt Arsenault ret <2 x float> %log 295a8376bbeSMatt Arsenault} 296a8376bbeSMatt Arsenault 297a8376bbeSMatt Arsenaultdefine float @test_log_cr_f32_nobuiltin_callsite(float %arg) { 298a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_cr_f32_nobuiltin_callsite 299a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 300d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call float @_Z3logf(float [[ARG]]) #[[ATTR6]] 301a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 302a8376bbeSMatt Arsenault; 303a8376bbeSMatt Arsenault %log = tail call float @_Z3logf(float %arg) #0 304a8376bbeSMatt Arsenault ret float %log 305a8376bbeSMatt Arsenault} 306a8376bbeSMatt Arsenault 307a8376bbeSMatt Arsenaultdefine <2 x float> @test_log_cr_v2f32_nobuiltin_callsite(<2 x float> %arg) { 308a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x float> @test_log_cr_v2f32_nobuiltin_callsite 309a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x float> [[ARG:%.*]]) { 310d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <2 x float> @_Z3logDv2_f(<2 x float> [[ARG]]) #[[ATTR6]] 311a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x float> [[LOG]] 312a8376bbeSMatt Arsenault; 313a8376bbeSMatt Arsenault %log = tail call <2 x float> @_Z3logDv2_f(<2 x float> %arg) #0 314a8376bbeSMatt Arsenault ret <2 x float> %log 315a8376bbeSMatt Arsenault} 316a8376bbeSMatt Arsenault 317a8376bbeSMatt Arsenault; "no-builtins" should be ignored 318a8376bbeSMatt Arsenaultdefine float @test_log_f32_nobuiltins(float %arg) #1 { 319a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_nobuiltins 320a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR0:[0-9]+]] { 321d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call float @_Z3logf(float [[ARG]]) #[[ATTR6]], !fpmath !0 322a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 323a8376bbeSMatt Arsenault; 324a8376bbeSMatt Arsenault %log = tail call float @_Z3logf(float %arg) #0, !fpmath !0 325a8376bbeSMatt Arsenault ret float %log 326a8376bbeSMatt Arsenault} 327a8376bbeSMatt Arsenault 328a8376bbeSMatt Arsenaultdefine <2 x float> @test_log_v2f32_nobuiltins(<2 x float> %arg) #1 { 329a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x float> @test_log_v2f32_nobuiltins 330a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x float> [[ARG:%.*]]) #[[ATTR0]] { 331d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <2 x float> @_Z3logDv2_f(<2 x float> [[ARG]]) #[[ATTR6]], !fpmath !0 332a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x float> [[LOG]] 333a8376bbeSMatt Arsenault; 334a8376bbeSMatt Arsenault %log = tail call <2 x float> @_Z3logDv2_f(<2 x float> %arg) #0, !fpmath !0 335a8376bbeSMatt Arsenault ret <2 x float> %log 336a8376bbeSMatt Arsenault} 337a8376bbeSMatt Arsenault 338a8376bbeSMatt Arsenaultdefine float @test_log_cr_f32_nobuiltins(float %arg) #1 { 339a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_cr_f32_nobuiltins 340a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR0]] { 341d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call float @_Z3logf(float [[ARG]]) #[[ATTR6]] 342a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 343a8376bbeSMatt Arsenault; 344a8376bbeSMatt Arsenault %log = tail call float @_Z3logf(float %arg) #0 345a8376bbeSMatt Arsenault ret float %log 346a8376bbeSMatt Arsenault} 347a8376bbeSMatt Arsenault 348a8376bbeSMatt Arsenaultdefine <2 x float> @test_log_cr_v2f32_nobuiltins(<2 x float> %arg) #1 { 349a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x float> @test_log_cr_v2f32_nobuiltins 350a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x float> [[ARG:%.*]]) #[[ATTR0]] { 351d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call <2 x float> @_Z3logDv2_f(<2 x float> [[ARG]]) #[[ATTR6]] 352a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x float> [[LOG]] 353a8376bbeSMatt Arsenault; 354a8376bbeSMatt Arsenault %log = tail call <2 x float> @_Z3logDv2_f(<2 x float> %arg) #0 355a8376bbeSMatt Arsenault ret <2 x float> %log 356a8376bbeSMatt Arsenault} 357a8376bbeSMatt Arsenault 358a8376bbeSMatt Arsenaultdefine float @test_log_f32_preserve_flags(float %arg) { 359a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_preserve_flags 360a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 361d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call nnan ninf float @llvm.log.f32(float [[ARG]]), !fpmath !0 362a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 363a8376bbeSMatt Arsenault; 364a8376bbeSMatt Arsenault %log = tail call nnan ninf float @_Z3logf(float %arg), !fpmath !0 365a8376bbeSMatt Arsenault ret float %log 366a8376bbeSMatt Arsenault} 367a8376bbeSMatt Arsenault 368a8376bbeSMatt Arsenaultdefine <2 x float> @test_log_v2f32_preserve_flags(<2 x float> %arg) { 369a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x float> @test_log_v2f32_preserve_flags 370a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x float> [[ARG:%.*]]) { 371d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call nnan nsz contract <2 x float> @llvm.log.v2f32(<2 x float> [[ARG]]), !fpmath !0 372a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x float> [[LOG]] 373a8376bbeSMatt Arsenault; 374a8376bbeSMatt Arsenault %log = tail call contract nsz nnan <2 x float> @_Z3logDv2_f(<2 x float> %arg), !fpmath !0 375a8376bbeSMatt Arsenault ret <2 x float> %log 376a8376bbeSMatt Arsenault} 377a8376bbeSMatt Arsenault 378a8376bbeSMatt Arsenaultdefine float @test_log_f32_preserve_flags_md(float %arg) { 379a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_preserve_flags_md 380a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 381d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call nnan ninf float @llvm.log.f32(float [[ARG]]), !fpmath !0, !foo !1 382a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 383a8376bbeSMatt Arsenault; 384a8376bbeSMatt Arsenault %log = tail call nnan ninf float @_Z3logf(float %arg), !fpmath !0, !foo !1 385a8376bbeSMatt Arsenault ret float %log 386a8376bbeSMatt Arsenault} 387a8376bbeSMatt Arsenault 388a8376bbeSMatt Arsenaultdefine <2 x float> @test_log_v2f32_preserve_flags_md(<2 x float> %arg) { 389a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x float> @test_log_v2f32_preserve_flags_md 390a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x float> [[ARG:%.*]]) { 391d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call nnan nsz contract <2 x float> @llvm.log.v2f32(<2 x float> [[ARG]]), !fpmath !0, !foo !1 392a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x float> [[LOG]] 393a8376bbeSMatt Arsenault; 394a8376bbeSMatt Arsenault %log = tail call contract nsz nnan <2 x float> @_Z3logDv2_f(<2 x float> %arg), !fpmath !0, !foo !1 395a8376bbeSMatt Arsenault ret <2 x float> %log 396a8376bbeSMatt Arsenault} 397a8376bbeSMatt Arsenault 398a8376bbeSMatt Arsenaultdefine float @test_log_cr_f32_preserve_flags(float %arg) { 399a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_cr_f32_preserve_flags 400a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 401d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call ninf contract float @llvm.log.f32(float [[ARG]]) 402a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 403a8376bbeSMatt Arsenault; 404a8376bbeSMatt Arsenault %log = tail call ninf contract float @_Z3logf(float %arg) 405a8376bbeSMatt Arsenault ret float %log 406a8376bbeSMatt Arsenault} 407a8376bbeSMatt Arsenault 408a8376bbeSMatt Arsenaultdefine <2 x float> @test_log_cr_v2f32_preserve_flags(<2 x float> %arg) { 409a8376bbeSMatt Arsenault; CHECK-LABEL: define <2 x float> @test_log_cr_v2f32_preserve_flags 410a8376bbeSMatt Arsenault; CHECK-SAME: (<2 x float> [[ARG:%.*]]) { 411d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call nnan nsz <2 x float> @llvm.log.v2f32(<2 x float> [[ARG]]) 412a8376bbeSMatt Arsenault; CHECK-NEXT: ret <2 x float> [[LOG]] 413a8376bbeSMatt Arsenault; 414a8376bbeSMatt Arsenault %log = tail call nnan nsz <2 x float> @_Z3logDv2_f(<2 x float> %arg) 415a8376bbeSMatt Arsenault ret <2 x float> %log 416a8376bbeSMatt Arsenault} 417a8376bbeSMatt Arsenault 418a8376bbeSMatt Arsenault; Test the libm name, not a recognized opencl builtin. 419a8376bbeSMatt Arsenaultdeclare float @logf(float) #2 420a8376bbeSMatt Arsenaultdeclare double @log(double) #2 421a8376bbeSMatt Arsenault 422a8376bbeSMatt Arsenaultdefine float @test_libm_log_f32(float %arg) { 423a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_libm_log_f32 424a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 425a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call float @logf(float [[ARG]]) 426a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 427a8376bbeSMatt Arsenault; 428a8376bbeSMatt Arsenault %log = tail call float @logf(float %arg) 429a8376bbeSMatt Arsenault ret float %log 430a8376bbeSMatt Arsenault} 431a8376bbeSMatt Arsenault 432a8376bbeSMatt Arsenaultdefine float @test_libm_log_f32_fast(float %arg) { 433a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_libm_log_f32_fast 434a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 435a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call fast float @logf(float [[ARG]]) 436a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 437a8376bbeSMatt Arsenault; 438a8376bbeSMatt Arsenault %log = tail call fast float @logf(float %arg) 439a8376bbeSMatt Arsenault ret float %log 440a8376bbeSMatt Arsenault} 441a8376bbeSMatt Arsenault 442a8376bbeSMatt Arsenaultdefine float @test_libm_log_f32_fpmath(float %arg) { 443a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_libm_log_f32_fpmath 444a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 445a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call float @logf(float [[ARG]]), !fpmath !0 446a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 447a8376bbeSMatt Arsenault; 448a8376bbeSMatt Arsenault %log = tail call float @logf(float %arg), !fpmath !0 449a8376bbeSMatt Arsenault ret float %log 450a8376bbeSMatt Arsenault} 451a8376bbeSMatt Arsenault 452a8376bbeSMatt Arsenaultdefine double @test_libm_log_f64(double %arg) { 453a8376bbeSMatt Arsenault; CHECK-LABEL: define double @test_libm_log_f64 454a8376bbeSMatt Arsenault; CHECK-SAME: (double [[ARG:%.*]]) { 455a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call double @log(double [[ARG]]) 456a8376bbeSMatt Arsenault; CHECK-NEXT: ret double [[LOG]] 457a8376bbeSMatt Arsenault; 458a8376bbeSMatt Arsenault %log = tail call double @log(double %arg) 459a8376bbeSMatt Arsenault ret double %log 460a8376bbeSMatt Arsenault} 461a8376bbeSMatt Arsenault 462a8376bbeSMatt Arsenaultdefine double @test_libm_log_f64_fast(double %arg) { 463a8376bbeSMatt Arsenault; CHECK-LABEL: define double @test_libm_log_f64_fast 464a8376bbeSMatt Arsenault; CHECK-SAME: (double [[ARG:%.*]]) { 465a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call fast double @log(double [[ARG]]) 466a8376bbeSMatt Arsenault; CHECK-NEXT: ret double [[LOG]] 467a8376bbeSMatt Arsenault; 468a8376bbeSMatt Arsenault %log = tail call fast double @log(double %arg) 469a8376bbeSMatt Arsenault ret double %log 470a8376bbeSMatt Arsenault} 471a8376bbeSMatt Arsenault 472a8376bbeSMatt Arsenaultdefine double @test_libm_log_f64_fpmath(double %arg) { 473a8376bbeSMatt Arsenault; CHECK-LABEL: define double @test_libm_log_f64_fpmath 474a8376bbeSMatt Arsenault; CHECK-SAME: (double [[ARG:%.*]]) { 475a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call double @log(double [[ARG]]), !fpmath !0 476a8376bbeSMatt Arsenault; CHECK-NEXT: ret double [[LOG]] 477a8376bbeSMatt Arsenault; 478a8376bbeSMatt Arsenault %log = tail call double @log(double %arg), !fpmath !0 479a8376bbeSMatt Arsenault ret double %log 480a8376bbeSMatt Arsenault} 481a8376bbeSMatt Arsenault 482a8376bbeSMatt Arsenaultdefine float @test_log_f32_fast_noinline(float %arg) { 483a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_fast_noinline 484a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) { 485d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call fast float @_Z3logf(float [[ARG]]) #[[ATTR7:[0-9]+]], !fpmath !0 486a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 487a8376bbeSMatt Arsenault; 488a8376bbeSMatt Arsenault %log = tail call fast float @_Z3logf(float %arg) #3, !fpmath !0 489a8376bbeSMatt Arsenault ret float %log 490a8376bbeSMatt Arsenault} 491a8376bbeSMatt Arsenault 492a8376bbeSMatt Arsenaultdefine float @test_log_f32_fast_optsize(float %arg) #4 { 493a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_fast_optsize 494a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR2:[0-9]+]] { 495d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call fast float @llvm.log.f32(float [[ARG]]), !fpmath !0 496a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 497a8376bbeSMatt Arsenault; 498a8376bbeSMatt Arsenault %log = tail call fast float @_Z3logf(float %arg), !fpmath !0 499a8376bbeSMatt Arsenault ret float %log 500a8376bbeSMatt Arsenault} 501a8376bbeSMatt Arsenault 502a8376bbeSMatt Arsenaultdefine float @test_log_f32_fast_minsize(float %arg) #5 { 503a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_fast_minsize 504a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR3:[0-9]+]] { 505d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call fast float @llvm.log.f32(float [[ARG]]), !fpmath !0 506a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 507a8376bbeSMatt Arsenault; 508a8376bbeSMatt Arsenault %log = tail call fast float @_Z3logf(float %arg), !fpmath !0 509a8376bbeSMatt Arsenault ret float %log 510a8376bbeSMatt Arsenault} 511a8376bbeSMatt Arsenault 512a8376bbeSMatt Arsenaultdefine float @test_log_f32_nsz_contract_optsize(float %arg) #4 { 513a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_nsz_contract_optsize 514a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR2]] { 515d2517616SMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call nsz contract float @llvm.log.f32(float [[ARG]]), !fpmath !0 516a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 517a8376bbeSMatt Arsenault; 518a8376bbeSMatt Arsenault %log = tail call nsz contract float @_Z3logf(float %arg), !fpmath !0 519a8376bbeSMatt Arsenault ret float %log 520a8376bbeSMatt Arsenault} 521a8376bbeSMatt Arsenault 522a8376bbeSMatt Arsenaultdefine float @test_log_f32_nsz_contract_minsize(float %arg) #5 { 523a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_nsz_contract_minsize 524a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR3]] { 525a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call nsz contract float @_Z3logf(float [[ARG]]), !fpmath !0 526a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 527a8376bbeSMatt Arsenault; 528a8376bbeSMatt Arsenault %log = tail call nsz contract float @_Z3logf(float %arg), !fpmath !0 529a8376bbeSMatt Arsenault ret float %log 530a8376bbeSMatt Arsenault} 531a8376bbeSMatt Arsenault 532a8376bbeSMatt Arsenaultdefine half @test_log_f16_fast_minsize(half %arg) #5 { 533a8376bbeSMatt Arsenault; CHECK-LABEL: define half @test_log_f16_fast_minsize 534a8376bbeSMatt Arsenault; CHECK-SAME: (half [[ARG:%.*]]) #[[ATTR3]] { 535a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call half @_Z3logDh(half [[ARG]]) 536a8376bbeSMatt Arsenault; CHECK-NEXT: ret half [[LOG]] 537a8376bbeSMatt Arsenault; 538a8376bbeSMatt Arsenault %log = tail call half @_Z3logDh(half %arg) 539a8376bbeSMatt Arsenault ret half %log 540a8376bbeSMatt Arsenault} 541a8376bbeSMatt Arsenault 542a8376bbeSMatt Arsenaultdefine float @test_log_f32_strictfp(float %arg) #6 { 543a8376bbeSMatt Arsenault; CHECK-LABEL: define float @test_log_f32_strictfp 544a8376bbeSMatt Arsenault; CHECK-SAME: (float [[ARG:%.*]]) #[[ATTR4:[0-9]+]] { 545a8376bbeSMatt Arsenault; CHECK-NEXT: [[LOG:%.*]] = tail call nsz float @_Z3logf(float [[ARG]]) #[[ATTR4]] 546a8376bbeSMatt Arsenault; CHECK-NEXT: ret float [[LOG]] 547a8376bbeSMatt Arsenault; 548a8376bbeSMatt Arsenault %log = tail call nsz float @_Z3logf(float %arg) #6 549a8376bbeSMatt Arsenault ret float %log 550a8376bbeSMatt Arsenault} 551a8376bbeSMatt Arsenault 552a8376bbeSMatt Arsenaultattributes #0 = { nobuiltin } 553a8376bbeSMatt Arsenaultattributes #1 = { "no-builtins" } 554a8376bbeSMatt Arsenaultattributes #2 = { nounwind memory(none) } 555a8376bbeSMatt Arsenaultattributes #3 = { noinline } 556a8376bbeSMatt Arsenaultattributes #4 = { optsize } 557a8376bbeSMatt Arsenaultattributes #5 = { minsize } 558a8376bbeSMatt Arsenaultattributes #6 = { strictfp } 559a8376bbeSMatt Arsenault 560a8376bbeSMatt Arsenault!0 = !{float 3.000000e+00} 561a8376bbeSMatt Arsenault!1 = !{i32 1234} 562