Loading libs/rs/java/tests/src/com/android/rs/test/RSTestCore.java +1 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ public class RSTestCore { unitTests.add(new UT_rsdebug(this, mRes, mCtx)); unitTests.add(new UT_rstime(this, mRes, mCtx)); unitTests.add(new UT_rstypes(this, mRes, mCtx)); unitTests.add(new UT_math(this, mRes, mCtx)); unitTests.add(new UT_fp_mad(this, mRes, mCtx)); /* unitTests.add(new UnitTest(null, "<Pass>", 1)); Loading libs/rs/java/tests/src/com/android/rs/test/UT_math.java 0 → 100644 +40 −0 Original line number Diff line number Diff line /* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.rs.test; import android.content.Context; import android.content.res.Resources; import android.renderscript.*; public class UT_math extends UnitTest { private Resources mRes; protected UT_math(RSTestCore rstc, Resources res, Context ctx) { super(rstc, "Math", ctx); mRes = res; } public void run() { RenderScript pRS = RenderScript.create(mCtx); ScriptC_math s = new ScriptC_math(pRS, mRes, R.raw.math); pRS.setMessageHandler(mRsMessage); s.invoke_math_test(0, 0); pRS.finish(); waitForMessage(); pRS.destroy(); } } libs/rs/java/tests/src/com/android/rs/test/math.rs 0 → 100644 +65 −0 Original line number Diff line number Diff line #include "shared.rsh" // Testing math library volatile float f1; volatile float2 f2; volatile float3 f3; volatile float4 f4; #define TEST_F(fnc, var) \ rsDebug("Testing " #fnc, 0); \ var##1 = fnc(var##1); \ var##2 = fnc(var##2); \ var##3 = fnc(var##3); \ var##4 = fnc(var##4); #define TEST_FP(fnc, var) \ rsDebug("Testing " #fnc, 0); \ var##1 = fnc(var##1, (float*) &f1); \ var##2 = fnc(var##2, (float2*) &f2); \ var##3 = fnc(var##3, (float3*) &f3); \ var##4 = fnc(var##4, (float4*) &f4); #define TEST_F2(fnc, var) \ rsDebug("Testing " #fnc, 0); \ var##1 = fnc(var##1, var##1); \ var##2 = fnc(var##2, var##2); \ var##3 = fnc(var##3, var##3); \ var##4 = fnc(var##4, var##4); static bool test_math(uint32_t index) { bool failed = false; start(); TEST_F(cos, f); TEST_FP(modf, f); TEST_F2(pow, f); TEST_F(sin, f); TEST_F(sqrt, f); float time = end(index); if (failed) { rsDebug("test_math FAILED", time); } else { rsDebug("test_math PASSED", time); } return failed; } void math_test(uint32_t index, int test_num) { bool failed = false; failed |= test_math(index); if (failed) { rsSendToClientBlocking(RS_MSG_TEST_FAILED); } else { rsSendToClientBlocking(RS_MSG_TEST_PASSED); } } libs/rs/rsScriptC_LibCL.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ static ScriptCState::SymbolTable_t gSyms[] = { { "_Z5log1pf", (void *)&log1pf, true }, //{ "logb", (void *)&, true }, //{ "mad", (void *)&, true }, { "modf", (void *)&modff, true }, { "_Z4modffPf", (void *)&modff, true }, //{ "nan", (void *)&, true }, { "_Z9nextafterff", (void *)&nextafterf, true }, { "_Z3powff", (void *)&powf, true }, Loading libs/rs/scriptc/rs_cl.rsh +36 −4 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ _RS_STATIC float4 __attribute__((overloadable)) fnc(float4 v1, float4 v2) { \ r.x = fnc(v1.x, v2.x); \ r.y = fnc(v1.y, v2.y); \ r.z = fnc(v1.z, v2.z); \ r.w = fnc(v1.w, v2.z); \ r.w = fnc(v1.w, v2.w); \ return r; \ } Loading @@ -136,6 +136,40 @@ _RS_STATIC float4 __attribute__((overloadable)) fnc(float4 v1, float v2) { \ return r; \ } #define DEF_FUNC_2P(fnc) \ _RS_STATIC float2 __attribute__((overloadable)) fnc(float2 v1, float2 *v2) { \ float2 r; \ float q; \ r.x = fnc(v1.x, &q); \ v2->x = q; \ r.y = fnc(v1.y, &q); \ v2->y = q; \ return r; \ } \ _RS_STATIC float3 __attribute__((overloadable)) fnc(float3 v1, float3 *v2) { \ float3 r; \ float q; \ r.x = fnc(v1.x, &q); \ v2->x = q; \ r.y = fnc(v1.y, &q); \ v2->y = q; \ r.z = fnc(v1.z, &q); \ v2->z = q; \ return r; \ } \ _RS_STATIC float4 __attribute__((overloadable)) fnc(float4 v1, float4 *v2) { \ float4 r; \ float q; \ r.x = fnc(v1.x, &q); \ v2->x = q; \ r.y = fnc(v1.y, &q); \ v2->y = q; \ r.z = fnc(v1.z, &q); \ v2->z = q; \ r.w = fnc(v1.w, &q); \ v2->w = q; \ return r; \ } extern float __attribute__((overloadable)) acos(float); DEF_FUNC_1(acos) Loading Loading @@ -333,9 +367,7 @@ extern float3 __attribute__((overloadable)) mad(float3, float3, float3); extern float4 __attribute__((overloadable)) mad(float4, float4, float4); extern float __attribute__((overloadable)) modf(float, float *); extern float2 __attribute__((overloadable)) modf(float2, float2 *); extern float3 __attribute__((overloadable)) modf(float3, float3 *); extern float4 __attribute__((overloadable)) modf(float4, float4 *); DEF_FUNC_2P(modf); //extern float __attribute__((overloadable)) nan(uint); Loading Loading
libs/rs/java/tests/src/com/android/rs/test/RSTestCore.java +1 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ public class RSTestCore { unitTests.add(new UT_rsdebug(this, mRes, mCtx)); unitTests.add(new UT_rstime(this, mRes, mCtx)); unitTests.add(new UT_rstypes(this, mRes, mCtx)); unitTests.add(new UT_math(this, mRes, mCtx)); unitTests.add(new UT_fp_mad(this, mRes, mCtx)); /* unitTests.add(new UnitTest(null, "<Pass>", 1)); Loading
libs/rs/java/tests/src/com/android/rs/test/UT_math.java 0 → 100644 +40 −0 Original line number Diff line number Diff line /* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.rs.test; import android.content.Context; import android.content.res.Resources; import android.renderscript.*; public class UT_math extends UnitTest { private Resources mRes; protected UT_math(RSTestCore rstc, Resources res, Context ctx) { super(rstc, "Math", ctx); mRes = res; } public void run() { RenderScript pRS = RenderScript.create(mCtx); ScriptC_math s = new ScriptC_math(pRS, mRes, R.raw.math); pRS.setMessageHandler(mRsMessage); s.invoke_math_test(0, 0); pRS.finish(); waitForMessage(); pRS.destroy(); } }
libs/rs/java/tests/src/com/android/rs/test/math.rs 0 → 100644 +65 −0 Original line number Diff line number Diff line #include "shared.rsh" // Testing math library volatile float f1; volatile float2 f2; volatile float3 f3; volatile float4 f4; #define TEST_F(fnc, var) \ rsDebug("Testing " #fnc, 0); \ var##1 = fnc(var##1); \ var##2 = fnc(var##2); \ var##3 = fnc(var##3); \ var##4 = fnc(var##4); #define TEST_FP(fnc, var) \ rsDebug("Testing " #fnc, 0); \ var##1 = fnc(var##1, (float*) &f1); \ var##2 = fnc(var##2, (float2*) &f2); \ var##3 = fnc(var##3, (float3*) &f3); \ var##4 = fnc(var##4, (float4*) &f4); #define TEST_F2(fnc, var) \ rsDebug("Testing " #fnc, 0); \ var##1 = fnc(var##1, var##1); \ var##2 = fnc(var##2, var##2); \ var##3 = fnc(var##3, var##3); \ var##4 = fnc(var##4, var##4); static bool test_math(uint32_t index) { bool failed = false; start(); TEST_F(cos, f); TEST_FP(modf, f); TEST_F2(pow, f); TEST_F(sin, f); TEST_F(sqrt, f); float time = end(index); if (failed) { rsDebug("test_math FAILED", time); } else { rsDebug("test_math PASSED", time); } return failed; } void math_test(uint32_t index, int test_num) { bool failed = false; failed |= test_math(index); if (failed) { rsSendToClientBlocking(RS_MSG_TEST_FAILED); } else { rsSendToClientBlocking(RS_MSG_TEST_PASSED); } }
libs/rs/rsScriptC_LibCL.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -221,7 +221,7 @@ static ScriptCState::SymbolTable_t gSyms[] = { { "_Z5log1pf", (void *)&log1pf, true }, //{ "logb", (void *)&, true }, //{ "mad", (void *)&, true }, { "modf", (void *)&modff, true }, { "_Z4modffPf", (void *)&modff, true }, //{ "nan", (void *)&, true }, { "_Z9nextafterff", (void *)&nextafterf, true }, { "_Z3powff", (void *)&powf, true }, Loading
libs/rs/scriptc/rs_cl.rsh +36 −4 Original line number Diff line number Diff line Loading @@ -109,7 +109,7 @@ _RS_STATIC float4 __attribute__((overloadable)) fnc(float4 v1, float4 v2) { \ r.x = fnc(v1.x, v2.x); \ r.y = fnc(v1.y, v2.y); \ r.z = fnc(v1.z, v2.z); \ r.w = fnc(v1.w, v2.z); \ r.w = fnc(v1.w, v2.w); \ return r; \ } Loading @@ -136,6 +136,40 @@ _RS_STATIC float4 __attribute__((overloadable)) fnc(float4 v1, float v2) { \ return r; \ } #define DEF_FUNC_2P(fnc) \ _RS_STATIC float2 __attribute__((overloadable)) fnc(float2 v1, float2 *v2) { \ float2 r; \ float q; \ r.x = fnc(v1.x, &q); \ v2->x = q; \ r.y = fnc(v1.y, &q); \ v2->y = q; \ return r; \ } \ _RS_STATIC float3 __attribute__((overloadable)) fnc(float3 v1, float3 *v2) { \ float3 r; \ float q; \ r.x = fnc(v1.x, &q); \ v2->x = q; \ r.y = fnc(v1.y, &q); \ v2->y = q; \ r.z = fnc(v1.z, &q); \ v2->z = q; \ return r; \ } \ _RS_STATIC float4 __attribute__((overloadable)) fnc(float4 v1, float4 *v2) { \ float4 r; \ float q; \ r.x = fnc(v1.x, &q); \ v2->x = q; \ r.y = fnc(v1.y, &q); \ v2->y = q; \ r.z = fnc(v1.z, &q); \ v2->z = q; \ r.w = fnc(v1.w, &q); \ v2->w = q; \ return r; \ } extern float __attribute__((overloadable)) acos(float); DEF_FUNC_1(acos) Loading Loading @@ -333,9 +367,7 @@ extern float3 __attribute__((overloadable)) mad(float3, float3, float3); extern float4 __attribute__((overloadable)) mad(float4, float4, float4); extern float __attribute__((overloadable)) modf(float, float *); extern float2 __attribute__((overloadable)) modf(float2, float2 *); extern float3 __attribute__((overloadable)) modf(float3, float3 *); extern float4 __attribute__((overloadable)) modf(float4, float4 *); DEF_FUNC_2P(modf); //extern float __attribute__((overloadable)) nan(uint); Loading