Closed Bug 847220 Opened 13 years ago Closed 12 years ago

nanojit-lirasm need updated

Categories

(Core Graveyard :: Nanojit, defect)

x86
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: mingodad, Unassigned)

Details

User Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0 Build ID: 20130227155321 Steps to reproduce: I tried to compile the nanojit-lirasm and it doesn't compile, there is dependency not solved for flot4Support, when manually including float4Support.(h & cpp), there is a dependency not solved with "sqrtf", commenting all code that uses "sqrtf", there is a problem with "Lirasm" class constructor complaining about missong Codealloc() constructor without arguments: Lirasm::Lirasm(bool verbose, Config& config) : mConfig(config),mCodeAlloc(&mConfig), ////// adding mCodeAlloc(&mConfig), solve it mAssm(mCodeAlloc, mAlloc, mAlloc, &mLogc, mConfig) Actual results: Several errors reported by the compiler related to the problems reported. After the process described above, I run "make check" and get this failures: ... TEST-PASS | lirasm | lirasm --execute --random 1000000 Assertion failure: memcmp( &f4, &other, sizeof(float4_t)) == 0 (./nanojit/LIR.cpp:3401) TEST-UNEXPECTED-FAIL | lirasm | lirasm --execute --random 1000000 --optimize expected output Output is: 0 actual output TEST-PASS | lirasm | lirasm --nosse --execute ./lirasm/tests/./addd.in ... Assertion failure: _config.i386_sse2 (./nanojit/Nativei386.cpp:1918) TEST-UNEXPECTED-FAIL | lirasm | lirasm --nosse --execute --random 1000000 expected output Output is: 0 actual output make: *** [check] Error 1 Expected results: Compile and produce "lirasm" executable and also pass all tests.
/* config.h. Generated from config.h.in by configure. */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #define DEBUG 1 /* #undef AVMPLUS_AMD64 */ /* #undef AVMPLUS_64BIT */ /* #undef AVMPLUS_ARM */ #define AVMPLUS_IA32 1 #define AVMPLUS_LINUX 1 /* #undef AVMPLUS_OS2 */ /* #undef AVMPLUS_PPC */ /* #undef AVMPLUS_MIPS */ /* #undef VMCFG_SH4 */ /* #undef VMCFG_FLOAT */ #define VMCFG_SSE2 1 /* #undef VMCFG_NEON */ /* #undef AVMPLUS_SPARC */ /* #undef SOLARIS */ #define AVMPLUS_UNIX 1 /* #undef AVMPLUS_WIN32 */ #define FEATURE_NANOJIT 1 /* #undef WINVER */ /* #undef _CRT_NONSTDC_NO_DEPRECATE */ /* #undef _CRT_NONSTDC_NO_WARNINGS */ /* #undef _CRT_SECURE_NO_DEPRECATE */ /* #undef _CRT_SECURE_NO_WARNINGS */ /* #undef WIN32 */ /* #undef _WIN32_IE */ /* #undef _WIN32_WINNT */
Instead of commenting out references to "sqrtf" now I added a define prior to it's usage on float4Support and could compile it as well but with the same errors when "make check": #define sqrtf sqrt // in hardware: vdupq_n_f32, or _mm_sqrt_ps REALLY_INLINE float4_t f4_sqrt(const float4_t& v) { float4_t retval = { sqrtf(v.x), sqrtf(v.y), sqrtf(v.z), sqrtf(v.w)}; return retval; }
I did some modifications to see why the test fails: //NanoAssert(VMPI_memcmp( &f4, &other, sizeof(float4_t)) == 0); if(!f4_eq_i(f4, other)){ printf("%d :: %d :: %.17f:%.17f, %.17f:%.17f, %.17f:%.17f, %.17f:%.17f\n", f4_eq_i(f4, other), VMPI_memcmp( &f4, &other, sizeof(float4_t)), f4.x, other.x, f4.y, other.y, f4.w, other.w, f4.z, other.z); //printf("%d %d\n", f4_eq_i(f4, other), VMPI_memcmp( &f4, &other, sizeof(float4_t))); } //NanoAssert(f4_eq_i(f4, other)); And I've got this output on one run: TEST-UNEXPECTED-FAIL | lirasm | lirasm --execute --random 1000000 --optimize expected output Output is: 0 actual output 0 :: -1 :: nan:nan, 180.00000000000000000:180.00000000000000000, 0.00000000000000000:0.00000000000000000, 0.00000000000039189:0.00000000000039189 0 :: 0 :: -nan:-nan, 0.00000000000000000:0.00000000000000000, 2.40486621856689453:2.40486621856689453, 0.00000000000000000:0.00000000000000000 0 :: 0 :: -nan:-nan, 0.00000000000000000:0.00000000000000000, 0.00000000000000000:0.00000000000000000, 0.00000000000000000:0.00000000000000000 I fails due to the presence of "nan" or "-nan" and obviously on that situation the other bits contains rubish. The "nan" was expected to happen or it is a bug ?
Nanojit is long gone.
Status: UNCONFIRMED → RESOLVED
Closed: 12 years ago
Resolution: --- → INVALID
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.