epeg 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/MANIFEST +5 -0
- data/TODO +1 -0
- data/epeg/.dockerignore +4 -0
- data/epeg/.gitignore +5 -0
- data/epeg/CMakeLists.txt +30 -0
- data/epeg/Dockerfile +23 -0
- data/epeg/Epeg.h +90 -0
- data/epeg/README.md +42 -0
- data/epeg/epeg_main.c +1642 -0
- data/epeg/epeg_private.h +85 -0
- data/epeg/example/.gitignore +1 -0
- data/epeg/example/CMakeLists.txt +20 -0
- data/epeg/example/example.jpg +0 -0
- data/epeg/example/rotatetest.c +29 -0
- data/epeg/example/scaletest.c +48 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/BUILDING.md +828 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/CMakeLists.txt +1420 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/ChangeLog.md +1494 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/LICENSE.md +132 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/README.ijg +277 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/README.md +356 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cderror.h +137 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cdjpeg.c +145 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cdjpeg.h +157 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/change.log +315 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cjpeg.1 +354 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cjpeg.c +695 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/BuildPackages.cmake +182 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/GNUInstallDirs.cmake +416 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/cmake_uninstall.cmake.in +24 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmakescripts/testclean.cmake +41 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/cmyk.h +61 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/coderules.txt +78 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/djpeg.1 +296 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/djpeg.c +822 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/annotated.html +104 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/bc_s.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/bdwn.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/classes.html +106 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/closed.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/doxygen-extra.css +3 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/doxygen.css +1184 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/doxygen.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/dynsections.js +97 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2blank.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2cl.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2doc.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2folderclosed.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2folderopen.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2lastnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2link.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2mlastnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2mnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2mo.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2node.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2ns.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2plastnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2pnode.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2splitbar.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/ftv2vertline.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/functions.html +134 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/functions_vars.html +134 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/group___turbo_j_p_e_g.html +2775 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/index.html +90 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/jquery.js +8 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/modules.html +95 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/nav_f.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/nav_g.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/nav_h.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/open.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_63.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_63.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_64.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_64.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_68.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_68.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6e.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6e.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6f.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_6f.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_72.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_72.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_74.js +102 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_77.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_77.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_78.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_78.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_79.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/all_79.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/classes_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/classes_74.js +6 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/close.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enums_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enums_74.js +8 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enumvalues_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/enumvalues_74.js +37 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/functions_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/functions_74.js +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/groups_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/groups_74.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/mag_sel.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/nomatches.html +12 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search.css +271 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search.js +809 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search_l.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search_m.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/search_r.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/typedefs_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/typedefs_74.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_63.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_63.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_64.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_64.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_68.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_68.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6e.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6e.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6f.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_6f.js +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_72.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_72.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_74.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_74.js +10 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_77.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_77.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_78.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_78.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_79.html +26 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/search/variables_79.js +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/structtjregion.html +186 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/structtjscalingfactor.html +148 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/structtjtransform.html +212 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/sync_off.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/sync_on.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_a.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_b.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_h.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tab_s.png +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doc/html/tabs.css +60 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doxygen-extra.css +3 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/doxygen.config +16 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/example.txt +464 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jaricom.c +157 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/CMakeLists.txt +88 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/MANIFEST.MF +2 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/README +52 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/TJBench.java +1021 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/TJExample.java +405 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/TJUnitTest.java +960 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/allclasses-frame.html +24 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/allclasses-noframe.html +24 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/constant-values.html +532 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/deprecated-list.html +252 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/help-doc.html +210 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/index-all.html +1029 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/index.html +71 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJ.html +1356 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJCompressor.html +926 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJCustomFilter.html +241 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJDecompressor.html +1255 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJException.html +340 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJScalingFactor.html +343 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJTransform.html +751 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/TJTransformer.html +421 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/YUVImage.html +765 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/package-frame.html +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/package-summary.html +202 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/org/libjpegturbo/turbojpeg/package-tree.html +160 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/overview-tree.html +164 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/package-list +1 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/background.gif +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/tab.gif +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/titlebar.gif +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/resources/titlebar_end.gif +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/script.js +30 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/serialized-form.html +176 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/doc/stylesheet.css +474 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJ.java +584 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJCompressor.java +677 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJCustomFilter.java +76 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJDecompressor.java +931 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJException.java +78 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJLoader-unix.java.in +59 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJLoader-win.java.in +35 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJScalingFactor.java +115 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJTransform.java +227 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/TJTransformer.java +163 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org/libjpegturbo/turbojpeg/YUVImage.java +445 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJ.h +129 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJCompressor.h +101 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJDecompressor.h +101 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/java/org_libjpegturbo_turbojpeg_TJTransformer.h +29 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcapimin.c +295 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcapistd.c +162 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcarith.c +932 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jccoefct.c +449 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jccolext.c +144 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jccolor.c +710 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcdctmgr.c +721 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jchuff.c +1096 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jchuff.h +42 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcicc.c +105 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcinit.c +77 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcmainct.c +162 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcmarker.c +664 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcmaster.c +640 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcomapi.c +109 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jconfig.h.in +73 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jconfig.txt +143 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jconfigint.h.in +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcparam.c +541 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcphuff.c +1105 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcprepct.c +351 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcsample.c +539 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jcstest.c +126 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jctrans.c +400 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdapimin.c +407 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdapistd.c +639 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdarith.c +773 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdatadst-tj.c +203 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdatadst.c +293 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdatasrc-tj.c +194 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdatasrc.c +295 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcoefct.c +692 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcoefct.h +82 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcol565.c +384 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcolext.c +143 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdcolor.c +883 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdct.h +208 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jddctmgr.c +352 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdhuff.c +831 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdhuff.h +238 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdicc.c +171 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdinput.c +408 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmainct.c +460 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmainct.h +71 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmarker.c +1377 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmaster.c +737 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmaster.h +28 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmerge.c +617 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmrg565.c +354 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdmrgext.c +184 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdphuff.c +687 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdpostct.c +294 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdsample.c +518 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdsample.h +50 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jdtrans.c +155 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jerror.c +251 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jerror.h +316 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jfdctflt.c +169 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jfdctfst.c +227 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jfdctint.c +288 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jidctflt.c +240 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jidctfst.c +371 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jidctint.c +2627 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jidctred.c +409 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jinclude.h +88 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jmemmgr.c +1179 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jmemnobs.c +115 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jmemsys.h +178 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jmorecfg.h +421 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpeg_nbits_table.h +4098 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpegcomp.h +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpegint.h +368 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpeglib.h +1132 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpegtran.1 +295 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jpegtran.c +601 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jquant1.c +859 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jquant2.c +1285 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jsimd.h +117 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jsimd_none.c +418 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jsimddct.h +70 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jstdhuff.c +143 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jutils.c +133 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/jversion.h +52 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/libjpeg.map.in +11 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/libjpeg.txt +3144 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/CMakeLists.txt +1 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5.c +275 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5.h +57 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5cmp.c +59 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/md5/md5hl.c +125 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdbmp.c +689 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdcolmap.c +254 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdgif.c +39 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdjpgcom.1 +63 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdjpgcom.c +510 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdppm.c +766 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdrle.c +389 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdswitch.c +424 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/rdtarga.c +509 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/Distribution.xml.in +24 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/License.rtf +20 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/ReadMe.txt +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/Welcome.rtf +17 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/deb-control.in +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/installer.nsi.in +191 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/libjpeg.pc.in +10 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/libturbojpeg.pc.in +10 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makecygwinpkg.in +66 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makedpkg.in +115 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makemacpkg.in +284 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makerpm.in +30 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/makesrpm.in +48 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/maketarball.in +51 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/rpm.spec.in +221 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/release/uninstall.in +113 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/sharedlib/CMakeLists.txt +99 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/CMakeLists.txt +385 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm/jsimd.c +721 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm/jsimd_neon.S +2878 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm64/jsimd.c +798 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/arm64/jsimd_neon.S +3433 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/gas-preprocessor.in +1 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolext-avx2.asm +578 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolext-mmx.asm +476 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolext-sse2.asm +503 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolor-avx2.asm +121 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolor-mmx.asm +121 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jccolor-sse2.asm +120 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgray-avx2.asm +113 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgray-mmx.asm +113 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgray-sse2.asm +112 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgryext-avx2.asm +457 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgryext-mmx.asm +355 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcgryext-sse2.asm +382 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jchuff-sse2.asm +424 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcphuff-sse2.asm +660 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcsample-avx2.asm +388 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcsample-mmx.asm +324 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jcsample-sse2.asm +351 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolext-avx2.asm +515 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolext-mmx.asm +404 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolext-sse2.asm +458 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolor-avx2.asm +118 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolor-mmx.asm +117 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdcolor-sse2.asm +117 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmerge-avx2.asm +136 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmerge-mmx.asm +123 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmerge-sse2.asm +135 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmrgext-avx2.asm +575 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmrgext-mmx.asm +460 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdmrgext-sse2.asm +517 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdsample-avx2.asm +760 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdsample-mmx.asm +731 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jdsample-sse2.asm +724 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctflt-3dn.asm +318 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctflt-sse.asm +369 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctfst-mmx.asm +395 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctfst-sse2.asm +403 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctint-avx2.asm +331 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctint-mmx.asm +620 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jfdctint-sse2.asm +633 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctflt-3dn.asm +451 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctflt-sse.asm +571 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctflt-sse2.asm +497 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctfst-mmx.asm +499 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctfst-sse2.asm +501 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctint-avx2.asm +453 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctint-mmx.asm +851 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctint-sse2.asm +858 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctred-mmx.asm +704 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jidctred-sse2.asm +592 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquant-3dn.asm +230 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquant-mmx.asm +276 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquant-sse.asm +208 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquantf-sse2.asm +168 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquanti-avx2.asm +188 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jquanti-sse2.asm +201 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jsimd.c +1253 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/i386/jsimdcpu.asm +135 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/jsimd.h +1083 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jccolext-mmi.c +483 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jccolor-mmi.c +148 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jcsample-mmi.c +100 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jcsample.h +28 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jdcolext-mmi.c +424 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jdcolor-mmi.c +139 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jdsample-mmi.c +245 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jfdctint-mmi.c +398 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jidctint-mmi.c +571 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jquanti-mmi.c +130 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jsimd.c +610 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/jsimd_mmi.h +57 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/loongson/loongson-mmintrin.h +1324 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/mips/jsimd.c +1123 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/mips/jsimd_dspr2.S +4479 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/mips/jsimd_dspr2_asm.h +292 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jcolsamp.inc +135 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jdct.inc +31 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jpeg_nbits_table.inc +4097 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jsimdcfg.inc +93 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jsimdcfg.inc.h +131 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/nasm/jsimdext.inc +479 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jccolext-altivec.c +269 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jccolor-altivec.c +116 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcgray-altivec.c +111 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcgryext-altivec.c +228 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcsample-altivec.c +159 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jcsample.h +28 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdcolext-altivec.c +276 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdcolor-altivec.c +106 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdmerge-altivec.c +130 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdmrgext-altivec.c +329 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jdsample-altivec.c +400 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jfdctfst-altivec.c +154 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jfdctint-altivec.c +258 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jidctfst-altivec.c +255 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jidctint-altivec.c +357 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jquanti-altivec.c +250 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jsimd.c +872 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/powerpc/jsimd_altivec.h +98 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolext-avx2.asm +558 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolext-sse2.asm +483 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolor-avx2.asm +121 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jccolor-sse2.asm +120 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgray-avx2.asm +113 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgray-sse2.asm +112 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgryext-avx2.asm +437 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcgryext-sse2.asm +362 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jchuff-sse2.asm +346 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcphuff-sse2.asm +637 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcsample-avx2.asm +366 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jcsample-sse2.asm +329 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolext-avx2.asm +495 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolext-sse2.asm +438 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolor-avx2.asm +118 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdcolor-sse2.asm +117 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmerge-avx2.asm +136 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmerge-sse2.asm +135 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmrgext-avx2.asm +593 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdmrgext-sse2.asm +535 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdsample-avx2.asm +695 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jdsample-sse2.asm +664 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctflt-sse.asm +355 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctfst-sse2.asm +389 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctint-avx2.asm +320 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jfdctint-sse2.asm +619 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctflt-sse2.asm +481 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctfst-sse2.asm +490 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctint-avx2.asm +417 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctint-sse2.asm +846 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jidctred-sse2.asm +573 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jquantf-sse2.asm +154 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jquanti-avx2.asm +162 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jquanti-sse2.asm +187 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jsimd.c +1076 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/simd/x86_64/jsimdcpu.asm +86 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/structure.txt +904 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/nightshot_iso_100.bmp +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/nightshot_iso_100.txt +25 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test.scan +5 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test1.icc +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test1.icc.txt +20 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test2.icc +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/test2.icc.txt +20 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testimgari.jpg +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testimgint.jpg +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testorig.jpg +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testorig.ppm +4 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/testorig12.jpg +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/vgl_5674_0098.bmp +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/vgl_6434_0018a.bmp +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/testimages/vgl_6548_0026a.bmp +0 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjbench.c +1031 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjbenchtest.in +256 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjbenchtest.java.in +215 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjexample.c +396 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjexampletest.in +149 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjexampletest.java.in +151 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjunittest.c +931 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjutil.c +70 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/tjutil.h +47 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/transupp.c +1628 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/transupp.h +210 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg-jni.c +1246 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg-mapfile +65 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg-mapfile.jni +101 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg.c +2152 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/turbojpeg.h +1744 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/usage.txt +635 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jconfig.h.in +34 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg62-memsrcdst.def +108 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg62.def +106 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg7-memsrcdst.def +110 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg7.def +108 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/win/jpeg8.def +111 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wizard.txt +212 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrbmp.c +558 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrgif.c +413 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrjpgcom.1 +103 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrjpgcom.c +591 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrppm.c +365 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrrle.c +309 -0
- data/epeg/vendor/libjpeg-turbo-2.0.4/wrtarga.c +261 -0
- data/epeg.c +131 -0
- data/epeg.gemspec +18 -0
- data/extconf.rb +80 -0
- data/test.jpg +0 -0
- data/test.rb +42 -0
- metadata +546 -0
@@ -0,0 +1,1324 @@
|
|
1
|
+
/*
|
2
|
+
* Loongson MMI optimizations for libjpeg-turbo
|
3
|
+
*
|
4
|
+
* Copyright (C) 2016-2018, Loongson Technology Corporation Limited, BeiJing.
|
5
|
+
* All Rights Reserved.
|
6
|
+
* Copyright (C) 2019, D. R. Commander. All Rights Reserved.
|
7
|
+
*
|
8
|
+
* This software is provided 'as-is', without any express or implied
|
9
|
+
* warranty. In no event will the authors be held liable for any damages
|
10
|
+
* arising from the use of this software.
|
11
|
+
*
|
12
|
+
* Permission is granted to anyone to use this software for any purpose,
|
13
|
+
* including commercial applications, and to alter it and redistribute it
|
14
|
+
* freely, subject to the following restrictions:
|
15
|
+
*
|
16
|
+
* 1. The origin of this software must not be misrepresented; you must not
|
17
|
+
* claim that you wrote the original software. If you use this software
|
18
|
+
* in a product, an acknowledgment in the product documentation would be
|
19
|
+
* appreciated but is not required.
|
20
|
+
* 2. Altered source versions must be plainly marked as such, and must not be
|
21
|
+
* misrepresented as being the original software.
|
22
|
+
* 3. This notice may not be removed or altered from any source distribution.
|
23
|
+
*/
|
24
|
+
|
25
|
+
#ifndef __LOONGSON_MMINTRIN_H__
|
26
|
+
#define __LOONGSON_MMINTRIN_H__
|
27
|
+
|
28
|
+
#include <stdint.h>
|
29
|
+
|
30
|
+
|
31
|
+
#define FUNCTION_ATTRIBS \
|
32
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
33
|
+
|
34
|
+
|
35
|
+
/* Vectors are stored in 64-bit floating-point registers. */
|
36
|
+
typedef double __m64;
|
37
|
+
|
38
|
+
/* Having a 32-bit datatype allows us to use 32-bit loads in places like
|
39
|
+
load8888. */
|
40
|
+
typedef float __m32;
|
41
|
+
|
42
|
+
|
43
|
+
/********** Set Operations **********/
|
44
|
+
|
45
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
46
|
+
_mm_setzero_si64(void)
|
47
|
+
{
|
48
|
+
return 0.0;
|
49
|
+
}
|
50
|
+
|
51
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
52
|
+
_mm_set_pi8(uint8_t __b7, uint8_t __b6, uint8_t __b5, uint8_t __b4,
|
53
|
+
uint8_t __b3, uint8_t __b2, uint8_t __b1, uint8_t __b0)
|
54
|
+
{
|
55
|
+
__m64 ret;
|
56
|
+
uint32_t lo = ((uint32_t)__b6 << 24) |
|
57
|
+
((uint32_t)__b4 << 16) |
|
58
|
+
((uint32_t)__b2 << 8) |
|
59
|
+
(uint32_t)__b0;
|
60
|
+
uint32_t hi = ((uint32_t)__b7 << 24) |
|
61
|
+
((uint32_t)__b5 << 16) |
|
62
|
+
((uint32_t)__b3 << 8) |
|
63
|
+
(uint32_t)__b1;
|
64
|
+
|
65
|
+
asm("mtc1 %1, %0\n\t"
|
66
|
+
"mtc1 %2, $f0\n\t"
|
67
|
+
"punpcklbh %0, %0, $f0\n\t"
|
68
|
+
: "=f" (ret)
|
69
|
+
: "r" (lo), "r" (hi)
|
70
|
+
: "$f0"
|
71
|
+
);
|
72
|
+
|
73
|
+
return ret;
|
74
|
+
}
|
75
|
+
|
76
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
77
|
+
_mm_set_pi16(uint16_t __h3, uint16_t __h2, uint16_t __h1, uint16_t __h0)
|
78
|
+
{
|
79
|
+
__m64 ret;
|
80
|
+
uint32_t lo = ((uint32_t)__h2 << 16) | (uint32_t)__h0;
|
81
|
+
uint32_t hi = ((uint32_t)__h3 << 16) | (uint32_t)__h1;
|
82
|
+
|
83
|
+
asm("mtc1 %1, %0\n\t"
|
84
|
+
"mtc1 %2, $f0\n\t"
|
85
|
+
"punpcklhw %0, %0, $f0\n\t"
|
86
|
+
: "=f" (ret)
|
87
|
+
: "r" (lo), "r" (hi)
|
88
|
+
: "$f0"
|
89
|
+
);
|
90
|
+
|
91
|
+
return ret;
|
92
|
+
}
|
93
|
+
|
94
|
+
#define _MM_SHUFFLE(fp3, fp2, fp1, fp0) \
|
95
|
+
(((fp3) << 6) | ((fp2) << 4) | ((fp1) << 2) | (fp0))
|
96
|
+
|
97
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
98
|
+
_mm_set_pi32(uint32_t __i1, uint32_t __i0)
|
99
|
+
{
|
100
|
+
if (__builtin_constant_p(__i1) && __builtin_constant_p(__i0)) {
|
101
|
+
uint64_t val = ((uint64_t)__i1 << 32) |
|
102
|
+
((uint64_t)__i0 << 0);
|
103
|
+
|
104
|
+
return *(__m64 *)&val;
|
105
|
+
} else if (__i1 == __i0) {
|
106
|
+
uint64_t imm = _MM_SHUFFLE(1, 0, 1, 0);
|
107
|
+
__m64 ret;
|
108
|
+
|
109
|
+
asm("pshufh %0, %1, %2\n\t"
|
110
|
+
: "=f" (ret)
|
111
|
+
: "f" (*(__m32 *)&__i1), "f" (*(__m64 *)&imm)
|
112
|
+
);
|
113
|
+
|
114
|
+
return ret;
|
115
|
+
} else {
|
116
|
+
uint64_t val = ((uint64_t)__i1 << 32) |
|
117
|
+
((uint64_t)__i0 << 0);
|
118
|
+
|
119
|
+
return *(__m64 *)&val;
|
120
|
+
}
|
121
|
+
}
|
122
|
+
|
123
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
124
|
+
_mm_set1_pi8(uint8_t __b0)
|
125
|
+
{
|
126
|
+
__m64 ret;
|
127
|
+
|
128
|
+
asm("sll $8, %1, 8\n\t"
|
129
|
+
"or %1, %1, $8\n\t"
|
130
|
+
"mtc1 %1, %0\n\t"
|
131
|
+
"mtc1 $0, $f0\n\t"
|
132
|
+
"pshufh %0, %0, $f0\n\t"
|
133
|
+
: "=f" (ret)
|
134
|
+
: "r" (__b0)
|
135
|
+
: "$8", "$f0"
|
136
|
+
);
|
137
|
+
|
138
|
+
return ret;
|
139
|
+
}
|
140
|
+
|
141
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
142
|
+
_mm_set1_pi16(uint16_t __h0)
|
143
|
+
{
|
144
|
+
__m64 ret;
|
145
|
+
|
146
|
+
asm("mtc1 %1, %0\n\t"
|
147
|
+
"mtc1 $0, $f0\n\t"
|
148
|
+
"pshufh %0, %0, $f0\n\t"
|
149
|
+
: "=f" (ret)
|
150
|
+
: "r" (__h0)
|
151
|
+
: "$8", "$f0"
|
152
|
+
);
|
153
|
+
|
154
|
+
return ret;
|
155
|
+
}
|
156
|
+
|
157
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
158
|
+
_mm_set1_pi32(unsigned __i0)
|
159
|
+
{
|
160
|
+
return _mm_set_pi32(__i0, __i0);
|
161
|
+
}
|
162
|
+
|
163
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
164
|
+
_mm_setr_pi8(uint8_t __h0, uint8_t __h1, uint8_t __h2, uint8_t __h3,
|
165
|
+
uint8_t __h4, uint8_t __h5, uint8_t __h6, uint8_t __h7)
|
166
|
+
{
|
167
|
+
return _mm_set_pi8(__h7, __h6, __h5, __h4,
|
168
|
+
__h3, __h2, __h1, __h0);
|
169
|
+
}
|
170
|
+
|
171
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
172
|
+
_mm_setr_pi16(uint16_t __w0, uint16_t __w1, uint16_t __w2, uint16_t __w3)
|
173
|
+
{
|
174
|
+
return _mm_set_pi16(__w3, __w2, __w1, __w0);
|
175
|
+
}
|
176
|
+
|
177
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
178
|
+
_mm_setr_pi32(uint32_t __i0, uint32_t __i1)
|
179
|
+
{
|
180
|
+
return _mm_set_pi32(__i1, __i0);
|
181
|
+
}
|
182
|
+
|
183
|
+
|
184
|
+
/********** Arithmetic Operations **********/
|
185
|
+
|
186
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
187
|
+
_mm_add_pi8(__m64 __m1, __m64 __m2)
|
188
|
+
{
|
189
|
+
__m64 ret;
|
190
|
+
|
191
|
+
asm("paddb %0, %1, %2\n\t"
|
192
|
+
: "=f" (ret)
|
193
|
+
: "f" (__m1), "f" (__m2)
|
194
|
+
);
|
195
|
+
|
196
|
+
return ret;
|
197
|
+
}
|
198
|
+
|
199
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
200
|
+
_mm_add_pi16(__m64 __m1, __m64 __m2)
|
201
|
+
{
|
202
|
+
__m64 ret;
|
203
|
+
|
204
|
+
asm("paddh %0, %1, %2\n\t"
|
205
|
+
: "=f" (ret)
|
206
|
+
: "f" (__m1), "f" (__m2)
|
207
|
+
);
|
208
|
+
|
209
|
+
return ret;
|
210
|
+
}
|
211
|
+
|
212
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
213
|
+
_mm_add_pi32(__m64 __m1, __m64 __m2)
|
214
|
+
{
|
215
|
+
__m64 ret;
|
216
|
+
|
217
|
+
asm("paddw %0, %1, %2\n\t"
|
218
|
+
: "=f" (ret)
|
219
|
+
: "f" (__m1), "f" (__m2)
|
220
|
+
);
|
221
|
+
|
222
|
+
return ret;
|
223
|
+
}
|
224
|
+
|
225
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
226
|
+
_mm_add_si64(__m64 __m1, __m64 __m2)
|
227
|
+
{
|
228
|
+
__m64 ret;
|
229
|
+
|
230
|
+
asm("paddd %0, %1, %2\n\t"
|
231
|
+
: "=f" (ret)
|
232
|
+
: "f" (__m1), "f" (__m2)
|
233
|
+
);
|
234
|
+
|
235
|
+
return ret;
|
236
|
+
}
|
237
|
+
|
238
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
239
|
+
_mm_adds_pi8(__m64 __m1, __m64 __m2)
|
240
|
+
{
|
241
|
+
__m64 ret;
|
242
|
+
|
243
|
+
asm("paddsb %0, %1, %2\n\t"
|
244
|
+
: "=f" (ret)
|
245
|
+
: "f" (__m1), "f" (__m2)
|
246
|
+
);
|
247
|
+
|
248
|
+
return ret;
|
249
|
+
}
|
250
|
+
|
251
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
252
|
+
_mm_adds_pi16(__m64 __m1, __m64 __m2)
|
253
|
+
{
|
254
|
+
__m64 ret;
|
255
|
+
|
256
|
+
asm("paddsh %0, %1, %2\n\t"
|
257
|
+
: "=f" (ret)
|
258
|
+
: "f" (__m1), "f" (__m2)
|
259
|
+
);
|
260
|
+
|
261
|
+
return ret;
|
262
|
+
}
|
263
|
+
|
264
|
+
|
265
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
266
|
+
_mm_adds_pu8(__m64 __m1, __m64 __m2)
|
267
|
+
{
|
268
|
+
__m64 ret;
|
269
|
+
|
270
|
+
asm("paddusb %0, %1, %2\n\t"
|
271
|
+
: "=f" (ret)
|
272
|
+
: "f" (__m1), "f" (__m2)
|
273
|
+
);
|
274
|
+
|
275
|
+
return ret;
|
276
|
+
}
|
277
|
+
|
278
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
279
|
+
_mm_adds_pu16(__m64 __m1, __m64 __m2)
|
280
|
+
{
|
281
|
+
__m64 ret;
|
282
|
+
|
283
|
+
asm("paddush %0, %1, %2\n\t"
|
284
|
+
: "=f" (ret)
|
285
|
+
: "f" (__m1), "f" (__m2)
|
286
|
+
);
|
287
|
+
|
288
|
+
return ret;
|
289
|
+
}
|
290
|
+
|
291
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
292
|
+
_mm_avg_pu8(__m64 __m1, __m64 __m2)
|
293
|
+
{
|
294
|
+
__m64 ret;
|
295
|
+
|
296
|
+
asm("pavgb %0, %1, %2\n\t"
|
297
|
+
: "=f" (ret)
|
298
|
+
: "f" (__m1), "f" (__m2)
|
299
|
+
);
|
300
|
+
|
301
|
+
return ret;
|
302
|
+
}
|
303
|
+
|
304
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
305
|
+
_mm_avg_pu16(__m64 __m1, __m64 __m2)
|
306
|
+
{
|
307
|
+
__m64 ret;
|
308
|
+
|
309
|
+
asm("pavgh %0, %1, %2\n\t"
|
310
|
+
: "=f" (ret)
|
311
|
+
: "f" (__m1), "f" (__m2)
|
312
|
+
);
|
313
|
+
|
314
|
+
return ret;
|
315
|
+
}
|
316
|
+
|
317
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
318
|
+
_mm_madd_pi16(__m64 __m1, __m64 __m2)
|
319
|
+
{
|
320
|
+
__m64 ret;
|
321
|
+
|
322
|
+
asm("pmaddhw %0, %1, %2\n\t"
|
323
|
+
: "=f" (ret)
|
324
|
+
: "f" (__m1), "f" (__m2)
|
325
|
+
);
|
326
|
+
|
327
|
+
return ret;
|
328
|
+
}
|
329
|
+
|
330
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
331
|
+
_mm_max_pi16(__m64 __m1, __m64 __m2)
|
332
|
+
{
|
333
|
+
__m64 ret;
|
334
|
+
|
335
|
+
asm("pmaxsh %0, %1, %2\n\t"
|
336
|
+
: "=f" (ret)
|
337
|
+
: "f" (__m1), "f" (__m2)
|
338
|
+
);
|
339
|
+
|
340
|
+
return ret;
|
341
|
+
}
|
342
|
+
|
343
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
344
|
+
_mm_max_pu8(__m64 __m1, __m64 __m2)
|
345
|
+
{
|
346
|
+
__m64 ret;
|
347
|
+
|
348
|
+
asm("pmaxub %0, %1, %2\n\t"
|
349
|
+
: "=f" (ret)
|
350
|
+
: "f" (__m1), "f" (__m2)
|
351
|
+
);
|
352
|
+
|
353
|
+
return ret;
|
354
|
+
}
|
355
|
+
|
356
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
357
|
+
_mm_min_pi16(__m64 __m1, __m64 __m2)
|
358
|
+
{
|
359
|
+
__m64 ret;
|
360
|
+
|
361
|
+
asm("pminsh %0, %1, %2\n\t"
|
362
|
+
: "=f" (ret)
|
363
|
+
: "f" (__m1), "f" (__m2)
|
364
|
+
);
|
365
|
+
|
366
|
+
return ret;
|
367
|
+
}
|
368
|
+
|
369
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
370
|
+
_mm_min_pu8(__m64 __m1, __m64 __m2)
|
371
|
+
{
|
372
|
+
__m64 ret;
|
373
|
+
|
374
|
+
asm("pminub %0, %1, %2\n\t"
|
375
|
+
: "=f" (ret)
|
376
|
+
: "f" (__m1), "f" (__m2)
|
377
|
+
);
|
378
|
+
|
379
|
+
return ret;
|
380
|
+
}
|
381
|
+
|
382
|
+
extern __inline int FUNCTION_ATTRIBS
|
383
|
+
_mm_movemask_pi8(__m64 __m1)
|
384
|
+
{
|
385
|
+
int ret;
|
386
|
+
|
387
|
+
asm("pmovmskb %0, %1\n\t"
|
388
|
+
: "=r" (ret)
|
389
|
+
: "y" (__m1)
|
390
|
+
);
|
391
|
+
|
392
|
+
return ret;
|
393
|
+
}
|
394
|
+
|
395
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
396
|
+
_mm_mulhi_pi16(__m64 __m1, __m64 __m2)
|
397
|
+
{
|
398
|
+
__m64 ret;
|
399
|
+
|
400
|
+
asm("pmulhh %0, %1, %2\n\t"
|
401
|
+
: "=f" (ret)
|
402
|
+
: "f" (__m1), "f" (__m2)
|
403
|
+
);
|
404
|
+
|
405
|
+
return ret;
|
406
|
+
}
|
407
|
+
|
408
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
409
|
+
_mm_mulhi_pu16(__m64 __m1, __m64 __m2)
|
410
|
+
{
|
411
|
+
__m64 ret;
|
412
|
+
|
413
|
+
asm("pmulhuh %0, %1, %2\n\t"
|
414
|
+
: "=f" (ret)
|
415
|
+
: "f" (__m1), "f" (__m2)
|
416
|
+
);
|
417
|
+
|
418
|
+
return ret;
|
419
|
+
}
|
420
|
+
|
421
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
422
|
+
_mm_mullo_pi16(__m64 __m1, __m64 __m2)
|
423
|
+
{
|
424
|
+
__m64 ret;
|
425
|
+
|
426
|
+
asm("pmullh %0, %1, %2\n\t"
|
427
|
+
: "=f" (ret)
|
428
|
+
: "f" (__m1), "f" (__m2)
|
429
|
+
);
|
430
|
+
|
431
|
+
return ret;
|
432
|
+
}
|
433
|
+
|
434
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
435
|
+
_mm_mul_pu32(__m64 __m1, __m64 __m2)
|
436
|
+
{
|
437
|
+
__m64 ret;
|
438
|
+
|
439
|
+
asm("pmuluw %0, %1, %2\n\t"
|
440
|
+
: "=f" (ret)
|
441
|
+
: "f" (__m1), "f" (__m2)
|
442
|
+
);
|
443
|
+
|
444
|
+
return ret;
|
445
|
+
}
|
446
|
+
|
447
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
448
|
+
_mm_sad_pu8(__m64 __m1, __m64 __m2)
|
449
|
+
{
|
450
|
+
__m64 ret;
|
451
|
+
|
452
|
+
asm("psadbh %0, %1, %2\n\t"
|
453
|
+
: "=f" (ret)
|
454
|
+
: "f" (__m1), "f" (__m2)
|
455
|
+
);
|
456
|
+
|
457
|
+
return ret;
|
458
|
+
}
|
459
|
+
|
460
|
+
|
461
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
462
|
+
_mm_asub_pu8(__m64 __m1, __m64 __m2)
|
463
|
+
{
|
464
|
+
__m64 ret;
|
465
|
+
|
466
|
+
asm("pasubub %0, %1, %2\n\t"
|
467
|
+
: "=f" (ret)
|
468
|
+
: "f" (__m1), "f" (__m2)
|
469
|
+
);
|
470
|
+
|
471
|
+
return ret;
|
472
|
+
}
|
473
|
+
|
474
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
475
|
+
_mm_biadd_pu8(__m64 __m1, __m64 __m2)
|
476
|
+
{
|
477
|
+
__m64 ret;
|
478
|
+
|
479
|
+
asm("biadd %0, %1, %2\n\t"
|
480
|
+
: "=f" (ret)
|
481
|
+
: "f" (__m1), "f" (__m2)
|
482
|
+
);
|
483
|
+
|
484
|
+
return ret;
|
485
|
+
}
|
486
|
+
|
487
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
488
|
+
_mm_sub_pi8(__m64 __m1, __m64 __m2)
|
489
|
+
{
|
490
|
+
__m64 ret;
|
491
|
+
|
492
|
+
asm("psubb %0, %1, %2\n\t"
|
493
|
+
: "=f" (ret)
|
494
|
+
: "f" (__m1), "f" (__m2)
|
495
|
+
);
|
496
|
+
|
497
|
+
return ret;
|
498
|
+
}
|
499
|
+
|
500
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
501
|
+
_mm_sub_pi16(__m64 __m1, __m64 __m2)
|
502
|
+
{
|
503
|
+
__m64 ret;
|
504
|
+
|
505
|
+
asm("psubh %0, %1, %2\n\t"
|
506
|
+
: "=f" (ret)
|
507
|
+
: "f" (__m1), "f" (__m2)
|
508
|
+
);
|
509
|
+
|
510
|
+
return ret;
|
511
|
+
}
|
512
|
+
|
513
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
514
|
+
_mm_sub_pi32(__m64 __m1, __m64 __m2)
|
515
|
+
{
|
516
|
+
__m64 ret;
|
517
|
+
|
518
|
+
asm("psubw %0, %1, %2\n\t"
|
519
|
+
: "=f" (ret)
|
520
|
+
: "f" (__m1), "f" (__m2)
|
521
|
+
);
|
522
|
+
|
523
|
+
return ret;
|
524
|
+
}
|
525
|
+
|
526
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
527
|
+
_mm_sub_si64(__m64 __m1, __m64 __m2)
|
528
|
+
{
|
529
|
+
__m64 ret;
|
530
|
+
|
531
|
+
asm("psubd %0, %1, %2\n\t"
|
532
|
+
: "=f" (ret)
|
533
|
+
: "f" (__m1), "f" (__m2)
|
534
|
+
);
|
535
|
+
|
536
|
+
return ret;
|
537
|
+
}
|
538
|
+
|
539
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
540
|
+
_mm_subs_pi8(__m64 __m1, __m64 __m2)
|
541
|
+
{
|
542
|
+
__m64 ret;
|
543
|
+
|
544
|
+
asm("psubsb %0, %1, %2\n\t"
|
545
|
+
: "=f" (ret)
|
546
|
+
: "f" (__m1), "f" (__m2)
|
547
|
+
);
|
548
|
+
|
549
|
+
return ret;
|
550
|
+
}
|
551
|
+
|
552
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
553
|
+
_mm_subs_pi16(__m64 __m1, __m64 __m2)
|
554
|
+
{
|
555
|
+
__m64 ret;
|
556
|
+
|
557
|
+
asm("psubsh %0, %1, %2\n\t"
|
558
|
+
: "=f" (ret)
|
559
|
+
: "f" (__m1), "f" (__m2)
|
560
|
+
);
|
561
|
+
|
562
|
+
return ret;
|
563
|
+
}
|
564
|
+
|
565
|
+
|
566
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
567
|
+
_mm_subs_pu8(__m64 __m1, __m64 __m2)
|
568
|
+
{
|
569
|
+
__m64 ret;
|
570
|
+
|
571
|
+
asm("psubusb %0, %1, %2\n\t"
|
572
|
+
: "=f" (ret)
|
573
|
+
: "f" (__m1), "f" (__m2)
|
574
|
+
);
|
575
|
+
|
576
|
+
return ret;
|
577
|
+
}
|
578
|
+
|
579
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
580
|
+
_mm_subs_pu16(__m64 __m1, __m64 __m2)
|
581
|
+
{
|
582
|
+
__m64 ret;
|
583
|
+
|
584
|
+
asm("psubush %0, %1, %2\n\t"
|
585
|
+
: "=f" (ret)
|
586
|
+
: "f" (__m1), "f" (__m2)
|
587
|
+
);
|
588
|
+
|
589
|
+
return ret;
|
590
|
+
}
|
591
|
+
|
592
|
+
|
593
|
+
/********** Logical Operations **********/
|
594
|
+
|
595
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
596
|
+
_mm_and_si64(__m64 __m1, __m64 __m2)
|
597
|
+
{
|
598
|
+
__m64 ret;
|
599
|
+
|
600
|
+
asm("and %0, %1, %2\n\t"
|
601
|
+
: "=f" (ret)
|
602
|
+
: "f" (__m1), "f" (__m2)
|
603
|
+
);
|
604
|
+
|
605
|
+
return ret;
|
606
|
+
}
|
607
|
+
|
608
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
609
|
+
_mm_andnot_si64(__m64 __m1, __m64 __m2)
|
610
|
+
{
|
611
|
+
__m64 ret;
|
612
|
+
|
613
|
+
asm("andn %0, %1, %2\n\t"
|
614
|
+
: "=f" (ret)
|
615
|
+
: "f" (__m1), "f" (__m2)
|
616
|
+
);
|
617
|
+
|
618
|
+
return ret;
|
619
|
+
}
|
620
|
+
|
621
|
+
|
622
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
623
|
+
_mm_or_si32(__m32 __m1, __m32 __m2)
|
624
|
+
{
|
625
|
+
__m32 ret;
|
626
|
+
|
627
|
+
asm("or %0, %1, %2\n\t"
|
628
|
+
: "=f" (ret)
|
629
|
+
: "f" (__m1), "f" (__m2)
|
630
|
+
);
|
631
|
+
|
632
|
+
return ret;
|
633
|
+
}
|
634
|
+
|
635
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
636
|
+
_mm_or_si64(__m64 __m1, __m64 __m2)
|
637
|
+
{
|
638
|
+
__m64 ret;
|
639
|
+
|
640
|
+
asm("or %0, %1, %2\n\t"
|
641
|
+
: "=f" (ret)
|
642
|
+
: "f" (__m1), "f" (__m2)
|
643
|
+
);
|
644
|
+
|
645
|
+
return ret;
|
646
|
+
}
|
647
|
+
|
648
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
649
|
+
_mm_xor_si64(__m64 __m1, __m64 __m2)
|
650
|
+
{
|
651
|
+
__m64 ret;
|
652
|
+
|
653
|
+
asm("xor %0, %1, %2\n\t"
|
654
|
+
: "=f" (ret)
|
655
|
+
: "f" (__m1), "f" (__m2)
|
656
|
+
);
|
657
|
+
|
658
|
+
return ret;
|
659
|
+
}
|
660
|
+
|
661
|
+
|
662
|
+
/********** Shift Operations **********/
|
663
|
+
|
664
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
665
|
+
_mm_slli_pi16(__m64 __m, int64_t __count)
|
666
|
+
{
|
667
|
+
__m64 ret;
|
668
|
+
|
669
|
+
asm("psllh %0, %1, %2\n\t"
|
670
|
+
: "=f" (ret)
|
671
|
+
: "f" (__m), "f" (*(__m64 *)&__count)
|
672
|
+
);
|
673
|
+
|
674
|
+
return ret;
|
675
|
+
}
|
676
|
+
|
677
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
678
|
+
_mm_slli_pi32(__m64 __m, int64_t __count)
|
679
|
+
{
|
680
|
+
__m64 ret;
|
681
|
+
|
682
|
+
asm("psllw %0, %1, %2\n\t"
|
683
|
+
: "=f" (ret)
|
684
|
+
: "f" (__m), "f" (*(__m64 *)&__count)
|
685
|
+
);
|
686
|
+
|
687
|
+
return ret;
|
688
|
+
}
|
689
|
+
|
690
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
691
|
+
_mm_slli_si64(__m64 __m, int64_t __count)
|
692
|
+
{
|
693
|
+
__m64 ret;
|
694
|
+
|
695
|
+
asm("dsll %0, %1, %2\n\t"
|
696
|
+
: "=f" (ret)
|
697
|
+
: "f" (__m), "f" (*(__m64 *)&__count)
|
698
|
+
);
|
699
|
+
|
700
|
+
return ret;
|
701
|
+
}
|
702
|
+
|
703
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
704
|
+
_mm_srli_pi16(__m64 __m, int64_t __count)
|
705
|
+
{
|
706
|
+
__m64 ret;
|
707
|
+
|
708
|
+
asm("psrlh %0, %1, %2\n\t"
|
709
|
+
: "=f" (ret)
|
710
|
+
: "f" (__m), "f" (*(__m64 *)&__count)
|
711
|
+
);
|
712
|
+
|
713
|
+
return ret;
|
714
|
+
}
|
715
|
+
|
716
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
717
|
+
_mm_srli_pi32(__m64 __m, int64_t __count)
|
718
|
+
{
|
719
|
+
__m64 ret;
|
720
|
+
|
721
|
+
asm("psrlw %0, %1, %2\n\t"
|
722
|
+
: "=f" (ret)
|
723
|
+
: "f" (__m), "f" (*(__m64 *)&__count)
|
724
|
+
);
|
725
|
+
|
726
|
+
return ret;
|
727
|
+
}
|
728
|
+
|
729
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
730
|
+
_mm_srli_si64(__m64 __m, int64_t __count)
|
731
|
+
{
|
732
|
+
__m64 ret;
|
733
|
+
|
734
|
+
asm("dsrl %0, %1, %2\n\t"
|
735
|
+
: "=f" (ret)
|
736
|
+
: "f" (__m), "f" (*(__m64 *)&__count)
|
737
|
+
);
|
738
|
+
|
739
|
+
return ret;
|
740
|
+
}
|
741
|
+
|
742
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
743
|
+
_mm_srai_pi16(__m64 __m, int64_t __count)
|
744
|
+
{
|
745
|
+
__m64 ret;
|
746
|
+
|
747
|
+
asm("psrah %0, %1, %2\n\t"
|
748
|
+
: "=f" (ret)
|
749
|
+
: "f" (__m), "f" (*(__m64 *)&__count)
|
750
|
+
);
|
751
|
+
|
752
|
+
return ret;
|
753
|
+
}
|
754
|
+
|
755
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
756
|
+
_mm_srai_pi32(__m64 __m, int64_t __count)
|
757
|
+
{
|
758
|
+
__m64 ret;
|
759
|
+
|
760
|
+
asm("psraw %0, %1, %2\n\t"
|
761
|
+
: "=f" (ret)
|
762
|
+
: "f" (__m), "f" (*(__m64 *)&__count)
|
763
|
+
);
|
764
|
+
|
765
|
+
return ret;
|
766
|
+
}
|
767
|
+
|
768
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
769
|
+
_mm_srai_si64(__m64 __m, int64_t __count)
|
770
|
+
{
|
771
|
+
__m64 ret;
|
772
|
+
|
773
|
+
asm("dsra %0, %1, %2\n\t"
|
774
|
+
: "=f" (ret)
|
775
|
+
: "f" (__m), "f" (*(__m64 *)&__count)
|
776
|
+
);
|
777
|
+
|
778
|
+
return ret;
|
779
|
+
}
|
780
|
+
|
781
|
+
|
782
|
+
/********** Conversion Intrinsics **********/
|
783
|
+
|
784
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
785
|
+
to_m64(uint64_t x)
|
786
|
+
{
|
787
|
+
return *(__m64 *)&x;
|
788
|
+
}
|
789
|
+
|
790
|
+
extern __inline uint64_t FUNCTION_ATTRIBS
|
791
|
+
to_uint64(__m64 x)
|
792
|
+
{
|
793
|
+
return *(uint64_t *)&x;
|
794
|
+
}
|
795
|
+
|
796
|
+
|
797
|
+
/********** Comparison Intrinsics **********/
|
798
|
+
|
799
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
800
|
+
_mm_cmpeq_pi8(__m64 __m1, __m64 __m2)
|
801
|
+
{
|
802
|
+
__m64 ret;
|
803
|
+
|
804
|
+
asm("pcmpeqb %0, %1, %2\n\t"
|
805
|
+
: "=f" (ret)
|
806
|
+
: "f" (__m1), "f" (__m2)
|
807
|
+
);
|
808
|
+
|
809
|
+
return ret;
|
810
|
+
}
|
811
|
+
|
812
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
813
|
+
_mm_cmpeq_pi16(__m64 __m1, __m64 __m2)
|
814
|
+
{
|
815
|
+
__m64 ret;
|
816
|
+
|
817
|
+
asm("pcmpeqh %0, %1, %2\n\t"
|
818
|
+
: "=f" (ret)
|
819
|
+
: "f" (__m1), "f" (__m2)
|
820
|
+
);
|
821
|
+
|
822
|
+
return ret;
|
823
|
+
}
|
824
|
+
|
825
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
826
|
+
_mm_cmpeq_pi32(__m64 __m1, __m64 __m2)
|
827
|
+
{
|
828
|
+
__m64 ret;
|
829
|
+
|
830
|
+
asm("pcmpeqw %0, %1, %2\n\t"
|
831
|
+
: "=f" (ret)
|
832
|
+
: "f" (__m1), "f" (__m2)
|
833
|
+
);
|
834
|
+
|
835
|
+
return ret;
|
836
|
+
}
|
837
|
+
|
838
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
839
|
+
_mm_cmpgt_pi8(__m64 __m1, __m64 __m2)
|
840
|
+
{
|
841
|
+
__m64 ret;
|
842
|
+
|
843
|
+
asm("pcmpgtb %0, %1, %2\n\t"
|
844
|
+
: "=f" (ret)
|
845
|
+
: "f" (__m1), "f" (__m2)
|
846
|
+
);
|
847
|
+
|
848
|
+
return ret;
|
849
|
+
}
|
850
|
+
|
851
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
852
|
+
_mm_cmpgt_pi16(__m64 __m1, __m64 __m2)
|
853
|
+
{
|
854
|
+
__m64 ret;
|
855
|
+
|
856
|
+
asm("pcmpgth %0, %1, %2\n\t"
|
857
|
+
: "=f" (ret)
|
858
|
+
: "f" (__m1), "f" (__m2)
|
859
|
+
);
|
860
|
+
|
861
|
+
return ret;
|
862
|
+
}
|
863
|
+
|
864
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
865
|
+
_mm_cmpgt_pi32(__m64 __m1, __m64 __m2)
|
866
|
+
{
|
867
|
+
__m64 ret;
|
868
|
+
|
869
|
+
asm("pcmpgtw %0, %1, %2\n\t"
|
870
|
+
: "=f" (ret)
|
871
|
+
: "f" (__m1), "f" (__m2)
|
872
|
+
);
|
873
|
+
|
874
|
+
return ret;
|
875
|
+
}
|
876
|
+
|
877
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
878
|
+
_mm_cmplt_pi8(__m64 __m1, __m64 __m2)
|
879
|
+
{
|
880
|
+
__m64 ret;
|
881
|
+
|
882
|
+
asm("pcmpltb %0, %1, %2\n\t"
|
883
|
+
: "=f" (ret)
|
884
|
+
: "f" (__m1), "f" (__m2)
|
885
|
+
);
|
886
|
+
|
887
|
+
return ret;
|
888
|
+
}
|
889
|
+
|
890
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
891
|
+
_mm_cmplt_pi16(__m64 __m1, __m64 __m2)
|
892
|
+
{
|
893
|
+
__m64 ret;
|
894
|
+
|
895
|
+
asm("pcmplth %0, %1, %2\n\t"
|
896
|
+
: "=f" (ret)
|
897
|
+
: "f" (__m1), "f" (__m2)
|
898
|
+
);
|
899
|
+
|
900
|
+
return ret;
|
901
|
+
}
|
902
|
+
|
903
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
904
|
+
_mm_cmplt_pi32(__m64 __m1, __m64 __m2)
|
905
|
+
{
|
906
|
+
__m64 ret;
|
907
|
+
|
908
|
+
asm("pcmpltw %0, %1, %2\n\t"
|
909
|
+
: "=f" (ret)
|
910
|
+
: "f" (__m1), "f" (__m2)
|
911
|
+
);
|
912
|
+
|
913
|
+
return ret;
|
914
|
+
}
|
915
|
+
|
916
|
+
|
917
|
+
/********** Miscellaneous Operations **********/
|
918
|
+
|
919
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
920
|
+
_mm_packs_pi16(__m64 __m1, __m64 __m2)
|
921
|
+
{
|
922
|
+
__m64 ret;
|
923
|
+
|
924
|
+
asm("packsshb %0, %1, %2\n\t"
|
925
|
+
: "=f" (ret)
|
926
|
+
: "f" (__m1), "f" (__m2)
|
927
|
+
);
|
928
|
+
|
929
|
+
return ret;
|
930
|
+
}
|
931
|
+
|
932
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
933
|
+
_mm_packs_pi32(__m64 __m1, __m64 __m2)
|
934
|
+
{
|
935
|
+
__m64 ret;
|
936
|
+
|
937
|
+
asm("packsswh %0, %1, %2\n\t"
|
938
|
+
: "=f" (ret)
|
939
|
+
: "f" (__m1), "f" (__m2)
|
940
|
+
);
|
941
|
+
|
942
|
+
return ret;
|
943
|
+
}
|
944
|
+
|
945
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
946
|
+
_mm_packs_pi32_f(__m64 __m1, __m64 __m2)
|
947
|
+
{
|
948
|
+
__m64 ret;
|
949
|
+
|
950
|
+
asm("packsswh %0, %1, %2\n\t"
|
951
|
+
: "=f" (ret)
|
952
|
+
: "f" (__m1), "f" (__m2)
|
953
|
+
);
|
954
|
+
|
955
|
+
return ret;
|
956
|
+
}
|
957
|
+
|
958
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
959
|
+
_mm_packs_pu16(__m64 __m1, __m64 __m2)
|
960
|
+
{
|
961
|
+
__m64 ret;
|
962
|
+
|
963
|
+
asm("packushb %0, %1, %2\n\t"
|
964
|
+
: "=f" (ret)
|
965
|
+
: "f" (__m1), "f" (__m2)
|
966
|
+
);
|
967
|
+
|
968
|
+
return ret;
|
969
|
+
}
|
970
|
+
|
971
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
972
|
+
_mm_extract_pi16(__m64 __m, int64_t __pos)
|
973
|
+
{
|
974
|
+
__m64 ret;
|
975
|
+
|
976
|
+
asm("pextrh %0, %1, %2\n\t"
|
977
|
+
: "=f" (ret)
|
978
|
+
: "f" (__m), "f" (*(__m64 *)&__pos)
|
979
|
+
);
|
980
|
+
|
981
|
+
return ret;
|
982
|
+
}
|
983
|
+
|
984
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
985
|
+
_mm_insert_pi16(__m64 __m1, __m64 __m2, int64_t __pos)
|
986
|
+
{
|
987
|
+
__m64 ret;
|
988
|
+
|
989
|
+
switch (__pos) {
|
990
|
+
case 0:
|
991
|
+
|
992
|
+
asm("pinsrh_0 %0, %1, %2\n\t"
|
993
|
+
: "=f" (ret)
|
994
|
+
: "f" (__m1), "f" (__m2), "i" (__pos)
|
995
|
+
);
|
996
|
+
|
997
|
+
break;
|
998
|
+
|
999
|
+
case 1:
|
1000
|
+
|
1001
|
+
asm("pinsrh_1 %0, %1, %2\n\t"
|
1002
|
+
: "=f" (ret)
|
1003
|
+
: "f" (__m1), "f" (__m2), "i" (__pos)
|
1004
|
+
);
|
1005
|
+
|
1006
|
+
break;
|
1007
|
+
case 2:
|
1008
|
+
|
1009
|
+
asm("pinsrh_2 %0, %1, %2\n\t"
|
1010
|
+
: "=f" (ret)
|
1011
|
+
: "f" (__m1), "f" (__m2), "i" (__pos)
|
1012
|
+
);
|
1013
|
+
|
1014
|
+
break;
|
1015
|
+
|
1016
|
+
case 3:
|
1017
|
+
|
1018
|
+
asm("pinsrh_3 %0, %1, %2\n\t"
|
1019
|
+
: "=f" (ret)
|
1020
|
+
: "f" (__m1), "f" (__m2), "i" (__pos)
|
1021
|
+
);
|
1022
|
+
|
1023
|
+
break;
|
1024
|
+
}
|
1025
|
+
|
1026
|
+
return ret;
|
1027
|
+
}
|
1028
|
+
|
1029
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1030
|
+
_mm_shuffle_pi16(__m64 __m, int64_t __n)
|
1031
|
+
{
|
1032
|
+
__m64 ret;
|
1033
|
+
|
1034
|
+
asm("pshufh %0, %1, %2\n\t"
|
1035
|
+
: "=f" (ret)
|
1036
|
+
: "f" (__m), "f" (*(__m64 *)&__n)
|
1037
|
+
);
|
1038
|
+
|
1039
|
+
return ret;
|
1040
|
+
}
|
1041
|
+
|
1042
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1043
|
+
_mm_unpackhi_pi8(__m64 __m1, __m64 __m2)
|
1044
|
+
{
|
1045
|
+
__m64 ret;
|
1046
|
+
|
1047
|
+
asm("punpckhbh %0, %1, %2\n\t"
|
1048
|
+
: "=f" (ret)
|
1049
|
+
: "f" (__m1), "f" (__m2)
|
1050
|
+
);
|
1051
|
+
|
1052
|
+
return ret;
|
1053
|
+
}
|
1054
|
+
|
1055
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1056
|
+
_mm_unpackhi_pi8_f(__m64 __m1, __m64 __m2)
|
1057
|
+
{
|
1058
|
+
__m64 ret;
|
1059
|
+
|
1060
|
+
asm("punpckhbh %0, %1, %2\n\t"
|
1061
|
+
: "=f" (ret)
|
1062
|
+
: "f" (__m1), "f" (__m2)
|
1063
|
+
);
|
1064
|
+
|
1065
|
+
return ret;
|
1066
|
+
}
|
1067
|
+
|
1068
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1069
|
+
_mm_unpackhi_pi16(__m64 __m1, __m64 __m2)
|
1070
|
+
{
|
1071
|
+
__m64 ret;
|
1072
|
+
|
1073
|
+
asm("punpckhhw %0, %1, %2\n\t"
|
1074
|
+
: "=f" (ret)
|
1075
|
+
: "f" (__m1), "f" (__m2)
|
1076
|
+
);
|
1077
|
+
|
1078
|
+
return ret;
|
1079
|
+
}
|
1080
|
+
|
1081
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1082
|
+
_mm_unpackhi_pi16_f(__m64 __m1, __m64 __m2)
|
1083
|
+
{
|
1084
|
+
__m64 ret;
|
1085
|
+
|
1086
|
+
asm("punpckhhw %0, %1, %2\n\t"
|
1087
|
+
: "=f" (ret)
|
1088
|
+
: "f" (__m1), "f" (__m2)
|
1089
|
+
);
|
1090
|
+
|
1091
|
+
return ret;
|
1092
|
+
}
|
1093
|
+
|
1094
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1095
|
+
_mm_unpackhi_pi32(__m64 __m1, __m64 __m2)
|
1096
|
+
{
|
1097
|
+
__m64 ret;
|
1098
|
+
|
1099
|
+
asm("punpckhwd %0, %1, %2\n\t"
|
1100
|
+
: "=f" (ret)
|
1101
|
+
: "f" (__m1), "f" (__m2)
|
1102
|
+
);
|
1103
|
+
|
1104
|
+
return ret;
|
1105
|
+
}
|
1106
|
+
|
1107
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1108
|
+
_mm_unpacklo_pi8(__m64 __m1, __m64 __m2)
|
1109
|
+
{
|
1110
|
+
__m64 ret;
|
1111
|
+
|
1112
|
+
asm("punpcklbh %0, %1, %2\n\t"
|
1113
|
+
: "=f" (ret)
|
1114
|
+
: "f" (__m1), "f" (__m2)
|
1115
|
+
);
|
1116
|
+
|
1117
|
+
return ret;
|
1118
|
+
}
|
1119
|
+
|
1120
|
+
/* Since punpcklbh cares about the high 32-bits, we use the __m64 datatype,
|
1121
|
+
which preserves the data. */
|
1122
|
+
|
1123
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1124
|
+
_mm_unpacklo_pi8_f64(__m64 __m1, __m64 __m2)
|
1125
|
+
{
|
1126
|
+
__m64 ret;
|
1127
|
+
|
1128
|
+
asm("punpcklbh %0, %1, %2\n\t"
|
1129
|
+
: "=f" (ret)
|
1130
|
+
: "f" (__m1), "f" (__m2)
|
1131
|
+
);
|
1132
|
+
|
1133
|
+
return ret;
|
1134
|
+
}
|
1135
|
+
|
1136
|
+
/* Since punpcklbh doesn't care about the high 32-bits, we use the __m32,
|
1137
|
+
datatype, which allows load8888 to use 32-bit loads. */
|
1138
|
+
|
1139
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1140
|
+
_mm_unpacklo_pi8_f(__m32 __m1, __m64 __m2)
|
1141
|
+
{
|
1142
|
+
__m64 ret;
|
1143
|
+
|
1144
|
+
asm("punpcklbh %0, %1, %2\n\t"
|
1145
|
+
: "=f" (ret)
|
1146
|
+
: "f" (__m1), "f" (__m2)
|
1147
|
+
);
|
1148
|
+
|
1149
|
+
return ret;
|
1150
|
+
}
|
1151
|
+
|
1152
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1153
|
+
_mm_unpacklo_pi16(__m64 __m1, __m64 __m2)
|
1154
|
+
{
|
1155
|
+
__m64 ret;
|
1156
|
+
|
1157
|
+
asm("punpcklhw %0, %1, %2\n\t"
|
1158
|
+
: "=f" (ret)
|
1159
|
+
: "f" (__m1), "f" (__m2)
|
1160
|
+
);
|
1161
|
+
|
1162
|
+
return ret;
|
1163
|
+
}
|
1164
|
+
|
1165
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1166
|
+
_mm_unpacklo_pi16_f(__m64 __m1, __m64 __m2)
|
1167
|
+
{
|
1168
|
+
__m64 ret;
|
1169
|
+
|
1170
|
+
asm("punpcklhw %0, %1, %2\n\t"
|
1171
|
+
: "=f" (ret)
|
1172
|
+
: "f" (__m1), "f" (__m2)
|
1173
|
+
);
|
1174
|
+
|
1175
|
+
return ret;
|
1176
|
+
}
|
1177
|
+
|
1178
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1179
|
+
_mm_unpacklo_pi32(__m64 __m1, __m64 __m2)
|
1180
|
+
{
|
1181
|
+
__m64 ret;
|
1182
|
+
|
1183
|
+
asm("punpcklwd %0, %1, %2\n\t"
|
1184
|
+
: "=f" (ret)
|
1185
|
+
: "f" (__m1), "f" (__m2)
|
1186
|
+
);
|
1187
|
+
|
1188
|
+
return ret;
|
1189
|
+
}
|
1190
|
+
|
1191
|
+
|
1192
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1193
|
+
_mm_unpacklo_pi32_f(__m64 __m1, __m64 __m2)
|
1194
|
+
{
|
1195
|
+
__m64 ret;
|
1196
|
+
|
1197
|
+
asm("punpcklwd %0, %1, %2\n\t"
|
1198
|
+
: "=f" (ret)
|
1199
|
+
: "f" (__m1), "f" (__m2)
|
1200
|
+
);
|
1201
|
+
|
1202
|
+
return ret;
|
1203
|
+
}
|
1204
|
+
|
1205
|
+
extern __inline void FUNCTION_ATTRIBS
|
1206
|
+
_mm_store_pi32(__m32 *dest, __m64 src)
|
1207
|
+
{
|
1208
|
+
src = _mm_packs_pu16(src, _mm_setzero_si64());
|
1209
|
+
|
1210
|
+
asm("swc1 %1, %0\n\t"
|
1211
|
+
: "=m" (*dest)
|
1212
|
+
: "f" (src)
|
1213
|
+
: "memory"
|
1214
|
+
);
|
1215
|
+
}
|
1216
|
+
|
1217
|
+
extern __inline void FUNCTION_ATTRIBS
|
1218
|
+
_mm_store_si64(__m64 *dest, __m64 src)
|
1219
|
+
{
|
1220
|
+
asm("gssdlc1 %1, 7+%0\n\t"
|
1221
|
+
"gssdrc1 %1, %0\n\t"
|
1222
|
+
: "=m" (*dest)
|
1223
|
+
: "f" (src)
|
1224
|
+
: "memory"
|
1225
|
+
);
|
1226
|
+
}
|
1227
|
+
|
1228
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1229
|
+
_mm_load_si32(const __m32 *src)
|
1230
|
+
{
|
1231
|
+
__m32 ret;
|
1232
|
+
|
1233
|
+
asm("lwc1 %0, %1\n\t"
|
1234
|
+
: "=f" (ret)
|
1235
|
+
: "m" (*src)
|
1236
|
+
);
|
1237
|
+
|
1238
|
+
return ret;
|
1239
|
+
}
|
1240
|
+
|
1241
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1242
|
+
_mm_load_si64(const __m64 *src)
|
1243
|
+
{
|
1244
|
+
__m64 ret;
|
1245
|
+
|
1246
|
+
asm("ldc1 %0, %1\n\t"
|
1247
|
+
: "=f" (ret)
|
1248
|
+
: "m" (*src)
|
1249
|
+
: "memory"
|
1250
|
+
);
|
1251
|
+
|
1252
|
+
return ret;
|
1253
|
+
}
|
1254
|
+
|
1255
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1256
|
+
_mm_loadu_si64(const __m64 *src)
|
1257
|
+
{
|
1258
|
+
__m64 ret;
|
1259
|
+
|
1260
|
+
asm("gsldlc1 %0, 7(%1)\n\t"
|
1261
|
+
"gsldrc1 %0, 0(%1)\n\t"
|
1262
|
+
: "=f" (ret)
|
1263
|
+
: "r" (src)
|
1264
|
+
: "memory"
|
1265
|
+
);
|
1266
|
+
|
1267
|
+
return ret;
|
1268
|
+
}
|
1269
|
+
|
1270
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1271
|
+
_mm_loadlo_pi8(const uint32_t *src)
|
1272
|
+
{
|
1273
|
+
return _mm_unpacklo_pi8_f(*(__m32 *)src, _mm_setzero_si64());
|
1274
|
+
}
|
1275
|
+
|
1276
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1277
|
+
_mm_loadlo_pi8_f(__m64 src)
|
1278
|
+
{
|
1279
|
+
return _mm_unpacklo_pi8_f64(src, _mm_setzero_si64());
|
1280
|
+
}
|
1281
|
+
|
1282
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1283
|
+
_mm_loadhi_pi8_f(__m64 src)
|
1284
|
+
{
|
1285
|
+
return _mm_unpackhi_pi8_f(src, _mm_setzero_si64());
|
1286
|
+
}
|
1287
|
+
|
1288
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1289
|
+
_mm_loadlo_pi16(__m64 src)
|
1290
|
+
{
|
1291
|
+
return _mm_unpacklo_pi16(src, _mm_setzero_si64());
|
1292
|
+
}
|
1293
|
+
|
1294
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1295
|
+
_mm_loadlo_pi16_f(__m64 src)
|
1296
|
+
{
|
1297
|
+
return _mm_unpacklo_pi16_f(_mm_setzero_si64(), src);
|
1298
|
+
}
|
1299
|
+
|
1300
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1301
|
+
_mm_loadhi_pi16(__m64 src)
|
1302
|
+
{
|
1303
|
+
return _mm_unpackhi_pi16(src, _mm_setzero_si64());
|
1304
|
+
}
|
1305
|
+
|
1306
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1307
|
+
_mm_loadhi_pi16_f(__m64 src)
|
1308
|
+
{
|
1309
|
+
return _mm_unpackhi_pi16_f(_mm_setzero_si64(), src);
|
1310
|
+
}
|
1311
|
+
|
1312
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1313
|
+
_mm_expand_alpha(__m64 pixel)
|
1314
|
+
{
|
1315
|
+
return _mm_shuffle_pi16(pixel, _MM_SHUFFLE(3, 3, 3, 3));
|
1316
|
+
}
|
1317
|
+
|
1318
|
+
extern __inline __m64 FUNCTION_ATTRIBS
|
1319
|
+
_mm_expand_alpha_rev(__m64 pixel)
|
1320
|
+
{
|
1321
|
+
return _mm_shuffle_pi16(pixel, _MM_SHUFFLE(0, 0, 0, 0));
|
1322
|
+
}
|
1323
|
+
|
1324
|
+
#endif /* __LOONGSON_MMINTRIN_H__ */
|