From 777d33e3b78011f4f49189a4eeb5268152a897b4 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 15 Oct 2007 20:30:11 +0000 Subject: [PATCH] Document the new llvm.sin, llvm.cos, and llvm.pow intrinsics. Feedback is welcome! llvm-svn: 43007 --- docs/LangRef.html | 140 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 136 insertions(+), 4 deletions(-) diff --git a/docs/LangRef.html b/docs/LangRef.html index dac34f8f7b5..d21057b5d30 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -177,6 +177,9 @@
  • 'llvm.memset.*' Intrinsic
  • 'llvm.sqrt.*' Intrinsic
  • 'llvm.powi.*' Intrinsic
  • +
  • 'llvm.sin.*' Intrinsic
  • +
  • 'llvm.cos.*' Intrinsic
  • +
  • 'llvm.pow.*' Intrinsic
  • Bit Manipulation Intrinsics @@ -4492,7 +4495,8 @@ this can be specified as the fourth argument, otherwise it should be set to 0 or
    Syntax:

    This is an overloaded intrinsic. You can use llvm.sqrt on any -floating point type. Not all targets support all types however. +floating point or vector of floating point type. Not all targets support all +types however.

       declare float     @llvm.sqrt.f32(float %Val)
       declare double    @llvm.sqrt.f64(double %Val)
    @@ -4505,7 +4509,7 @@ floating point type. Not all targets support all types however.
     
     

    The 'llvm.sqrt' intrinsics return the sqrt of the specified operand, -returning the same value as the libm 'sqrt' function would. Unlike +returning the same value as the libm 'sqrt' functions would. Unlike sqrt in libm, however, llvm.sqrt has undefined behavior for negative numbers (which allows for better optimization).

    @@ -4533,7 +4537,8 @@ floating point number.
    Syntax:

    This is an overloaded intrinsic. You can use llvm.powi on any -floating point type. Not all targets support all types however. +floating point or vector of floating point type. Not all targets support all +types however.

       declare float     @llvm.powi.f32(float  %Val, i32 %power)
       declare double    @llvm.powi.f64(double %Val, i32 %power)
    @@ -4547,7 +4552,8 @@ floating point type. Not all targets support all types however.
     

    The 'llvm.powi.*' intrinsics return the first operand raised to the specified (positive or negative) power. The order of evaluation of -multiplications is not defined. +multiplications is not defined. When a vector of floating point type is +used, the second argument remains a scalar integer value.

    Arguments:
    @@ -4564,6 +4570,132 @@ This function returns the first value raised to the second power with an unspecified sequence of rounding operations.

    + + + +
    + +
    Syntax:
    +

    This is an overloaded intrinsic. You can use llvm.sin on any +floating point or vector of floating point type. Not all targets support all +types however. +

    +  declare float     @llvm.sin.f32(float  %Val)
    +  declare double    @llvm.sin.f64(double %Val)
    +  declare x86_fp80  @llvm.sin.f80(x86_fp80  %Val)
    +  declare fp128     @llvm.sin.f128(fp128 %Val)
    +  declare ppc_fp128 @llvm.sin.ppcf128(ppc_fp128  %Val)
    +
    + +
    Overview:
    + +

    +The 'llvm.sin.*' intrinsics return the sine of the operand. +

    + +
    Arguments:
    + +

    +The argument and return value are floating point numbers of the same type. +

    + +
    Semantics:
    + +

    +This function returns the sine of the specified operand, returning the +same values as the libm sin functions would, and handles error +conditions in the same way, unless the --enable-unsafe-fp-math is enabled +during code generation, in which case the result may have different +precision and if any errors occur the behavior is undefined.

    +
    + + + + +
    + +
    Syntax:
    +

    This is an overloaded intrinsic. You can use llvm.cos on any +floating point or vector of floating point type. Not all targets support all +types however. +

    +  declare float     @llvm.cos.f32(float  %Val)
    +  declare double    @llvm.cos.f64(double %Val)
    +  declare x86_fp80  @llvm.cos.f80(x86_fp80  %Val)
    +  declare fp128     @llvm.cos.f128(fp128 %Val)
    +  declare ppc_fp128 @llvm.cos.ppcf128(ppc_fp128  %Val)
    +
    + +
    Overview:
    + +

    +The 'llvm.cos.*' intrinsics return the cosine of the operand. +

    + +
    Arguments:
    + +

    +The argument and return value are floating point numbers of the same type. +

    + +
    Semantics:
    + +

    +This function returns the cosine of the specified operand, returning the +same values as the libm cos functions would, and handles error +conditions in the same way, unless the --enable-unsafe-fp-math is enabled +during code generation, in which case the result may have different +precision and if any errors occur the behavior is undefined.

    +
    + + + + +
    + +
    Syntax:
    +

    This is an overloaded intrinsic. You can use llvm.pow on any +floating point or vector of floating point type. Not all targets support all +types however. +

    +  declare float     @llvm.pow.f32(float  %Val, float %Power)
    +  declare double    @llvm.pow.f64(double %Val, double %Power)
    +  declare x86_fp80  @llvm.pow.f80(x86_fp80  %Val, x86_fp80 %Power)
    +  declare fp128     @llvm.pow.f128(fp128 %Val, fp128 %Power)
    +  declare ppc_fp128 @llvm.pow.ppcf128(ppc_fp128  %Val, ppc_fp128 Power)
    +
    + +
    Overview:
    + +

    +The 'llvm.pow.*' intrinsics return the first operand raised to the +specified (positive or negative) power. +

    + +
    Arguments:
    + +

    +The second argument is a floating point power, and the first is a value to +raise to that power. +

    + +
    Semantics:
    + +

    +This function returns the first value raised to the second power, +returning the +same values as the libm pow functions would, and handles error +conditions in the same way, unless the --enable-unsafe-fp-math is enabled +during code generation, in which case the result may have different +precision and if any errors occur the behavior is undefined.

    +
    +