xref: /llvm-project/llvm/test/CodeGen/DirectX/radians.ll (revision 0b8fec69464ce4a7e759137b091a6b7500458f36)
11e75d086SAdam Yang; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
21e75d086SAdam Yang; RUN: opt -S -dxil-intrinsic-expansion -scalarizer -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
31e75d086SAdam Yang
41e75d086SAdam Yangdeclare half @llvm.dx.radians.f16(half)
51e75d086SAdam Yangdeclare float @llvm.dx.radians.f32(float)
61e75d086SAdam Yang
71e75d086SAdam Yangdeclare <4 x half> @llvm.dx.radians.v4f16(<4 x half>)
81e75d086SAdam Yangdeclare <4 x float> @llvm.dx.radians.v4f32(<4 x float>)
91e75d086SAdam Yang
101e75d086SAdam Yangdefine noundef half @radians_half(half noundef %a) {
111e75d086SAdam Yang; CHECK-LABEL: define noundef half @radians_half(
121e75d086SAdam Yang; CHECK-SAME: half noundef [[A:%.*]]) {
131e75d086SAdam Yang; CHECK-NEXT:  [[ENTRY:.*:]]
141e75d086SAdam Yang; CHECK-NEXT:    [[TMP0:%.*]] = fmul half [[A]], 0xH2478
151e75d086SAdam Yang; CHECK-NEXT:    ret half [[TMP0]]
161e75d086SAdam Yang;
171e75d086SAdam Yangentry:
181e75d086SAdam Yang  %elt.radians = call half @llvm.dx.radians.f16(half %a)
191e75d086SAdam Yang  ret half %elt.radians
201e75d086SAdam Yang}
211e75d086SAdam Yang
221e75d086SAdam Yangdefine noundef float @radians_float(float noundef %a) {
231e75d086SAdam Yang; CHECK-LABEL: define noundef float @radians_float(
241e75d086SAdam Yang; CHECK-SAME: float noundef [[A:%.*]]) {
251e75d086SAdam Yang; CHECK-NEXT:  [[ENTRY:.*:]]
261e75d086SAdam Yang; CHECK-NEXT:    [[TMP0:%.*]] = fmul float [[A]], 0x3F91DF46A0000000
271e75d086SAdam Yang; CHECK-NEXT:    ret float [[TMP0]]
281e75d086SAdam Yang;
291e75d086SAdam Yangentry:
301e75d086SAdam Yang  %elt.radians = call float @llvm.dx.radians.f32(float %a)
311e75d086SAdam Yang  ret float %elt.radians
321e75d086SAdam Yang}
331e75d086SAdam Yang
341e75d086SAdam Yangdefine noundef <4 x half> @radians_half_vector(<4 x half> noundef %a) {
351e75d086SAdam Yang; CHECK-LABEL: define noundef <4 x half> @radians_half_vector(
361e75d086SAdam Yang; CHECK-SAME: <4 x half> noundef [[A:%.*]]) {
371e75d086SAdam Yang; CHECK-NEXT:  [[ENTRY:.*:]]
381e75d086SAdam Yang; CHECK: [[ee0:%.*]] = extractelement <4 x half> [[A]], i64 0
391e75d086SAdam Yang; CHECK: [[ie0:%.*]] = fmul half [[ee0]], 0xH2478
401e75d086SAdam Yang; CHECK: [[ee1:%.*]] = extractelement <4 x half> [[A]], i64 1
411e75d086SAdam Yang; CHECK: [[ie1:%.*]] = fmul half [[ee1]], 0xH2478
421e75d086SAdam Yang; CHECK: [[ee2:%.*]] = extractelement <4 x half> [[A]], i64 2
431e75d086SAdam Yang; CHECK: [[ie2:%.*]] = fmul half [[ee2]], 0xH2478
441e75d086SAdam Yang; CHECK: [[ee3:%.*]] = extractelement <4 x half> [[A]], i64 3
451e75d086SAdam Yang; CHECK: [[ie3:%.*]] = fmul half [[ee3]], 0xH2478
461e75d086SAdam Yang; CHECK: [[TMP0:%.*]] = insertelement <4 x half> poison, half [[ie0]], i64 0
47*0b8fec69SJustin Bogner; CHECK: [[TMP1:%.*]] = insertelement <4 x half> [[TMP0]], half [[ie1]], i64 1
48*0b8fec69SJustin Bogner; CHECK: [[TMP2:%.*]] = insertelement <4 x half> [[TMP1]], half [[ie2]], i64 2
49*0b8fec69SJustin Bogner; CHECK: [[TMP3:%.*]] = insertelement <4 x half> [[TMP2]], half [[ie3]], i64 3
501e75d086SAdam Yang; CHECK: ret <4 x half> [[TMP3]]
511e75d086SAdam Yang;
521e75d086SAdam Yangentry:
531e75d086SAdam Yang  %elt.radians = call <4 x half> @llvm.dx.radians.v4f16(<4 x half> %a)
541e75d086SAdam Yang  ret <4 x half> %elt.radians
551e75d086SAdam Yang}
561e75d086SAdam Yang
571e75d086SAdam Yangdefine noundef <4 x float> @radians_float_vector(<4 x float> noundef %a) {
581e75d086SAdam Yang; CHECK-LABEL: define noundef <4 x float> @radians_float_vector(
591e75d086SAdam Yang; CHECK-SAME: <4 x float> noundef [[A:%.*]]) {
601e75d086SAdam Yang; CHECK-NEXT:  [[ENTRY:.*:]]
611e75d086SAdam Yang; CHECK: [[ee0:%.*]] = extractelement <4 x float> [[A]], i64 0
621e75d086SAdam Yang; CHECK: [[ie0:%.*]] = fmul float [[ee0]], 0x3F91DF46A0000000
631e75d086SAdam Yang; CHECK: [[ee1:%.*]] = extractelement <4 x float> [[A]], i64 1
641e75d086SAdam Yang; CHECK: [[ie1:%.*]] = fmul float [[ee1]], 0x3F91DF46A0000000
651e75d086SAdam Yang; CHECK: [[ee2:%.*]] = extractelement <4 x float> [[A]], i64 2
661e75d086SAdam Yang; CHECK: [[ie2:%.*]] = fmul float [[ee2]], 0x3F91DF46A0000000
671e75d086SAdam Yang; CHECK: [[ee3:%.*]] = extractelement <4 x float> [[A]], i64 3
681e75d086SAdam Yang; CHECK: [[ie3:%.*]] = fmul float [[ee3]], 0x3F91DF46A0000000
691e75d086SAdam Yang; CHECK: [[TMP0:%.*]] = insertelement <4 x float> poison, float [[ie0]], i64 0
70*0b8fec69SJustin Bogner; CHECK: [[TMP1:%.*]] = insertelement <4 x float> [[TMP0]], float [[ie1]], i64 1
71*0b8fec69SJustin Bogner; CHECK: [[TMP2:%.*]] = insertelement <4 x float> [[TMP1]], float [[ie2]], i64 2
72*0b8fec69SJustin Bogner; CHECK: [[TMP3:%.*]] = insertelement <4 x float> [[TMP2]], float [[ie3]], i64 3
731e75d086SAdam Yang; CHECK: ret <4 x float> [[TMP3]]
741e75d086SAdam Yang;
751e75d086SAdam Yangentry:
761e75d086SAdam Yang  %elt.radians = call <4 x float> @llvm.dx.radians.v4f32(<4 x float> %a)
771e75d086SAdam Yang  ret <4 x float> %elt.radians
781e75d086SAdam Yang}
79