The cpu check fails on this computer and I suspect cpuid has been disabled in the BIOS. I will check when I get a chance.
I downloaded the code you sent. I had to do the following mods to get it to compile.
1. Commented out #define AES_NI and Added #ifdef AES_NI to effectively comment out code in algo/cryptonight/cryptonight-aesni.c.
2. Added #undef AES_NI in algo/aesni/echo512/hash.c
since miner.h is not included.
3. Added #ifdef AES_NI_ON a lot of places in algo/aesni/groestl/groestl-intr-aes.h
After these changes, I could leave both
#define AES_NI
#define AES_NI_ON 1
in miner.h and it compiled/runs fine.
Hashrates:
With cpu_sse2 = false I get
[2016-01-24 13:05:53] CPU #0: 25.50 kH/s
[2016-01-24 13:05:53] CPU #1: 25.50 kH/s
Set to true:
[2016-01-24 13:06:36] CPU #0: 43.38 kH/s
[2016-01-24 13:06:36] CPU #1: 43.38 kH/s
EDIT: You might want to move the calls to has_aes_ni() and has_sse2() to the top of main() and make the boolean flags
global. So that these functions are not called every pass of the main loop. No need to call these more than once
I've di there was already some cpuid checks in the code that will all have to be consolidated/ It's not a priority
because the check is not expensive and is only really done at startup.
Your x86_64/SSE2 performance ratio is 25.0 / 43.38 = .58
my 4790K is 266 / 472 = ,56
That's pretty close. If effect your CPU SSE2's performance is just as good as mine. My only advantage
is the addition of AES_NI and possibly higher power efficiency. There' slife in those old CPU yet.
I'll take some time to digest the rest of your report, I just woke up.
I think I have something that works. I justhave to bundle it up and build another debug load for you.
It should run straight out of the box on your CPU.
But things aren't perfect. There are two problems I had to workaround.
The #define AES_NI in miner.h is not being seen in any files that reference AESNI. I therefore had
to add #define AES_NI in every file with any reference to AES_NI code.
The other problem is that has_sse2() isn't working so I hard coded it.
I tested it 4 ways:
1. AES_NI defined and march=native: my normal environment
2. AES_NI defined and march=core2. this fails to compile as expected.
3. AES_NI not defined and march=native, this compiles but performs at SSE2 rates as expected
4. AES_NI not defined and march=core2. this simulates your environment and works at SSE2 rates
as expected.
The only thing now is to confirm it works with the default build instructions on your machine and
performs at SSE2 levels.
Follow up items:
investigate why #define in miner.h not seen
Investigate has_sse2 failure
Investigate ways to define AES_NI from the configure command line,
It's currently setup so simulate a CPU without AES_NI and with SSE2
Edit: PM sent