parent
dce0696a36
commit
0b3d782933
|
@ -258,6 +258,7 @@
|
||||||
<li><a href="#int_log">'<tt>llvm.log.*</tt>' Intrinsic</a></li>
|
<li><a href="#int_log">'<tt>llvm.log.*</tt>' Intrinsic</a></li>
|
||||||
<li><a href="#int_fma">'<tt>llvm.fma.*</tt>' Intrinsic</a></li>
|
<li><a href="#int_fma">'<tt>llvm.fma.*</tt>' Intrinsic</a></li>
|
||||||
<li><a href="#int_fabs">'<tt>llvm.fabs.*</tt>' Intrinsic</a></li>
|
<li><a href="#int_fabs">'<tt>llvm.fabs.*</tt>' Intrinsic</a></li>
|
||||||
|
<li><a href="#int_floor">'<tt>llvm.floor.*</tt>' Intrinsic</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#int_manip">Bit Manipulation Intrinsics</a>
|
<li><a href="#int_manip">Bit Manipulation Intrinsics</a>
|
||||||
|
@ -7544,6 +7545,40 @@ LLVM</a>.</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- _______________________________________________________________________ -->
|
||||||
|
<h4>
|
||||||
|
<a name="int_floor">'<tt>llvm.floor.*</tt>' Intrinsic</a>
|
||||||
|
</h4>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<h5>Syntax:</h5>
|
||||||
|
<p>This is an overloaded intrinsic. You can use <tt>llvm.floor</tt> on any
|
||||||
|
floating point or vector of floating point type. Not all targets support all
|
||||||
|
types however.</p>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
declare float @llvm.floor.f32(float %Val)
|
||||||
|
declare double @llvm.floor.f64(double %Val)
|
||||||
|
declare x86_fp80 @llvm.floor.f80(x86_fp80 %Val)
|
||||||
|
declare fp128 @llvm.floor.f128(fp128 %Val)
|
||||||
|
declare ppc_fp128 @llvm.floor.ppcf128(ppc_fp128 %Val)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h5>Overview:</h5>
|
||||||
|
<p>The '<tt>llvm.floor.*</tt>' intrinsics return the floor of
|
||||||
|
the operand.</p>
|
||||||
|
|
||||||
|
<h5>Arguments:</h5>
|
||||||
|
<p>The argument and return value are floating point numbers of the same
|
||||||
|
type.</p>
|
||||||
|
|
||||||
|
<h5>Semantics:</h5>
|
||||||
|
<p>This function returns the same values as the libm <tt>floor</tt> functions
|
||||||
|
would, and handles error conditions in the same way.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ======================================================================= -->
|
<!-- ======================================================================= -->
|
||||||
|
|
|
@ -261,6 +261,7 @@ let Properties = [IntrReadMem] in {
|
||||||
def int_exp : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;
|
def int_exp : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;
|
||||||
def int_exp2 : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;
|
def int_exp2 : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;
|
||||||
def int_fabs : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;
|
def int_fabs : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;
|
||||||
|
def int_floor : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
let Properties = [IntrNoMem] in {
|
let Properties = [IntrNoMem] in {
|
||||||
|
|
|
@ -4929,6 +4929,11 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||||
getValue(I.getArgOperand(0)).getValueType(),
|
getValue(I.getArgOperand(0)).getValueType(),
|
||||||
getValue(I.getArgOperand(0))));
|
getValue(I.getArgOperand(0))));
|
||||||
return 0;
|
return 0;
|
||||||
|
case Intrinsic::floor:
|
||||||
|
setValue(&I, DAG.getNode(ISD::FFLOOR, dl,
|
||||||
|
getValue(I.getArgOperand(0)).getValueType(),
|
||||||
|
getValue(I.getArgOperand(0))));
|
||||||
|
return 0;
|
||||||
case Intrinsic::fma:
|
case Intrinsic::fma:
|
||||||
setValue(&I, DAG.getNode(ISD::FMA, dl,
|
setValue(&I, DAG.getNode(ISD::FMA, dl,
|
||||||
getValue(I.getArgOperand(0)).getValueType(),
|
getValue(I.getArgOperand(0)).getValueType(),
|
||||||
|
|
Loading…
Reference in New Issue