From 844baa5379db85f5327afc70d9a672c04967cd79 Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 26 Jul 2023 23:49:04 +0800 Subject: add avx512 for vectorext --- xmake/modules/core/tools/gcc.lua | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'xmake/modules/core/tools/gcc.lua') diff --git a/xmake/modules/core/tools/gcc.lua b/xmake/modules/core/tools/gcc.lua index 60f6ac805..2c8f497e0 100644 --- a/xmake/modules/core/tools/gcc.lua +++ b/xmake/modules/core/tools/gcc.lua @@ -166,15 +166,16 @@ end -- make the vector extension flag function nf_vectorext(self, extension) local maps = { - mmx = "-mmmx" - , sse = "-msse" - , sse2 = "-msse2" - , sse3 = "-msse3" - , ssse3 = "-mssse3" - , avx = "-mavx" - , avx2 = "-mavx2" - , fma = "-mfma" - , neon = "-mfpu=neon" + mmx = "-mmmx" + , sse = "-msse" + , sse2 = "-msse2" + , sse3 = "-msse3" + , ssse3 = "-mssse3" + , avx = "-mavx" + , avx2 = "-mavx2" + , avx512 = "-march=skylake-avx512" + , fma = "-mfma" + , neon = "-mfpu=neon" } return maps[extension] end -- cgit v1.3.1 From 59c3c5d3a025ad3bed85f73f31de36f3094d1cc9 Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 26 Jul 2023 23:50:31 +0800 Subject: add sse4.2 --- xmake/modules/core/tools/cl.lua | 13 +++++++------ xmake/modules/core/tools/gcc.lua | 21 +++++++++++---------- .../check/checkers/api/target/vectorexts.lua | 2 +- 3 files changed, 19 insertions(+), 17 deletions(-) (limited to 'xmake/modules/core/tools/gcc.lua') diff --git a/xmake/modules/core/tools/cl.lua b/xmake/modules/core/tools/cl.lua index ad64a0267..0e4426436 100644 --- a/xmake/modules/core/tools/cl.lua +++ b/xmake/modules/core/tools/cl.lua @@ -180,12 +180,13 @@ end function nf_vectorext(self, extension) local maps = { - sse = "-arch:SSE" - , sse2 = "-arch:SSE2" - , avx = "-arch:AVX" - , avx2 = "-arch:AVX2" - , avx512 = "-arch:AVX512" - , fma = "-arch:AVX2" + sse = "-arch:SSE" + , sse2 = "-arch:SSE2" + , ["sse4.2"] = "/d2archSSE42" + , avx = "-arch:AVX" + , avx2 = "-arch:AVX2" + , avx512 = "-arch:AVX512" + , fma = "-arch:AVX2" } local flag = maps[extension] if flag and self:has_flags(flag, "cxflags") then diff --git a/xmake/modules/core/tools/gcc.lua b/xmake/modules/core/tools/gcc.lua index 2c8f497e0..e24153ff8 100644 --- a/xmake/modules/core/tools/gcc.lua +++ b/xmake/modules/core/tools/gcc.lua @@ -166,16 +166,17 @@ end -- make the vector extension flag function nf_vectorext(self, extension) local maps = { - mmx = "-mmmx" - , sse = "-msse" - , sse2 = "-msse2" - , sse3 = "-msse3" - , ssse3 = "-mssse3" - , avx = "-mavx" - , avx2 = "-mavx2" - , avx512 = "-march=skylake-avx512" - , fma = "-mfma" - , neon = "-mfpu=neon" + mmx = "-mmmx" + , sse = "-msse" + , sse2 = "-msse2" + , sse3 = "-msse3" + , ssse3 = "-mssse3" + , ["sse4.2"] = "-msse4.2" + , avx = "-mavx" + , avx2 = "-mavx2" + , avx512 = "-march=skylake-avx512" + , fma = "-mfma" + , neon = "-mfpu=neon" } return maps[extension] end diff --git a/xmake/modules/private/check/checkers/api/target/vectorexts.lua b/xmake/modules/private/check/checkers/api/target/vectorexts.lua index 0451108b9..c46020b60 100644 --- a/xmake/modules/private/check/checkers/api/target/vectorexts.lua +++ b/xmake/modules/private/check/checkers/api/target/vectorexts.lua @@ -24,5 +24,5 @@ import(".api_checker") function main(opt) opt = opt or {} api_checker.check_targets("vectorexts", table.join(opt, {values = { - "none", "sse", "sse2", "sse3", "ssse3", "avx", "avx2", "avx512", "fma", "neon"}})) + "none", "sse", "sse2", "sse3", "ssse3", "sse4.2", "avx", "avx2", "avx512", "fma", "neon"}})) end -- cgit v1.3.1 From 8eb5c2f3c4d1dd2124b7e43f71b259ff90b66893 Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 26 Jul 2023 23:51:34 +0800 Subject: add some comments --- xmake/modules/core/tools/cl.lua | 4 ++-- xmake/modules/core/tools/gcc.lua | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'xmake/modules/core/tools/gcc.lua') diff --git a/xmake/modules/core/tools/cl.lua b/xmake/modules/core/tools/cl.lua index 0e4426436..0f4012775 100644 --- a/xmake/modules/core/tools/cl.lua +++ b/xmake/modules/core/tools/cl.lua @@ -182,10 +182,10 @@ function nf_vectorext(self, extension) { sse = "-arch:SSE" , sse2 = "-arch:SSE2" - , ["sse4.2"] = "/d2archSSE42" + , ["sse4.2"] = "/d2archSSE42" -- the only undocumented way works, @see https://github.com/xmake-io/xmake/issues/3786 , avx = "-arch:AVX" , avx2 = "-arch:AVX2" - , avx512 = "-arch:AVX512" + , avx512 = "-arch:AVX512" -- for msvc 2019+ avx512 support , fma = "-arch:AVX2" } local flag = maps[extension] diff --git a/xmake/modules/core/tools/gcc.lua b/xmake/modules/core/tools/gcc.lua index e24153ff8..218fc73f0 100644 --- a/xmake/modules/core/tools/gcc.lua +++ b/xmake/modules/core/tools/gcc.lua @@ -174,7 +174,7 @@ function nf_vectorext(self, extension) , ["sse4.2"] = "-msse4.2" , avx = "-mavx" , avx2 = "-mavx2" - , avx512 = "-march=skylake-avx512" + , avx512 = "-march=skylake-avx512" -- @see https://github.com/xmake-io/xmake/issues/1613 , fma = "-mfma" , neon = "-mfpu=neon" } -- cgit v1.3.1 From 1bf614da70028c2f1316d0ec6e22cd39dd8540aa Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 27 Jul 2023 00:39:50 +0800 Subject: improve avx512 --- xmake/modules/core/tools/cl.lua | 1 + xmake/modules/core/tools/gcc.lua | 4 +++- xmake/modules/private/check/checkers/api/target/vectorexts.lua | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) (limited to 'xmake/modules/core/tools/gcc.lua') diff --git a/xmake/modules/core/tools/cl.lua b/xmake/modules/core/tools/cl.lua index 0f4012775..aa8c9aba1 100644 --- a/xmake/modules/core/tools/cl.lua +++ b/xmake/modules/core/tools/cl.lua @@ -187,6 +187,7 @@ function nf_vectorext(self, extension) , avx2 = "-arch:AVX2" , avx512 = "-arch:AVX512" -- for msvc 2019+ avx512 support , fma = "-arch:AVX2" + , all = {"-arch:SSE", "-arch:SSE2", "/d2archSSE42", "-arch:AVX", "-arch:AVX2", "-arch:AVX512"} } local flag = maps[extension] if flag and self:has_flags(flag, "cxflags") then diff --git a/xmake/modules/core/tools/gcc.lua b/xmake/modules/core/tools/gcc.lua index 218fc73f0..b45c04119 100644 --- a/xmake/modules/core/tools/gcc.lua +++ b/xmake/modules/core/tools/gcc.lua @@ -164,6 +164,7 @@ function nf_optimize(self, level) end -- make the vector extension flag +-- @see https://github.com/xmake-io/xmake/issues/1613 function nf_vectorext(self, extension) local maps = { mmx = "-mmmx" @@ -174,9 +175,10 @@ function nf_vectorext(self, extension) , ["sse4.2"] = "-msse4.2" , avx = "-mavx" , avx2 = "-mavx2" - , avx512 = "-march=skylake-avx512" -- @see https://github.com/xmake-io/xmake/issues/1613 + , avx512 = {"-mavx512f", "-mavx512dq", "-mavx512bw", "-mavx512vl"} , fma = "-mfma" , neon = "-mfpu=neon" + , all = "-march=native" } return maps[extension] end diff --git a/xmake/modules/private/check/checkers/api/target/vectorexts.lua b/xmake/modules/private/check/checkers/api/target/vectorexts.lua index c46020b60..1dbbc0735 100644 --- a/xmake/modules/private/check/checkers/api/target/vectorexts.lua +++ b/xmake/modules/private/check/checkers/api/target/vectorexts.lua @@ -24,5 +24,5 @@ import(".api_checker") function main(opt) opt = opt or {} api_checker.check_targets("vectorexts", table.join(opt, {values = { - "none", "sse", "sse2", "sse3", "ssse3", "sse4.2", "avx", "avx2", "avx512", "fma", "neon"}})) + "none", "all", "sse", "sse2", "sse3", "ssse3", "sse4.2", "avx", "avx2", "avx512", "fma", "neon"}})) end -- cgit v1.3.1