xref: /llvm-project/llvm/test/CodeGen/SPIRV/hlsl-intrinsics/atan.ll (revision cf3d6fded9eaf1372ccfde1d49dd91df6762d98c)
1*cf3d6fdeSNathan Gauër; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s
22ae6889dSFarzon Lotfi; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-unknown %s -o - -filetype=obj | spirv-val %}
32ae6889dSFarzon Lotfi
42ae6889dSFarzon Lotfi; CHECK-DAG: %[[#op_ext_glsl:]] = OpExtInstImport "GLSL.std.450"
52ae6889dSFarzon Lotfi; CHECK-DAG: %[[#float_32:]] = OpTypeFloat 32
62ae6889dSFarzon Lotfi; CHECK-DAG: %[[#float_16:]] = OpTypeFloat 16
72ae6889dSFarzon Lotfi; CHECK-DAG: %[[#vec4_float_32:]] = OpTypeVector %[[#float_32]] 4
82ae6889dSFarzon Lotfi; CHECK-DAG: %[[#vec4_float_16:]] = OpTypeVector %[[#float_16]] 4
92ae6889dSFarzon Lotfi
102ae6889dSFarzon Lotfidefine noundef float @atan_float(float noundef %a) {
112ae6889dSFarzon Lotfientry:
122ae6889dSFarzon Lotfi; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#]]
132ae6889dSFarzon Lotfi; CHECK: %[[#]] = OpExtInst %[[#float_32]] %[[#op_ext_glsl]] Atan %[[#arg0]]
142ae6889dSFarzon Lotfi  %elt.atan = call float @llvm.atan.f32(float %a)
152ae6889dSFarzon Lotfi  ret float %elt.atan
162ae6889dSFarzon Lotfi}
172ae6889dSFarzon Lotfi
182ae6889dSFarzon Lotfidefine noundef half @atan_half(half noundef %a) {
192ae6889dSFarzon Lotfientry:
202ae6889dSFarzon Lotfi; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#]]
212ae6889dSFarzon Lotfi; CHECK: %[[#]] = OpExtInst %[[#float_16]] %[[#op_ext_glsl]] Atan %[[#arg0]]
222ae6889dSFarzon Lotfi  %elt.atan = call half @llvm.atan.f16(half %a)
232ae6889dSFarzon Lotfi  ret half %elt.atan
242ae6889dSFarzon Lotfi}
252ae6889dSFarzon Lotfi
262ae6889dSFarzon Lotfidefine noundef <4 x float> @atan_float4(<4 x float> noundef %a) {
272ae6889dSFarzon Lotfientry:
282ae6889dSFarzon Lotfi  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#]]
292ae6889dSFarzon Lotfi  ; CHECK: %[[#]] = OpExtInst %[[#vec4_float_32]] %[[#op_ext_glsl]] Atan %[[#arg0]]
302ae6889dSFarzon Lotfi  %elt.atan = call <4 x float> @llvm.atan.v4f32(<4 x float> %a)
312ae6889dSFarzon Lotfi  ret <4 x float> %elt.atan
322ae6889dSFarzon Lotfi}
332ae6889dSFarzon Lotfi
342ae6889dSFarzon Lotfidefine noundef <4 x half> @atan_half4(<4 x half> noundef %a) {
352ae6889dSFarzon Lotfientry:
362ae6889dSFarzon Lotfi  ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#]]
372ae6889dSFarzon Lotfi  ; CHECK: %[[#]] = OpExtInst %[[#vec4_float_16]] %[[#op_ext_glsl]] Atan %[[#arg0]]
382ae6889dSFarzon Lotfi  %elt.atan = call <4 x half> @llvm.atan.v4f16(<4 x half> %a)
392ae6889dSFarzon Lotfi  ret <4 x half> %elt.atan
402ae6889dSFarzon Lotfi}
412ae6889dSFarzon Lotfi
422ae6889dSFarzon Lotfideclare half @llvm.atan.f16(half)
432ae6889dSFarzon Lotfideclare float @llvm.atan.f32(float)
442ae6889dSFarzon Lotfideclare <4 x half> @llvm.atan.v4f16(<4 x half>)
452ae6889dSFarzon Lotfideclare <4 x float> @llvm.atan.v4f32(<4 x float>)
46