<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">My apologies. I will do that in the future.<div class=""><br class=""></div><div class="">Joel</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 26, 2018, at 10:40 AM, David Blaikie <<a href="mailto:dblaikie@gmail.com" class="">dblaikie@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">

<div class=""><p class=""><span style="color: #ff0000;" class="">External Email</span></p>
<div class="">
<div dir="ltr" class="">Would be great if you could include the original revision number, phab review, at least the patch summary (first line of the original patch description), etc - so folks have a bit more context when reading the commit history</div>
<br class="">
<div class="gmail_quote">
<div dir="ltr" class="">On Fri, Nov 23, 2018 at 11:29 PM Joel Jones via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:<br class="">
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: joel_k_jones<br class="">
Date: Fri Nov 23 23:26:55 2018<br class="">
New Revision: 347511<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=347511&view=rev" rel="noreferrer" target="_blank" class="">
http://llvm.org/viewvc/llvm-project?rev=347511&view=rev</a><br class="">
Log:<br class="">
Revert unapproved commit<br class="">
<br class="">
Removed:<br class="">
    llvm/trunk/test/Transforms/LoopVectorize/AArch64/sleef-calls-aarch64.ll<br class="">
Modified:<br class="">
    llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h<br class="">
    llvm/trunk/include/llvm/IR/Intrinsics.td<br class="">
    llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp<br class="">
<br class="">
Modified: llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h?rev=347511&r1=347510&r2=347511&view=diff" rel="noreferrer" target="_blank" class="">
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h?rev=347511&r1=347510&r2=347511&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h (original)<br class="">
+++ llvm/trunk/include/llvm/Analysis/TargetLibraryInfo.h Fri Nov 23 23:26:55 2018<br class="">
@@ -47,7 +47,6 @@ struct VecDesc {<br class="">
 class TargetLibraryInfoImpl {<br class="">
   friend class TargetLibraryInfo;<br class="">
<br class="">
-  Triple TT;<br class="">
   unsigned char AvailableArray[(NumLibFuncs+3)/4];<br class="">
   llvm::DenseMap<unsigned, std::string> CustomNames;<br class="">
   static StringRef const StandardNames[NumLibFuncs];<br class="">
@@ -88,8 +87,7 @@ public:<br class="">
   enum VectorLibrary {<br class="">
     NoLibrary,  // Don't use any vector library.<br class="">
     Accelerate, // Use Accelerate framework.<br class="">
-    SVML,       // Intel short vector math library.<br class="">
-    SLEEFGNUABI // SLEEF - SIMD Library for Evaluating Elementary Functions.<br class="">
+    SVML        // Intel short vector math library.<br class="">
   };<br class="">
<br class="">
   TargetLibraryInfoImpl();<br class="">
<br class="">
Modified: llvm/trunk/include/llvm/IR/Intrinsics.td<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Intrinsics.td?rev=347511&r1=347510&r2=347511&view=diff" rel="noreferrer" target="_blank" class="">
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Intrinsics.td?rev=347511&r1=347510&r2=347511&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/include/llvm/IR/Intrinsics.td (original)<br class="">
+++ llvm/trunk/include/llvm/IR/Intrinsics.td Fri Nov 23 23:26:55 2018<br class="">
@@ -430,34 +430,14 @@ let IntrProperties = [IntrNoMem, IntrSpe<br class="">
   def int_powi : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>, llvm_i32_ty]>;<br class="">
   def int_sin  : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
   def int_cos  : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_acos : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_asin : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_atan : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_atan2 : Intrinsic<[llvm_anyfloat_ty],<br class="">
-                            [LLVMMatchType<0>, LLVMMatchType<0>]>;<br class="">
-  def int_tan  : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
   def int_pow  : Intrinsic<[llvm_anyfloat_ty],<br class="">
                            [LLVMMatchType<0>, LLVMMatchType<0>]>;<br class="">
-<br class="">
-  def int_cosh : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_sinh : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_tanh : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-<br class="">
-  def int_asinh : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_acosh : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_atanh : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-<br class="">
-  def int_lgamma : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_tgamma : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-<br class="">
   def int_log  : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
   def int_log10: Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
   def int_log2 : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
   def int_exp  : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
   def int_exp2 : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-  def int_exp10 : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
   def int_fabs : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
-<br class="">
   def int_copysign : Intrinsic<[llvm_anyfloat_ty],<br class="">
                                [LLVMMatchType<0>, LLVMMatchType<0>]>;<br class="">
   def int_floor : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;<br class="">
<br class="">
Modified: llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp?rev=347511&r1=347510&r2=347511&view=diff" rel="noreferrer" target="_blank" class="">
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp?rev=347511&r1=347510&r2=347511&view=diff</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp (original)<br class="">
+++ llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp Fri Nov 23 23:26:55 2018<br class="">
@@ -25,9 +25,7 @@ static cl::opt<TargetLibraryInfoImpl::Ve<br class="">
                clEnumValN(TargetLibraryInfoImpl::Accelerate, "Accelerate",<br class="">
                           "Accelerate framework"),<br class="">
                clEnumValN(TargetLibraryInfoImpl::SVML, "SVML",<br class="">
-                          "Intel SVML library"),<br class="">
-               clEnumValN(TargetLibraryInfoImpl::SLEEFGNUABI, "sleefgnuabi",<br class="">
-                          "SIMD Library for Evaluating Elementary Functions")));<br class="">
+                          "Intel SVML library")));<br class="">
<br class="">
 StringRef const TargetLibraryInfoImpl::StandardNames[LibFunc::NumLibFuncs] = {<br class="">
 #define TLI_DEFINE_STRING<br class="">
@@ -526,8 +524,7 @@ TargetLibraryInfoImpl::TargetLibraryInfo<br class="">
   initialize(*this, Triple(), StandardNames);<br class="">
 }<br class="">
<br class="">
-TargetLibraryInfoImpl::TargetLibraryInfoImpl(const Triple &T)<br class="">
-  : TT(T) {<br class="">
+TargetLibraryInfoImpl::TargetLibraryInfoImpl(const Triple &T) {<br class="">
   // Default to everything being available.<br class="">
   memset(AvailableArray, -1, sizeof(AvailableArray));<br class="">
<br class="">
@@ -535,8 +532,7 @@ TargetLibraryInfoImpl::TargetLibraryInfo<br class="">
 }<br class="">
<br class="">
 TargetLibraryInfoImpl::TargetLibraryInfoImpl(const TargetLibraryInfoImpl &TLI)<br class="">
-    : TT(<a href="http://tli.tt/" rel="noreferrer" target="_blank" class="">TLI.TT</a>), CustomNames(TLI.CustomNames),<br class="">
-      ShouldExtI32Param(TLI.ShouldExtI32Param),<br class="">
+    : CustomNames(TLI.CustomNames), ShouldExtI32Param(TLI.ShouldExtI32Param),<br class="">
       ShouldExtI32Return(TLI.ShouldExtI32Return),<br class="">
       ShouldSignExtI32Param(TLI.ShouldSignExtI32Param) {<br class="">
   memcpy(AvailableArray, TLI.AvailableArray, sizeof(AvailableArray));<br class="">
@@ -545,7 +541,7 @@ TargetLibraryInfoImpl::TargetLibraryInfo<br class="">
 }<br class="">
<br class="">
 TargetLibraryInfoImpl::TargetLibraryInfoImpl(TargetLibraryInfoImpl &&TLI)<br class="">
-    : TT(std::move(<a href="http://tli.tt/" rel="noreferrer" target="_blank" class="">TLI.TT</a>)), CustomNames(std::move(TLI.CustomNames)),<br class="">
+    : CustomNames(std::move(TLI.CustomNames)),<br class="">
       ShouldExtI32Param(TLI.ShouldExtI32Param),<br class="">
       ShouldExtI32Return(TLI.ShouldExtI32Return),<br class="">
       ShouldSignExtI32Param(TLI.ShouldSignExtI32Param) {<br class="">
@@ -556,7 +552,6 @@ TargetLibraryInfoImpl::TargetLibraryInfo<br class="">
 }<br class="">
<br class="">
 TargetLibraryInfoImpl &TargetLibraryInfoImpl::operator=(const TargetLibraryInfoImpl &TLI) {<br class="">
-  TT = <a href="http://tli.tt/" rel="noreferrer" target="_blank" class="">TLI.TT</a>;<br class="">
   CustomNames = TLI.CustomNames;<br class="">
   ShouldExtI32Param = TLI.ShouldExtI32Param;<br class="">
   ShouldExtI32Return = TLI.ShouldExtI32Return;<br class="">
@@ -566,7 +561,6 @@ TargetLibraryInfoImpl &TargetLibraryInfo<br class="">
 }<br class="">
<br class="">
 TargetLibraryInfoImpl &TargetLibraryInfoImpl::operator=(TargetLibraryInfoImpl &&TLI) {<br class="">
-  TT = std::move(<a href="http://tli.tt/" rel="noreferrer" target="_blank" class="">TLI.TT</a>);<br class="">
   CustomNames = std::move(TLI.CustomNames);<br class="">
   ShouldExtI32Param = TLI.ShouldExtI32Param;<br class="">
   ShouldExtI32Return = TLI.ShouldExtI32Return;<br class="">
@@ -1585,150 +1579,6 @@ void TargetLibraryInfoImpl::addVectoriza<br class="">
     addVectorizableFunctions(VecFuncs);<br class="">
     break;<br class="">
   }<br class="">
-  case SLEEFGNUABI: {<br class="">
-    if (TT.getArch() == llvm::Triple::aarch64 ||<br class="">
-        TT.getArch() == llvm::Triple::aarch64_be) {<br class="">
-      const VecDesc AArch64TwoAndFourLaneVecFuncs[] = {<br class="">
-        { "acos", "_ZGVnN2v_acos", 2 },<br class="">
-        { "acos", "_ZGVnN4v_acosf", 4 },<br class="">
-        { "acosf", "_ZGVnN4v_acosf", 4 },<br class="">
-        { "llvm.acos.f64", "_ZGVnN2v_acos", 2 },<br class="">
-        { "llvm.acos.f32", "_ZGVnN4v_acosf", 4 },<br class="">
-<br class="">
-        { "asin", "_ZGVnN2v_asin", 2 },<br class="">
-        { "asin", "_ZGVnN4v_asinf", 4 },<br class="">
-        { "asinf", "_ZGVnN4v_asinf", 4 },<br class="">
-        { "llvm.asin.f64", "_ZGVnN2v_asin", 2 },<br class="">
-        { "llvm.asin.f32", "_ZGVnN4v_asinf", 4 },<br class="">
-<br class="">
-        { "atan", "_ZGVnN2v_atan", 2 },<br class="">
-        { "atan", "_ZGVnN4v_atanf", 4 },<br class="">
-        { "atanf", "_ZGVnN4v_atanf", 4 },<br class="">
-        { "llvm.atan.f64", "_ZGVnN2v_atan", 2 },<br class="">
-        { "llvm.atan.f32", "_ZGVnN4v_atanf", 4 },<br class="">
-<br class="">
-        { "atan2", "_ZGVnN2vv_atan2", 2 },<br class="">
-        { "atan2", "_ZGVnN4vv_atan2f", 4 },<br class="">
-        { "atan2f", "_ZGVnN4vv_atan2f", 4 },<br class="">
-        { "llvm.atan2.f64", "_ZGVnN2vv_atan2", 2 },<br class="">
-        { "llvm.atan2.f32", "_ZGVnN4vv_atan2f", 4 },<br class="">
-        { "llvm.atan2.v2f64", "_ZGVnN2vv_atan2", 2 },<br class="">
-        { "llvm.atan2.v4f32", "_ZGVnN4vv_atan2f", 4 },<br class="">
-<br class="">
-        { "atanh", "_ZGVnN2v_atanh", 2 },<br class="">
-        { "atanh", "_ZGVnN4v_atanhf", 4 },<br class="">
-        { "atanhf", "_ZGVnN4v_atanhf", 4 },<br class="">
-        { "llvm.atanh.f64", "_ZGVnN2v_atanh", 2 },<br class="">
-        { "llvm.atanh.f32", "_ZGVnN4v_atanhf", 4 },<br class="">
-<br class="">
-        { "cos", "_ZGVnN2v_cos", 2 },<br class="">
-        { "cos", "_ZGVnN4v_cosf", 4 },<br class="">
-        { "cosf", "_ZGVnN4v_cosf", 4 },<br class="">
-        { "llvm.cos.f64", "_ZGVnN2v_cos", 2 },<br class="">
-        { "llvm.cos.f32", "_ZGVnN4v_cosf", 4 },<br class="">
-<br class="">
-        { "cosh", "_ZGVnN2v_cosh", 2 },<br class="">
-        { "cosh", "_ZGVnN4v_coshf", 4 },<br class="">
-        { "coshf", "_ZGVnN4v_coshf", 4 },<br class="">
-        { "llvm.cosh.f64", "_ZGVnN2v_cosh", 2 },<br class="">
-        { "llvm.cosh.f32", "_ZGVnN4v_coshf", 4 },<br class="">
-<br class="">
-        { "exp", "_ZGVnN2v_exp", 2 },<br class="">
-        { "exp", "_ZGVnN4v_expf", 4 },<br class="">
-        { "expf", "_ZGVnN4v_expf", 4 },<br class="">
-        { "llvm.exp.f64", "_ZGVnN2v_exp", 2 },<br class="">
-        { "llvm.exp.f32", "_ZGVnN4v_expf", 4 },<br class="">
-        { "llvm.exp.v2f64", "_ZGVnN2v_exp", 2 },<br class="">
-        { "llvm.exp.v4f32", "_ZGVnN4v_expf", 4 },<br class="">
-<br class="">
-        { "exp2", "_ZGVnN2v_exp2", 2 },<br class="">
-        { "exp2", "_ZGVnN4v_exp2f", 4 },<br class="">
-        { "exp2f", "_ZGVnN4v_exp2f", 4 },<br class="">
-        { "llvm.exp2.f64", "_ZGVnN2v_exp2", 2 },<br class="">
-        { "llvm.exp2.f32", "_ZGVnN4v_exp2f", 4 },<br class="">
-        { "llvm.exp2.v2f64", "_ZGVnN2v_exp2", 2 },<br class="">
-        { "llvm.exp2.v4f32", "_ZGVnN4v_exp2f", 4 },<br class="">
-<br class="">
-        { "exp10", "_ZGVnN2v_exp10", 2 },<br class="">
-        { "exp10", "_ZGVnN4v_exp10f", 4 },<br class="">
-        { "exp10f", "_ZGVnN4v_exp10f", 4 },<br class="">
-        { "llvm.exp10.f64", "_ZGVnN2v_exp10", 2 },<br class="">
-        { "llvm.exp10.f32", "_ZGVnN4v_exp10f", 4 },<br class="">
-        { "llvm.exp10.v2f64", "_ZGVnN2v_exp10", 2 },<br class="">
-        { "llvm.exp10.v4f32", "_ZGVnN4v_exp10f", 4 },<br class="">
-<br class="">
-        { "lgamma", "_ZGVnN2v_lgamma", 2 },<br class="">
-        { "lgamma", "_ZGVnN4v_lgammaf", 4 },<br class="">
-        { "lgammaf", "_ZGVnN4v_lgammaf", 4 },<br class="">
-        { "llvm.lgamma.f64", "_ZGVnN2v_lgamma", 2 },<br class="">
-        { "llvm.lgamma.f32", "_ZGVnN4v_lgammaf", 4 },<br class="">
-<br class="">
-        { "log", "_ZGVnN2v_log", 2 },<br class="">
-        { "log", "_ZGVnN4v_logf", 4 },<br class="">
-        { "logf", "_ZGVnN4v_logf", 4 },<br class="">
-        { "llvm.log.f64", "_ZGVnN2v_log", 2 },<br class="">
-        { "llvm.log.f32", "_ZGVnN4v_logf", 4 },<br class="">
-<br class="">
-        { "log2", "_ZGVnN2v_log2", 2 },<br class="">
-        { "log2", "_ZGVnN4v_log2f", 4 },<br class="">
-        { "log2f", "_ZGVnN4v_log2f", 4 },<br class="">
-        { "llvm.log2.f64", "_ZGVnN2v_log2", 2 },<br class="">
-        { "llvm.log2.f32", "_ZGVnN4v_log2f", 4 },<br class="">
-<br class="">
-        { "log10", "_ZGVnN2v_log10", 2 },<br class="">
-        { "log10", "_ZGVnN4v_log10f", 4 },<br class="">
-        { "log10f", "_ZGVnN4v_log10f", 4 },<br class="">
-        { "llvm.log10.f64", "_ZGVnN2v_log10", 2 },<br class="">
-        { "llvm.log10.f32", "_ZGVnN4v_log10f", 4 },<br class="">
-<br class="">
-        { "pow", "_ZGVnN2vv_pow", 2 },<br class="">
-        { "pow", "_ZGVnN4vv_powf", 4 },<br class="">
-        { "powf", "_ZGVnN4vv_powf", 4 },<br class="">
-        { "llvm.pow.f64", "_ZGVnN2vv_pow", 2 },<br class="">
-        { "llvm.pow.f32", "_ZGVnN4vv_powf", 4 },<br class="">
-        { "llvm.pow.v2f64", "_ZGVnN2vv_pow", 2 },<br class="">
-        { "llvm.pow.v4f32", "_ZGVnN4vv_powf", 4 },<br class="">
-<br class="">
-        { "sin", "_ZGVnN2v_sin", 2 },<br class="">
-        { "sin", "_ZGVnN4v_sinf", 4 },<br class="">
-        { "sinf", "_ZGVnN4v_sinf", 4 },<br class="">
-        { "llvm.sin.f64", "_ZGVnN2v_sin", 2 },<br class="">
-        { "llvm.sin.f32", "_ZGVnN4v_sinf", 4 },<br class="">
-<br class="">
-        { "sinh", "_ZGVnN2v_sinh", 2 },<br class="">
-        { "sinh", "_ZGVnN4v_sinhf", 4 },<br class="">
-        { "sinhf", "_ZGVnN4v_sinhf", 4 },<br class="">
-        { "llvm.sinh.f64", "_ZGVnN2v_sinh", 2 },<br class="">
-        { "llvm.sinh.f32", "_ZGVnN4v_sinhf", 4 },<br class="">
-<br class="">
-        { "sqrt", "_ZGVnN2v_sqrt", 2 },<br class="">
-        { "sqrt", "_ZGVnN4v_sqrtf", 4 },<br class="">
-        { "sqrtf", "_ZGVnN4v_sqrtf", 4 },<br class="">
-        { "llvm.sqrt.f64", "_ZGVnN2v_sqrt", 2 },<br class="">
-        { "llvm.sqrt.f32", "_ZGVnN4v_sqrtf", 4 },<br class="">
-<br class="">
-        { "tan", "_ZGVnN2v_tan", 2 },<br class="">
-        { "tan", "_ZGVnN4v_tanf", 4 },<br class="">
-        { "tanf", "_ZGVnN4v_tanf", 4 },<br class="">
-        { "llvm.tan.f64", "_ZGVnN2v_tan", 2 },<br class="">
-        { "llvm.tan.f32", "_ZGVnN4v_tanf", 4 },<br class="">
-<br class="">
-        { "tanh", "_ZGVnN2v_tanh", 2 },<br class="">
-        { "tanh", "_ZGVnN4v_tanhf", 4 },<br class="">
-        { "tanhf", "_ZGVnN4v_tanhf", 4 },<br class="">
-        { "llvm.tanh.f64", "_ZGVnN2v_tanh", 2 },<br class="">
-        { "llvm.tanh.f32", "_ZGVnN4v_tanhf", 4 },<br class="">
-<br class="">
-        { "tgamma", "_ZGVnN2v_tgamma", 2 },<br class="">
-        { "tgamma", "_ZGVnN4v_tgammaf", 4 },<br class="">
-        { "tgammaf", "_ZGVnN4v_tgammaf", 4 },<br class="">
-        { "llvm.tgamma.f64", "_ZGVnN2v_tgamma", 2 },<br class="">
-        { "llvm.tgamma.f32", "_ZGVnN4v_tgammaf", 4 },<br class="">
-      };<br class="">
-      addVectorizableFunctions(AArch64TwoAndFourLaneVecFuncs);<br class="">
-    }<br class="">
-    break;<br class="">
-  }<br class="">
   case NoLibrary:<br class="">
     break;<br class="">
   }<br class="">
<br class="">
Removed: llvm/trunk/test/Transforms/LoopVectorize/AArch64/sleef-calls-aarch64.ll<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/AArch64/sleef-calls-aarch64.ll?rev=347510&view=auto" rel="noreferrer" target="_blank" class="">
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/AArch64/sleef-calls-aarch64.ll?rev=347510&view=auto</a><br class="">
==============================================================================<br class="">
--- llvm/trunk/test/Transforms/LoopVectorize/AArch64/sleef-calls-aarch64.ll (original)<br class="">
+++ llvm/trunk/test/Transforms/LoopVectorize/AArch64/sleef-calls-aarch64.ll (removed)<br class="">
@@ -1,1077 +0,0 @@<br class="">
-; Do NOT use -O3. It will lower exp2 to ldexp, and the test will fail.<br class="">
-; RUN: opt -vector-library=sleefgnuabi -loop-unroll -loop-vectorize -S < %s | FileCheck %s<br class="">
-<br class="">
-target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"<br class="">
-target triple = "aarch64-unknown-linux-gnu"<br class="">
-<br class="">
-declare double @acos(double) #0<br class="">
-declare float @acosf(float) #0<br class="">
-declare double @llvm.acos.f64(double) #0<br class="">
-declare float @llvm.acos.f32(float) #0<br class="">
-<br class="">
-define void @acos_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @acos_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_acos(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @acos(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @acos_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @acos_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_acosf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @acosf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @asin(double) #0<br class="">
-declare float @asinf(float) #0<br class="">
-declare double @llvm.asin.f64(double) #0<br class="">
-declare float @llvm.asin.f32(float) #0<br class="">
-<br class="">
-define void @asin_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @asin_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_asin(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @asin(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @asin_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @asin_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_asinf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @asinf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @atan(double) #0<br class="">
-declare float @atanf(float) #0<br class="">
-declare double @llvm.atan.f64(double) #0<br class="">
-declare float @llvm.atan.f32(float) #0<br class="">
-<br class="">
-define void @atan_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @atan_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_atan(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @atan(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @atan_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @atan_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_atanf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @atanf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @atan2(double, double) #0<br class="">
-declare float @atan2f(float, float) #0<br class="">
-declare double @llvm.atan2.f64(double, double) #0<br class="">
-declare float @llvm.atan2.f32(float, float) #0<br class="">
-<br class="">
-define void @atan2_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @atan2_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2vv_atan2(<2 x double> [[TMP4:%.*]], <2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @atan2(double %conv, double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @atan2_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @atan2_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4vv_atan2f(<4 x float> [[TMP4:%.*]], <4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @atan2f(float %conv, float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @atanh(double) #0<br class="">
-declare float @atanhf(float) #0<br class="">
-declare double @llvm.atanh.f64(double) #0<br class="">
-declare float @llvm.atanh.f32(float) #0<br class="">
-<br class="">
-define void @atanh_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @atanh_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_atanh(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @atanh(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @atanh_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @atanh_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_atanhf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @atanhf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @cos(double) #0<br class="">
-declare float @cosf(float) #0<br class="">
-declare double @llvm.cos.f64(double) #0<br class="">
-declare float @llvm.cos.f32(float) #0<br class="">
-<br class="">
-define void @cos_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @cos_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_cos(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @cos(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @cos_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @cos_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_cosf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @cosf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @cosh(double) #0<br class="">
-declare float @coshf(float) #0<br class="">
-declare double @llvm.cosh.f64(double) #0<br class="">
-declare float @llvm.cosh.f32(float) #0<br class="">
-<br class="">
-define void @cosh_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @cosh_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_cosh(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @cosh(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @cosh_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @cosh_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_coshf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @coshf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @exp(double) #0<br class="">
-declare float @expf(float) #0<br class="">
-declare double @llvm.exp.f64(double) #0<br class="">
-declare float @llvm.exp.f32(float) #0<br class="">
-<br class="">
-define void @exp_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @exp_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_exp(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @exp(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @exp_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @exp_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_expf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @expf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @exp2(double) #0<br class="">
-declare float @exp2f(float) #0<br class="">
-declare double @llvm.exp2.f64(double) #0<br class="">
-declare float @llvm.exp2.f32(float) #0<br class="">
-<br class="">
-define void @exp2_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @exp2_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_exp2(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @exp2(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @exp2_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @exp2_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_exp2f(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @exp2f(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @exp10(double) #0<br class="">
-declare float @exp10f(float) #0<br class="">
-declare double @llvm.exp10.f64(double) #0<br class="">
-declare float @llvm.exp10.f32(float) #0<br class="">
-<br class="">
-define void @exp10_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @exp10_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_exp10(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @exp10(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @exp10_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @exp10_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_exp10f(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @exp10f(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @lgamma(double) #0<br class="">
-declare float @lgammaf(float) #0<br class="">
-declare double @llvm.lgamma.f64(double) #0<br class="">
-declare float @llvm.lgamma.f32(float) #0<br class="">
-<br class="">
-define void @lgamma_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @lgamma_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_lgamma(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @lgamma(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @lgamma_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @lgamma_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_lgammaf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @lgammaf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @log10(double) #0<br class="">
-declare float @log10f(float) #0<br class="">
-declare double @llvm.log10.f64(double) #0<br class="">
-declare float @llvm.log10.f32(float) #0<br class="">
-<br class="">
-define void @log10_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @log10_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_log10(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @log10(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @log10_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @log10_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_log10f(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @log10f(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @log2(double) #0<br class="">
-declare float @log2f(float) #0<br class="">
-declare double @llvm.log2.f64(double) #0<br class="">
-declare float @llvm.log2.f32(float) #0<br class="">
-<br class="">
-define void @log2_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @log2_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_log2(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @log2(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @log2_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @log2_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_log2f(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @log2f(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @log(double) #0<br class="">
-declare float @logf(float) #0<br class="">
-declare double @llvm.log.f64(double) #0<br class="">
-declare float @llvm.log.f32(float) #0<br class="">
-<br class="">
-define void @log_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @log_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_log(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @log(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @log_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @log_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_logf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @logf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @pow(double, double) #0<br class="">
-declare float @powf(float, float) #0<br class="">
-declare double @llvm.pow.f64(double, double) #0<br class="">
-declare float @llvm.pow.f32(float, float) #0<br class="">
-<br class="">
-define void @pow_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @pow_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2vv_pow(<2 x double> [[TMP4:%.*]], <2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @pow(double %conv, double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @pow_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @pow_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4vv_powf(<4 x float> [[TMP4:%.*]], <4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @powf(float %conv, float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @sin(double) #0<br class="">
-declare float @sinf(float) #0<br class="">
-declare double @llvm.sin.f64(double) #0<br class="">
-declare float @llvm.sin.f32(float) #0<br class="">
-<br class="">
-define void @sin_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @sin_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_sin(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @sin(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @sin_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @sin_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_sinf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @sinf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @sinh(double) #0<br class="">
-declare float @sinhf(float) #0<br class="">
-declare double @llvm.sinh.f64(double) #0<br class="">
-declare float @llvm.sinh.f32(float) #0<br class="">
-<br class="">
-define void @sinh_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @sinh_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_sinh(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @sinh(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @sinh_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @sinh_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_sinhf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @sinhf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @sqrt(double) #0<br class="">
-declare float @sqrtf(float) #0<br class="">
-declare double @llvm.sqrt.f64(double) #0<br class="">
-declare float @llvm.sqrt.f32(float) #0<br class="">
-<br class="">
-define void @sqrt_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @sqrt_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_sqrt(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @sqrt(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @sqrt_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @sqrt_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_sqrtf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @sqrtf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @tan(double) #0<br class="">
-declare float @tanf(float) #0<br class="">
-declare double @llvm.tan.f64(double) #0<br class="">
-declare float @llvm.tan.f32(float) #0<br class="">
-<br class="">
-define void @tan_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @tan_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_tan(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @tan(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @tan_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @tan_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_tanf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @tanf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @tanh(double) #0<br class="">
-declare float @tanhf(float) #0<br class="">
-declare double @llvm.tanh.f64(double) #0<br class="">
-declare float @llvm.tanh.f32(float) #0<br class="">
-<br class="">
-define void @tanh_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @tanh_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_tanh(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @tanh(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @tanh_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @tanh_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_tanhf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @tanhf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-declare double @tgamma(double) #0<br class="">
-declare float @tgammaf(float) #0<br class="">
-declare double @llvm.tgamma.f64(double) #0<br class="">
-declare float @llvm.tgamma.f32(float) #0<br class="">
-<br class="">
-define void @tgamma_f64(double* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @tgamma_f64(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <2 x double> @_ZGVnN2v_tgamma(<2 x double> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to double<br class="">
-  %call = tail call double @tgamma(double %conv)<br class="">
-  %arrayidx = getelementptr inbounds double, double* %varray, i64 %iv<br class="">
-  store double %call, double* %arrayidx, align 8<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
-define void @tgamma_f32(float* nocapture %varray) {<br class="">
-  ; CHECK-LABEL: @tgamma_f32(<br class="">
-  ; CHECK:    [[TMP5:%.*]] = call <4 x float> @_ZGVnN4v_tgammaf(<4 x float> [[TMP4:%.*]])<br class="">
-  ; CHECK:    ret void<br class="">
-  ;<br class="">
-  entry:<br class="">
-  br label %for.body<br class="">
-<br class="">
-  for.body:<br class="">
-  %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]<br class="">
-  %tmp = trunc i64 %iv to i32<br class="">
-  %conv = sitofp i32 %tmp to float<br class="">
-  %call = tail call float @tgammaf(float %conv)<br class="">
-  %arrayidx = getelementptr inbounds float, float* %varray, i64 %iv<br class="">
-  store float %call, float* %arrayidx, align 4<br class="">
-  %iv.next = add nuw nsw i64 %iv, 1<br class="">
-  %exitcond = icmp eq i64 %iv.next, 1000<br class="">
-  br i1 %exitcond, label %for.end, label %for.body<br class="">
-<br class="">
-  for.end:<br class="">
-  ret void<br class="">
-}<br class="">
-<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
llvm-commits mailing list<br class="">
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="">llvm-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="">
</blockquote>
</div>
</div>
</div>

</div></blockquote></div><br class=""></div></body></html>