[Bazel/MSVC] Enable jpeg SIMD for MSVC

- Add config/msvc.h when building nasm on Windows
- Update Windows SIMD for libjpeg-turbo 2.0.0
- Add missing source files
This commit is contained in:
Loo Rong Jie
2018-07-04 09:04:57 +08:00
parent 5393c8f0dc
commit d41f5ffb9c
2 changed files with 141 additions and 3 deletions

View File

@@ -11,8 +11,8 @@ libjpegturbo_nocopts = "-[W]error"
WIN_COPTS = [
"/Ox",
"/w14711", # function 'function' selected for inline expansion
"/w14710", # 'function' : function not inlined
"-DWITH_SIMD",
"-wd4996",
]
libjpegturbo_copts = select({
@@ -127,6 +127,7 @@ cc_library(
":armeabi-v7a": [":simd_armv7a"],
":arm64-v8a": [":simd_armv8a"],
":linux_ppc64le": [":simd_altivec"],
":windows": [":simd_win_x86_64"],
"//conditions:default": [":simd_none"],
}),
)
@@ -350,6 +351,140 @@ cc_library(
nocopts = libjpegturbo_nocopts,
)
cc_library(
name = "simd_win_x86_64",
srcs = [
"jchuff.h",
"jconfig.h",
"jconfigint.h",
"jdct.h",
"jerror.h",
"jinclude.h",
"jmorecfg.h",
"jpegint.h",
"jpeglib.h",
"jsimd.h",
"jsimddct.h",
"simd/jsimd.h",
"simd/x86_64/jsimd.c",
"simd/x86_64/jccolor-avx2.obj",
"simd/x86_64/jccolor-sse2.obj",
"simd/x86_64/jcgray-avx2.obj",
"simd/x86_64/jcgray-sse2.obj",
"simd/x86_64/jchuff-sse2.obj",
"simd/x86_64/jcphuff-sse2.obj",
"simd/x86_64/jcsample-avx2.obj",
"simd/x86_64/jcsample-sse2.obj",
"simd/x86_64/jdcolor-avx2.obj",
"simd/x86_64/jdcolor-sse2.obj",
"simd/x86_64/jdmerge-avx2.obj",
"simd/x86_64/jdmerge-sse2.obj",
"simd/x86_64/jdsample-avx2.obj",
"simd/x86_64/jdsample-sse2.obj",
"simd/x86_64/jfdctflt-sse.obj",
"simd/x86_64/jfdctfst-sse2.obj",
"simd/x86_64/jfdctint-avx2.obj",
"simd/x86_64/jfdctint-sse2.obj",
"simd/x86_64/jidctflt-sse2.obj",
"simd/x86_64/jidctfst-sse2.obj",
"simd/x86_64/jidctint-avx2.obj",
"simd/x86_64/jidctint-sse2.obj",
"simd/x86_64/jidctred-sse2.obj",
"simd/x86_64/jquantf-sse2.obj",
"simd/x86_64/jquanti-avx2.obj",
"simd/x86_64/jquanti-sse2.obj",
"simd/x86_64/jsimdcpu.obj",
],
copts = libjpegturbo_copts,
)
genrule(
name = "simd_win_x86_64_assemble",
srcs = [
"jconfig.h",
"jconfigint.h",
"simd/x86_64/jccolext-avx2.asm",
"simd/x86_64/jccolext-sse2.asm",
"simd/x86_64/jccolor-avx2.asm",
"simd/x86_64/jccolor-sse2.asm",
"simd/x86_64/jcgray-avx2.asm",
"simd/x86_64/jcgray-sse2.asm",
"simd/x86_64/jcgryext-avx2.asm",
"simd/x86_64/jcgryext-sse2.asm",
"simd/x86_64/jchuff-sse2.asm",
"simd/x86_64/jcphuff-sse2.asm",
"simd/x86_64/jcsample-avx2.asm",
"simd/x86_64/jcsample-sse2.asm",
"simd/x86_64/jdcolext-avx2.asm",
"simd/x86_64/jdcolext-sse2.asm",
"simd/x86_64/jdcolor-avx2.asm",
"simd/x86_64/jdcolor-sse2.asm",
"simd/x86_64/jdmerge-avx2.asm",
"simd/x86_64/jdmerge-sse2.asm",
"simd/x86_64/jdmrgext-avx2.asm",
"simd/x86_64/jdmrgext-sse2.asm",
"simd/x86_64/jdsample-avx2.asm",
"simd/x86_64/jdsample-sse2.asm",
"simd/x86_64/jfdctflt-sse.asm",
"simd/x86_64/jfdctfst-sse2.asm",
"simd/x86_64/jfdctint-avx2.asm",
"simd/x86_64/jfdctint-sse2.asm",
"simd/x86_64/jidctflt-sse2.asm",
"simd/x86_64/jidctfst-sse2.asm",
"simd/x86_64/jidctint-avx2.asm",
"simd/x86_64/jidctint-sse2.asm",
"simd/x86_64/jidctred-sse2.asm",
"simd/x86_64/jquantf-sse2.asm",
"simd/x86_64/jquanti-avx2.asm",
"simd/x86_64/jquanti-sse2.asm",
"simd/x86_64/jsimdcpu.asm",
"simd/nasm/jcolsamp.inc",
"simd/nasm/jdct.inc",
"simd/nasm/jpeg_nbits_table.inc",
"simd/nasm/jsimdcfg.inc",
"simd/nasm/jsimdcfg.inc.h",
"simd/nasm/jsimdext.inc",
],
outs = [
"simd/x86_64/jccolor-avx2.obj",
"simd/x86_64/jccolor-sse2.obj",
"simd/x86_64/jcgray-avx2.obj",
"simd/x86_64/jcgray-sse2.obj",
"simd/x86_64/jchuff-sse2.obj",
"simd/x86_64/jcphuff-sse2.obj",
"simd/x86_64/jcsample-avx2.obj",
"simd/x86_64/jcsample-sse2.obj",
"simd/x86_64/jdcolor-avx2.obj",
"simd/x86_64/jdcolor-sse2.obj",
"simd/x86_64/jdmerge-avx2.obj",
"simd/x86_64/jdmerge-sse2.obj",
"simd/x86_64/jdsample-avx2.obj",
"simd/x86_64/jdsample-sse2.obj",
"simd/x86_64/jfdctflt-sse.obj",
"simd/x86_64/jfdctfst-sse2.obj",
"simd/x86_64/jfdctint-avx2.obj",
"simd/x86_64/jfdctint-sse2.obj",
"simd/x86_64/jidctflt-sse2.obj",
"simd/x86_64/jidctfst-sse2.obj",
"simd/x86_64/jidctint-avx2.obj",
"simd/x86_64/jidctint-sse2.obj",
"simd/x86_64/jidctred-sse2.obj",
"simd/x86_64/jquantf-sse2.obj",
"simd/x86_64/jquanti-avx2.obj",
"simd/x86_64/jquanti-sse2.obj",
"simd/x86_64/jsimdcpu.obj",
],
cmd = "for out in $(OUTS); do\n" +
" $(location @nasm//:nasm) -fwin64 -DWIN64 -D__x86_64__" +
" -I $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/" +
" -I $$(dirname $(location simd/nasm/jdct.inc))/" +
" -I $$(dirname $(location simd/nasm/jdct.inc))/../../win/" +
" -o $$out" +
" $$(dirname $(location simd/x86_64/jccolext-sse2.asm))/$$(basename $${out%.obj}.asm)\n" +
"done",
tools = ["@nasm"],
)
cc_library(
name = "simd_none",
srcs = [

View File

@@ -133,7 +133,10 @@ cc_binary(
"x86/regs.c",
"x86/regs.h",
"x86/regvals.c",
],
] + select({
":windows": ["config/msvc.h"],
"//conditions:default": [],
}),
includes = [
"asm",
"include",