added support for native and double precision trigonometry/transendentals

This commit is contained in:
Evghenii
2014-02-07 15:28:39 +01:00
parent 81aa19a8f0
commit 70a9b286e5
18 changed files with 340 additions and 108 deletions

View File

@@ -694,3 +694,5 @@ define <16 x double> @__max_varying_double(<16 x double>, <16 x double>) nounwin
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -564,3 +564,6 @@ gen_scatter(double)
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -513,3 +513,6 @@ define <4 x double> @__max_varying_double(<4 x double>, <4 x double>) nounwind r
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -997,3 +997,6 @@ define_avgs()
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -191,13 +191,9 @@ declare <WIDTH x double> @__max_varying_double(<WIDTH x double>,
declare float @__rsqrt_uniform_float(float) nounwind readnone
declare float @__rcp_uniform_float(float) nounwind readnone
declare double @__rsqrt_uniform_double(double) nounwind readnone
declare double @__rcp_uniform_double(double) nounwind readnone
declare float @__sqrt_uniform_float(float) nounwind readnone
declare <WIDTH x float> @__rcp_varying_float(<WIDTH x float>) nounwind readnone
declare <WIDTH x float> @__rsqrt_varying_float(<WIDTH x float>) nounwind readnone
declare <WIDTH x double> @__rcp_varying_double(<WIDTH x double>) nounwind readnone
declare <WIDTH x double> @__rsqrt_varying_double(<WIDTH x double>) nounwind readnone
declare <WIDTH x float> @__sqrt_varying_float(<WIDTH x float>) nounwind readnone
@@ -393,3 +389,11 @@ declare void @__prefetch_read_uniform_nt(i8 * nocapture) nounwind
define_avgs()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; reciprocals in double precision, if supported
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -521,3 +521,6 @@ define <8 x i16> @__avg_down_int16(<8 x i16>, <8 x i16>) nounwind readnone {
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -491,3 +491,6 @@ define <4 x i16> @__avg_down_int16(<4 x i16>, <4 x i16>) nounwind readnone {
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -587,3 +587,6 @@ define <16 x i16> @__avg_down_int16(<16 x i16>, <16 x i16>) nounwind readnone {
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -658,3 +658,6 @@ define <8 x double> @__max_varying_double(<8 x double>, <8 x double>) nounwind r
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -593,3 +593,6 @@ gen_scatter(double)
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -494,3 +494,6 @@ define_down_avgs()
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -496,3 +496,6 @@ define_down_avgs()
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -597,3 +597,6 @@ define_avgs()
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -520,3 +520,6 @@ define_avgs()
rsqrtd_decl()
rcpd_decl()
transcendetals_decl()
trigonometry_decl()

View File

@@ -2106,13 +2106,6 @@ declare void
@__pseudo_scatter_base_offsets64_double(i8 * nocapture, i32, <WIDTH x i64>,
<WIDTH x double>, <WIDTH x MASK>) nounwind
declare float @__log_uniform_float(float) nounwind readnone
declare <WIDTH x float> @__log_varying_float(<WIDTH x float>) nounwind readnone
declare float @__exp_uniform_float(float) nounwind readnone
declare <WIDTH x float> @__exp_varying_float(<WIDTH x float>) nounwind readnone
declare float @__pow_uniform_float(float, float) nounwind readnone
declare <WIDTH x float> @__pow_varying_float(<WIDTH x float>, <WIDTH x float>) nounwind readnone
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
declare void @__use8(<WIDTH x i8>)
@@ -4541,3 +4534,58 @@ define(`rcpd_decl', `
declare double @__rcp_uniform_double(double)
declare <WIDTH x double> @__rcp_varying_double(<WIDTH x double>)
')
define(`transcendetals_decl',`
declare float @__log_uniform_float(float) nounwind readnone
declare <WIDTH x float> @__log_varying_float(<WIDTH x float>) nounwind readnone
declare float @__exp_uniform_float(float) nounwind readnone
declare <WIDTH x float> @__exp_varying_float(<WIDTH x float>) nounwind readnone
declare float @__pow_uniform_float(float, float) nounwind readnone
declare <WIDTH x float> @__pow_varying_float(<WIDTH x float>, <WIDTH x float>) nounwind readnone
declare double @__log_uniform_double(double) nounwind readnone
declare <WIDTH x double> @__log_varying_double(<WIDTH x double>) nounwind readnone
declare double @__exp_uniform_double(double) nounwind readnone
declare <WIDTH x double> @__exp_varying_double(<WIDTH x double>) nounwind readnone
declare double @__pow_uniform_double(double, double) nounwind readnone
declare <WIDTH x double> @__pow_varying_double(<WIDTH x double>, <WIDTH x double>) nounwind readnone
')
define(`trigonometry_decl',`
declare <WIDTH x float> @__sin_varying_float(<WIDTH x float>) nounwind readnone
declare <WIDTH x float> @__asin_varying_float(<WIDTH x float>) nounwind readnone
declare <WIDTH x float> @__cos_varying_float(<WIDTH x float>) nounwind readnone
declare <WIDTH x float> @__acos_varying_float(<WIDTH x float>) nounwind readnone
declare void @__sincos_varying_float(<WIDTH x float>, <WIDTH x float>*, <WIDTH x float>*) nounwind readnone
declare <WIDTH x float> @__tan_varying_float(<WIDTH x float>) nounwind readnone
declare <WIDTH x float> @__atan_varying_float(<WIDTH x float>) nounwind readnone
declare <WIDTH x float> @__atan2_varying_float(<WIDTH x float>,<WIDTH x float>) nounwind readnone
declare float @__sin_uniform_float(float) nounwind readnone
declare float @__asin_uniform_float(float) nounwind readnone
declare float @__cos_uniform_float(float) nounwind readnone
declare float @__acos_uniform_float(float) nounwind readnone
declare void @__sincos_uniform_float(float, float*, float*) nounwind readnone
declare float @__tan_uniform_float(float) nounwind readnone
declare float @__atan_uniform_float(float) nounwind readnone
declare float @__atan2_uniform_float(float,float) nounwind readnone
declare <WIDTH x double> @__sin_varying_double(<WIDTH x double>) nounwind readnone
declare <WIDTH x double> @__asin_varying_double(<WIDTH x double>) nounwind readnone
declare <WIDTH x double> @__cos_varying_double(<WIDTH x double>) nounwind readnone
declare <WIDTH x double> @__acos_varying_double(<WIDTH x double>) nounwind readnone
declare void @__sincos_varying_double(<WIDTH x double>, <WIDTH x double>*, <WIDTH x double>*) nounwind readnone
declare <WIDTH x double> @__tan_varying_double(<WIDTH x double>) nounwind readnone
declare <WIDTH x double> @__atan_varying_double(<WIDTH x double>) nounwind readnone
declare <WIDTH x double> @__atan2_varying_double(<WIDTH x double>,<WIDTH x double>) nounwind readnone
declare double @__sin_uniform_double(double) nounwind readnone
declare double @__asin_uniform_double(double) nounwind readnone
declare double @__cos_uniform_double(double) nounwind readnone
declare double @__acos_uniform_double(double) nounwind readnone
declare void @__sincos_uniform_double(double, double*, double*) nounwind readnone
declare double @__tan_uniform_double(double) nounwind readnone
declare double @__atan_uniform_double(double) nounwind readnone
declare double @__atan2_uniform_double(double,double) nounwind readnone
')