keyhunt icon indicating copy to clipboard operation
keyhunt copied to clipboard

Mac M1 Max Build

Open graffitilogic opened this issue 3 years ago • 1 comments

Hey there - any luck on your Mac-compatible build? Just checking in, I know you have alot of people throwing suggestions at you. I was just curious if there would be a performance implication to the gmp approach when its done.

Will your GMP build be able to leverage any extra performance benefit out of the M1 Max chip, leverage the GPU cores on the processor or is all that still a pretty big leap away?

-- make output on my m1 max machine / macOS 12.01 --

++ -O3 -c oldbloom/bloom.cpp -o oldbloom.o g++ -O3 -c bloom/bloom.cpp -o bloom.o gcc -O3 -c base58/base58.c -o base58.o gcc -O3 -c rmd160/rmd160.c -o rmd160.o g++ -O3 -c sha3/sha3.c -o sha3.o clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated] g++ -O3 -c sha3/keccak.c -o keccak.o clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated] sha3/keccak.c:59:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:37:11: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^ sha3/keccak.c:59:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:37:12: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^~~~ sha3/keccak.c:65:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:37:12: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^~~~ sha3/keccak.c:59:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:37:16: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^ sha3/keccak.c:59:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:38:11: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^ sha3/keccak.c:59:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:38:12: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^~~~ sha3/keccak.c:65:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:38:12: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^~~~ sha3/keccak.c:59:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:38:16: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^ sha3/keccak.c:59:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:39:11: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^ sha3/keccak.c:59:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:39:12: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^~~~ sha3/keccak.c:65:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:39:12: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^~~~ sha3/keccak.c:59:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:39:16: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^ sha3/keccak.c:59:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:40:11: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^ sha3/keccak.c:59:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:40:12: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^~~~ sha3/keccak.c:65:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:40:12: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^~~~ sha3/keccak.c:59:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:40:16: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^ sha3/keccak.c:59:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:41:11: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^ sha3/keccak.c:59:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:41:12: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^~~~ sha3/keccak.c:65:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:41:12: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^~~~ sha3/keccak.c:59:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:41:16: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^ sha3/keccak.c:66:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:37:11: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^ sha3/keccak.c:66:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:37:12: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^~~~ sha3/keccak.c:72:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:37:12: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^~~~ sha3/keccak.c:66:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:37:16: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^ sha3/keccak.c:66:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:38:11: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^ sha3/keccak.c:66:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:38:12: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^~~~ sha3/keccak.c:72:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:38:12: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^~~~ sha3/keccak.c:66:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:38:16: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^ sha3/keccak.c:66:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:39:11: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^ sha3/keccak.c:66:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:39:12: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^~~~ sha3/keccak.c:72:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:39:12: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^~~~ sha3/keccak.c:66:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:39:16: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^ sha3/keccak.c:66:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:40:11: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^ sha3/keccak.c:66:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:40:12: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^~~~ sha3/keccak.c:72:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:40:12: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^~~~ sha3/keccak.c:66:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:40:16: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^ sha3/keccak.c:66:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:41:11: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^ sha3/keccak.c:66:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:41:12: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^~~~ sha3/keccak.c:72:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:41:12: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^~~~ sha3/keccak.c:66:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:41:16: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^ sha3/keccak.c:73:24: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas] #pragma GCC diagnostic pop ^ sha3/keccak.c:119:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:37:11: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^ sha3/keccak.c:119:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:37:12: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^~~~ sha3/keccak.c:130:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:37:12: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^~~~ sha3/keccak.c:119:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:37:16: note: expanded from macro 'FOR5' (X) = 0; (STMT);
^ sha3/keccak.c:119:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:38:11: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^ sha3/keccak.c:119:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:38:12: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^~~~ sha3/keccak.c:130:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:38:12: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^~~~ sha3/keccak.c:119:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:38:16: note: expanded from macro 'FOR5' (X) = 1; (STMT);
^ sha3/keccak.c:119:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:39:11: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^ sha3/keccak.c:119:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:39:12: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^~~~ sha3/keccak.c:130:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:39:12: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^~~~ sha3/keccak.c:119:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:39:16: note: expanded from macro 'FOR5' (X) = 2; (STMT);
^ sha3/keccak.c:119:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:40:11: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^ sha3/keccak.c:119:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:40:12: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^~~~ sha3/keccak.c:130:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:40:12: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^~~~ sha3/keccak.c:119:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:40:16: note: expanded from macro 'FOR5' (X) = 3; (STMT);
^ sha3/keccak.c:119:2: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] FOR5(y, { ^~~~~~~~~ sha3/keccak.c:41:11: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^ sha3/keccak.c:119:10: note: '{' token is here FOR5(y, { ^ sha3/keccak.c:41:12: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^~~~ sha3/keccak.c:130:2: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] }); ^ sha3/keccak.c:41:12: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^~~~ sha3/keccak.c:119:2: note: ')' token is here FOR5(y, { ^~~~~~~~~ sha3/keccak.c:41:16: note: expanded from macro 'FOR5' (X) = 4; (STMT);
^ sha3/keccak.c:131:24: warning: pragma diagnostic pop could not pop, no matching push [-Wunknown-pragmas] #pragma GCC diagnostic pop ^ 32 warnings generated. gcc -O3 -c xxhash/xxhash.c -o xxhash.o g++ -O3 -c util.c -o util.o clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated] g++ -m64 -mssse3 -Wno-unused-result -Wno-write-strings -O2 -c secp256k1/Int.cpp -o Int.o clang: warning: argument unused during compilation: '-mssse3' [-Wunused-command-line-argument] In file included from secp256k1/Int.cpp:18: secp256k1/Int.h:204:27: error: invalid output constraint '=d' in asm asm( "mulq %[b];" :"=d"(rhi),"=a"(rlo) :"1"(a),[b]"rm"(b)); ^ secp256k1/Int.h:211:43: error: invalid output constraint '=D' in asm asm ("movq %1,%0;shrdq %3,%2,%0;" : "=D"(c) : "r"(a),"r"(b),"c"(n)); ^ secp256k1/Int.h:218:43: error: invalid output constraint '=D' in asm asm ("movq %1,%0;shldq %3,%2,%0;" : "=D"(c) : "r"(b),"r"(a),"c"(n)); ^ secp256k1/Int.h:234:7: error: use of undeclared identifier '__builtin_ia32_addcarryx_u64' c = _addcarry_u64(c, _umul128(x[1], y, &h), carry, dst + 1); carry = h; ^ secp256k1/Int.h:223:32: note: expanded from macro '_addcarry_u64' #define _addcarry_u64(a,b,c,d) __builtin_ia32_addcarryx_u64(a,b,c,(long long unsigned int*)d); ^ secp256k1/Int.h:235:7: error: use of undeclared identifier '__builtin_ia32_addcarryx_u64' c = _addcarry_u64(c, _umul128(x[2], y, &h), carry, dst + 2); carry = h; ^ secp256k1/Int.h:223:32: note: expanded from macro '_addcarry_u64' #define _addcarry_u64(a,b,c,d) __builtin_ia32_addcarryx_u64(a,b,c,(long long unsigned int*)d); ^ secp256k1/Int.h:236:7: error: use of undeclared identifier '__builtin_ia32_addcarryx_u64' c = _addcarry_u64(c, _umul128(x[3], y, &h), carry, dst + 3); carry = h; ^ secp256k1/Int.h:223:32: note: expanded from macro '_addcarry_u64' #define _addcarry_u64(a,b,c,d) __builtin_ia32_addcarryx_u64(a,b,c,(long long unsigned int*)d); ^ secp256k1/Int.h:237:7: error: use of undeclared identifier '__builtin_ia32_addcarryx_u64' c = _addcarry_u64(c, _umul128(x[4], y, &h), carry, dst + 4); carry = h; ^ secp256k1/Int.h:223:32: note: expanded from macro '_addcarry_u64' #define _addcarry_u64(a,b,c,d) __builtin_ia32_addcarryx_u64(a,b,c,(long long unsigned int*)d); ^ secp256k1/Int.h:253:7: error: use of undeclared identifier '__builtin_ia32_addcarryx_u64' c = _addcarry_u64(c, _umul128(x[1], y, &h), carry, dst + 1); carry = h; ^ secp256k1/Int.h:223:32: note: expanded from macro '_addcarry_u64' #define _addcarry_u64(a,b,c,d) __builtin_ia32_addcarryx_u64(a,b,c,(long long unsigned int*)d); ^ secp256k1/Int.h:254:7: error: use of undeclared identifier '__builtin_ia32_addcarryx_u64' c = _addcarry_u64(c, _umul128(x[2], y, &h), carry, dst + 2); carry = h; ^ secp256k1/Int.h:223:32: note: expanded from macro '_addcarry_u64' #define _addcarry_u64(a,b,c,d) __builtin_ia32_addcarryx_u64(a,b,c,(long long unsigned int*)d); ^ secp256k1/Int.h:255:7: error: use of undeclared identifier '__builtin_ia32_addcarryx_u64' c = _addcarry_u64(c, _umul128(x[3], y, &h), carry, dst + 3); carry = h; ^ secp256k1/Int.h:223:32: note: expanded from macro '_addcarry_u64' #define _addcarry_u64(a,b,c,d) __builtin_ia32_addcarryx_u64(a,b,c,(long long unsigned int*)d); ^ secp256k1/Int.h:262:3: error: use of undeclared identifier '__builtin_ia32_addcarryx_u64' _addcarry_u64(c, 0ULL, carry, dst + (NB64BLOCK - 1)); ^ secp256k1/Int.h:223:32: note: expanded from macro '_addcarry_u64' #define _addcarry_u64(a,b,c,d) __builtin_ia32_addcarryx_u64(a,b,c,(long long unsigned int*)d); ^ In file included from secp256k1/Int.cpp:24: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/emmintrin.h:13: In file included from /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/xmmintrin.h:13: /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/mmintrin.h:33:5: error: use of undeclared identifier '__builtin_ia32_emms'; did you mean '__builtin_isless'? __builtin_ia32_emms(); ^ /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/mmintrin.h:33:5: note: '__builtin_isless' declared here /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/mmintrin.h:33:25: error: too few arguments to function call, expected 2, have 0 __builtin_ia32_emms(); ~~~~~~~~~~~~~~~~~~~~^ /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/mmintrin.h:50:19: error: use of undeclared identifier '__builtin_ia32_vec_init_v2si' return (__m64)__builtin_ia32_vec_init_v2si(__i, 0); ^ /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/mmintrin.h:67:12: error: use of undeclared identifier '__builtin_ia32_vec_ext_v2si' return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0); ^ /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/mmintrin.h:129:19: error: use of undeclared identifier '__builtin_ia32_packsswb' return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2); ^ /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/mmintrin.h:159:19: error: use of undeclared identifier '__builtin_ia32_packssdw' return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2); ^ /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/mmintrin.h:189:19: error: use of undeclared identifier '__builtin_ia32_packuswb' return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2); ^ /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include/mmintrin.h:216:19: error: use of undeclared identifier '__builtin_ia32_punpckhbw' return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2); ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. make: *** [default] Error 1

graffitilogic avatar Dec 04 '21 02:12 graffitilogic

ARM processors are not supported in this version of the tool.

dem10 avatar Dec 04 '21 05:12 dem10

Try now compile the legacy version

make legacy

albertobsd avatar May 17 '23 03:05 albertobsd