Skip to content

Commit 0b1bca1

Browse files
maarquitos14jsji
authored andcommitted
Add translation for Intrinsic::atan2 (#2917)
Add translation for atan2 LLVM intrinsic which is mapped to corresponding OpenCL extended instructions. Original commit: KhronosGroup/SPIRV-LLVM-Translator@eb4cdb2e96d9953
1 parent 52e2924 commit 0b1bca1

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

llvm-spirv/lib/SPIRV/SPIRVUtil.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1855,6 +1855,7 @@ bool checkTypeForSPIRVExtendedInstLowering(IntrinsicInst *II, SPIRVModule *BM) {
18551855
case Intrinsic::acos:
18561856
case Intrinsic::asin:
18571857
case Intrinsic::atan:
1858+
case Intrinsic::atan2:
18581859
case Intrinsic::ceil:
18591860
case Intrinsic::copysign:
18601861
case Intrinsic::cos:

llvm-spirv/lib/SPIRV/SPIRVWriter.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3999,6 +3999,8 @@ static SPIRVWord getBuiltinIdForIntrinsic(Intrinsic::ID IID) {
39993999
return OpenCLLIB::Asin;
40004000
case Intrinsic::atan:
40014001
return OpenCLLIB::Atan;
4002+
case Intrinsic::atan2:
4003+
return OpenCLLIB::Atan2;
40024004
case Intrinsic::ceil:
40034005
return OpenCLLIB::Ceil;
40044006
case Intrinsic::copysign:
@@ -4255,6 +4257,7 @@ SPIRVValue *LLVMToSPIRVBase::transIntrinsicInst(IntrinsicInst *II,
42554257
BB);
42564258
}
42574259
// Binary FP intrinsics
4260+
case Intrinsic::atan2:
42584261
case Intrinsic::copysign:
42594262
case Intrinsic::pow:
42604263
case Intrinsic::powi:

llvm-spirv/test/llvm-intrinsics/fp-intrinsics.ll

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,3 +422,17 @@ entry:
422422
}
423423

424424
declare float @llvm.tanh.f32(float)
425+
426+
; CHECK: Function
427+
; CHECK: FunctionParameter {{[0-9]+}} [[x:[0-9]+]]
428+
; CHECK: FunctionParameter {{[0-9]+}} [[y:[0-9]+]]
429+
; CHECK: ExtInst [[var1]] {{[0-9]+}} [[extinst_id]] atan2 [[y]] [[x]]
430+
; CHECK: FunctionEnd
431+
432+
define spir_func float @TestAtan2(float %x, float %y) {
433+
entry:
434+
%t = tail call float @llvm.atan2.f32(float %y, float %x)
435+
ret float %t
436+
}
437+
438+
declare float @llvm.atan2.f32(float, float)

0 commit comments

Comments
 (0)