mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-29 22:30:33 +00:00
Add llvm.fabs intrinsic.
llvm-svn: 157594
This commit is contained in:
parent
790d8456b5
commit
b5121f5f06
@ -259,6 +259,7 @@ let Properties = [IntrReadMem] in {
|
||||
def int_log2 : 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_fabs : Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;
|
||||
}
|
||||
|
||||
let Properties = [IntrNoMem] in {
|
||||
|
@ -4920,6 +4920,11 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) {
|
||||
case Intrinsic::pow:
|
||||
visitPow(I);
|
||||
return 0;
|
||||
case Intrinsic::fabs:
|
||||
setValue(&I, DAG.getNode(ISD::FABS, dl,
|
||||
getValue(I.getArgOperand(0)).getValueType(),
|
||||
getValue(I.getArgOperand(0))));
|
||||
return 0;
|
||||
case Intrinsic::fma:
|
||||
setValue(&I, DAG.getNode(ISD::FMA, dl,
|
||||
getValue(I.getArgOperand(0)).getValueType(),
|
||||
|
21
test/CodeGen/NVPTX/intrinsics.ll
Normal file
21
test/CodeGen/NVPTX/intrinsics.ll
Normal file
@ -0,0 +1,21 @@
|
||||
; RUN: llc < %s -march=nvptx -mcpu=sm_10 | FileCheck %s
|
||||
; RUN: llc < %s -march=nvptx64 -mcpu=sm_10 | FileCheck %s
|
||||
; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
|
||||
; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s
|
||||
|
||||
define ptx_device float @test_fabsf(float %f) {
|
||||
; CHECK: abs.f32 %f0, %f0;
|
||||
; CHECK: ret;
|
||||
%x = call float @llvm.fabs.f32(float %f)
|
||||
ret float %x
|
||||
}
|
||||
|
||||
define ptx_device double @test_fabs(double %d) {
|
||||
; CHECK: abs.f64 %fl0, %fl0;
|
||||
; CHECK: ret;
|
||||
%x = call double @llvm.fabs.f64(double %d)
|
||||
ret double %x
|
||||
}
|
||||
|
||||
declare float @llvm.fabs.f32(float)
|
||||
declare double @llvm.fabs.f64(double)
|
Loading…
Reference in New Issue
Block a user