初始化内容

This commit is contained in:
2026-09-16 14:07:40 +08:00
parent 6934b390bf
commit 4f643c1e7c
18350 changed files with 6088489 additions and 305 deletions
+789
View File
@@ -0,0 +1,789 @@
{
"projectName": "simde",
"projectOwner": "nemequ",
"repoType": "github",
"repoHost": "https://github.com",
"files": [
"README.md"
],
"imageSize": 100,
"commit": true,
"commitConvention": "none",
"contributors": [
{
"login": "nemequ",
"name": "Evan Nemerson",
"avatar_url": "https://avatars0.githubusercontent.com/u/1151?v=4",
"profile": "https://nemequ.github.io/",
"contributions": [
"code",
"content",
"doc",
"example",
"ideas",
"question",
"review",
"test",
"tutorial",
"talk",
"bug",
"infra",
"maintenance",
"projectManagement"
]
},
{
"login": "mr-c",
"name": "Michael R. Crusoe",
"avatar_url": "https://avatars3.githubusercontent.com/u/1330696?v=4",
"profile": "https://orcid.org/0000-0002-2961-9670",
"contributions": [
"bug",
"code",
"eventOrganizing",
"fundingFinding",
"ideas",
"infra",
"platform",
"test",
"maintenance",
"projectManagement",
"review"
]
},
{
"login": "himanshi18037",
"name": "HIMANSHI MATHUR",
"avatar_url": "https://avatars1.githubusercontent.com/u/43923076?v=4",
"profile": "https://github.com/himanshi18037",
"contributions": [
"code",
"test"
]
},
{
"login": "masterchef2209",
"name": "Hidayat Khan",
"avatar_url": "https://avatars0.githubusercontent.com/u/27916352?v=4",
"profile": "https://github.com/masterchef2209",
"contributions": [
"code",
"test"
]
},
{
"login": "rosbif",
"name": "rosbif",
"avatar_url": "https://avatars1.githubusercontent.com/u/553899?v=4",
"profile": "https://github.com/rosbif",
"contributions": [
"code",
"test",
"bug",
"ideas",
"doc"
]
},
{
"login": "junaruga",
"name": "Jun Aruga",
"avatar_url": "https://avatars2.githubusercontent.com/u/121989?v=4",
"profile": "http://junaruga.hatenablog.com/",
"contributions": [
"code",
"ideas",
"platform",
"infra",
"maintenance",
"test",
"bug"
]
},
{
"login": "marmeladema",
"name": "Élie ROUDNINSKI",
"avatar_url": "https://avatars2.githubusercontent.com/u/1629419?v=4",
"profile": "https://github.com/marmeladema",
"contributions": [
"code",
"test"
]
},
{
"login": "jsbache",
"name": "Jesper Storm Bache",
"avatar_url": "https://avatars3.githubusercontent.com/u/7937081?v=4",
"profile": "http://www.bache.name",
"contributions": [
"code"
]
},
{
"login": "jeffdaily",
"name": "Jeff Daily",
"avatar_url": "https://avatars1.githubusercontent.com/u/904248?v=4",
"profile": "https://github.com/jeffdaily",
"contributions": [
"code",
"infra"
]
},
{
"login": "yekm",
"name": "Pavel",
"avatar_url": "https://avatars2.githubusercontent.com/u/205196?v=4",
"profile": "https://github.com/yekm",
"contributions": [
"code"
]
},
{
"login": "sabarishbollapragada",
"name": "Sabarish Bollapragada",
"avatar_url": "https://avatars3.githubusercontent.com/u/36379720?v=4",
"profile": "https://github.com/sabarishbollapragada",
"contributions": [
"code"
]
},
{
"login": "gh2o",
"name": "Gavin Li",
"avatar_url": "https://avatars2.githubusercontent.com/u/371529?v=4",
"profile": "http://www.thegavinli.com/",
"contributions": [
"code"
]
},
{
"login": "betajippity",
"name": "Yining Karl Li",
"avatar_url": "https://avatars0.githubusercontent.com/u/1057198?v=4",
"profile": "http://www.yiningkarlli.com",
"contributions": [
"code"
]
},
{
"login": "anirbandey303",
"name": "Anirban Dey",
"avatar_url": "https://avatars1.githubusercontent.com/u/29774651?v=4",
"profile": "https://www.facebook.com/anirbandey303",
"contributions": [
"doc"
]
},
{
"login": "Un1Gfn",
"name": "Darren Ng",
"avatar_url": "https://avatars3.githubusercontent.com/u/28521292?v=4",
"profile": "https://github.com/Un1Gfn",
"contributions": [
"doc"
]
},
{
"login": "FaresSalem",
"name": "FaresSalem",
"avatar_url": "https://avatars0.githubusercontent.com/u/7736245?v=4",
"profile": "https://github.com/FaresSalem",
"contributions": [
"doc"
]
},
{
"login": "GorePradnyesh",
"name": "Pradnyesh Gore",
"avatar_url": "https://avatars0.githubusercontent.com/u/843197?v=4",
"profile": "https://github.com/GorePradnyesh",
"contributions": [
"code"
]
},
{
"login": "seanptmaher",
"name": "Sean Maher",
"avatar_url": "https://avatars0.githubusercontent.com/u/39571964?v=4",
"profile": "https://github.com/seanptmaher",
"contributions": [
"code"
]
},
{
"login": "Artoria2e5",
"name": "Mingye Wang",
"avatar_url": "https://avatars.githubusercontent.com/u/6459309?v=4",
"profile": "https://zh.wikipedia.org/wiki/User:Artoria2e5",
"contributions": [
"doc"
]
},
{
"login": "ngzhian",
"name": "Ng Zhi An",
"avatar_url": "https://avatars.githubusercontent.com/u/1749303?v=4",
"profile": "http://www.ngzhian.com",
"contributions": [
"code",
"doc"
]
},
{
"login": "Glitch18",
"name": "Atharva Nimbalkar",
"avatar_url": "https://avatars.githubusercontent.com/u/30515829?v=4",
"profile": "https://github.com/Glitch18",
"contributions": [
"code",
"test"
]
},
{
"login": "simba611",
"name": "simba611",
"avatar_url": "https://avatars.githubusercontent.com/u/59763921?v=4",
"profile": "https://github.com/simba611",
"contributions": [
"code",
"test"
]
},
{
"login": "ashnewmanjones",
"name": "Ashleigh Newman-Jones",
"avatar_url": "https://avatars.githubusercontent.com/u/29983014?v=4",
"profile": "https://ashnewmanjones.com",
"contributions": [
"code",
"test"
]
},
{
"login": "wrv",
"name": "Willy R. Vasquez",
"avatar_url": "https://avatars.githubusercontent.com/u/5039686?v=4",
"profile": "https://alum.mit.edu/www/wrv/",
"contributions": [
"code",
"maintenance",
"test"
]
},
{
"login": "keithw",
"name": "Keith Winstein",
"avatar_url": "https://avatars.githubusercontent.com/u/208955?v=4",
"profile": "https://cs.stanford.edu/~keithw",
"contributions": [
"code",
"maintenance",
"test"
]
},
{
"login": "SoapGentoo",
"name": "David Seifert",
"avatar_url": "https://avatars.githubusercontent.com/u/16636962?v=4",
"profile": "https://github.com/SoapGentoo",
"contributions": [
"maintenance"
]
},
{
"login": "milot-mirdita",
"name": "Milot Mirdita",
"avatar_url": "https://avatars.githubusercontent.com/u/63657?v=4",
"profile": "https://mirdita.de",
"contributions": [
"code",
"maintenance",
"test"
]
},
{
"login": "aqrit",
"name": "aqrit",
"avatar_url": "https://avatars.githubusercontent.com/u/4021602?v=4",
"profile": "http://bitpatch.com",
"contributions": [
"code",
"maintenance"
]
},
{
"login": "dgazzoni",
"name": "Décio Luiz Gazzoni Filho",
"avatar_url": "https://avatars.githubusercontent.com/u/17934171?v=4",
"profile": "https://github.com/dgazzoni",
"contributions": [
"code",
"maintenance",
"test"
]
},
{
"login": "makise-homura",
"name": "Igor Molchanov",
"avatar_url": "https://avatars.githubusercontent.com/u/16463967?v=4",
"profile": "http://vk.com/muzzdiez",
"contributions": [
"code",
"maintenance",
"platform"
]
},
{
"login": "anrodrig",
"name": "Andrew Rodriguez",
"avatar_url": "https://avatars.githubusercontent.com/u/35815808?v=4",
"profile": "https://github.com/anrodrig",
"contributions": [
"code",
"maintenance",
"test"
]
},
{
"login": "Changqing-JING",
"name": "Changqing Jing",
"avatar_url": "https://avatars.githubusercontent.com/u/59640930?v=4",
"profile": "https://github.com/Changqing-JING",
"contributions": [
"maintenance"
]
},
{
"login": "jpcima",
"name": "JP Cimalando",
"avatar_url": "https://avatars.githubusercontent.com/u/17614485?v=4",
"profile": "http://jpcima.sdf1.org/",
"contributions": [
"code",
"infra"
]
},
{
"login": "FlyGoat",
"name": "Jiaxun Yang",
"avatar_url": "https://avatars.githubusercontent.com/u/5955297?v=4",
"profile": "https://flygoat.com/",
"contributions": [
"code",
"platform"
]
},
{
"login": "ktgw0316",
"name": "Masahiro Kitagawa",
"avatar_url": "https://avatars.githubusercontent.com/u/3116763?v=4",
"profile": "https://github.com/ktgw0316",
"contributions": [
"code",
"test"
]
},
{
"login": "operasfantom",
"name": "Pavel Iatchenii",
"avatar_url": "https://avatars.githubusercontent.com/u/31903947?v=4",
"profile": "https://github.com/operasfantom",
"contributions": [
"code",
"test"
]
},
{
"login": "tommyvct",
"name": "Tommy Vercetti",
"avatar_url": "https://avatars.githubusercontent.com/u/7903172?v=4",
"profile": "https://tommyvct.tk",
"contributions": [
"maintenance"
]
},
{
"login": "rscohn2",
"name": "Robert Cohn",
"avatar_url": "https://avatars.githubusercontent.com/u/1936730?v=4",
"profile": "https://github.com/rscohn2",
"contributions": [
"maintenance"
]
},
{
"login": "adamnovak",
"name": "Adam Novak",
"avatar_url": "https://avatars.githubusercontent.com/u/5062495?v=4",
"profile": "https://github.com/adamnovak",
"contributions": [
"doc"
]
},
{
"login": "boris-kuz",
"name": "boris-kuz",
"avatar_url": "https://avatars.githubusercontent.com/u/18011434?v=4",
"profile": "https://github.com/boris-kuz",
"contributions": [
"maintenance"
]
},
{
"login": "Epixu",
"name": "Dimo Markov",
"avatar_url": "https://avatars.githubusercontent.com/u/1529601?v=4",
"profile": "https://github.com/Epixu",
"contributions": [
"maintenance"
]
},
{
"login": "dhbloo",
"name": "dblue",
"avatar_url": "https://avatars.githubusercontent.com/u/32353216?v=4",
"profile": "https://dhbloo.github.io/",
"contributions": [
"maintenance"
]
},
{
"login": "zekehul",
"name": "zekehul",
"avatar_url": "https://avatars.githubusercontent.com/u/8780526?v=4",
"profile": "https://github.com/zekehul",
"contributions": [
"code",
"maintenance"
]
},
{
"login": "LaurentThomas",
"name": "Laurent Thomas",
"avatar_url": "https://avatars.githubusercontent.com/u/40661368?v=4",
"profile": "https://open-cells.com",
"contributions": [
"code"
]
},
{
"login": "maxbachmann",
"name": "Max Bachmann",
"avatar_url": "https://avatars.githubusercontent.com/u/44199644?v=4",
"profile": "https://github.com/maxbachmann",
"contributions": [
"doc"
]
},
{
"login": "psaab",
"name": "psaab",
"avatar_url": "https://avatars.githubusercontent.com/u/196946?v=4",
"profile": "https://github.com/psaab",
"contributions": [
"maintenance"
]
},
{
"login": "sbc100",
"name": "Sam Clegg",
"avatar_url": "https://avatars.githubusercontent.com/u/515813?v=4",
"profile": "http://superduper.net/",
"contributions": [
"maintenance"
]
},
{
"login": "tlively",
"name": "Thomas Lively",
"avatar_url": "https://avatars.githubusercontent.com/u/7121787?v=4",
"profile": "https://twitter.com/tlively52",
"contributions": [
"bug",
"ideas",
"maintenance"
]
},
{
"login": "coderzh",
"name": "coderzh",
"avatar_url": "https://avatars.githubusercontent.com/u/329164?v=4",
"profile": "http://blog.coderzh.com/",
"contributions": [
"code",
"test"
]
},
{
"login": "k-dominik",
"name": "Dominik Kutra",
"avatar_url": "https://avatars.githubusercontent.com/u/24434157?v=4",
"profile": "https://github.com/k-dominik",
"contributions": [
"code",
"test"
]
},
{
"login": "Lithrein",
"name": "Lithrein",
"avatar_url": "https://avatars.githubusercontent.com/u/207981?v=4",
"profile": "https://github.com/Lithrein",
"contributions": [
"maintenance"
]
},
{
"login": "quyykk",
"name": "Nick",
"avatar_url": "https://avatars.githubusercontent.com/u/85879619?v=4",
"profile": "https://github.com/quyykk",
"contributions": [
"maintenance"
]
},
{
"login": "thomasdwu",
"name": "thomasdwu",
"avatar_url": "https://avatars.githubusercontent.com/u/6819659?v=4",
"profile": "https://github.com/thomasdwu",
"contributions": [
"maintenance"
]
},
{
"login": "Remnant44",
"name": "Stephen",
"avatar_url": "https://avatars.githubusercontent.com/u/54461740?v=4",
"profile": "https://github.com/Remnant44",
"contributions": [
"bug"
]
},
{
"login": "johnplatts",
"name": "John Platts",
"avatar_url": "https://avatars.githubusercontent.com/u/28941113?v=4",
"profile": "https://github.com/johnplatts",
"contributions": [
"bug"
]
},
{
"login": "tycho",
"name": "Steven Noonan",
"avatar_url": "https://avatars.githubusercontent.com/u/29616?v=4",
"profile": "https://github.com/tycho",
"contributions": [
"bug"
]
},
{
"login": "p0nce",
"name": "p0nce ",
"avatar_url": "https://avatars.githubusercontent.com/u/1067485?v=4",
"profile": "https://github.com/p0nce",
"contributions": [
"bug"
]
},
{
"login": "pabs3",
"name": "Paul Wise",
"avatar_url": "https://avatars.githubusercontent.com/u/328602?v=4",
"profile": "https://bonedaddy.net/pabs3/",
"contributions": [
"bug"
]
},
{
"login": "easyaspi314",
"name": "easyaspi314 (Devin)",
"avatar_url": "https://avatars.githubusercontent.com/u/6258309?v=4",
"profile": "https://github.com/easyaspi314",
"contributions": [
"bug",
"code"
]
},
{
"login": "JonLiu1993",
"name": "JonLiu1993",
"avatar_url": "https://avatars.githubusercontent.com/u/63675417?v=4",
"profile": "https://github.com/JonLiu1993",
"contributions": [
"platform"
]
},
{
"login": "Cheney-W",
"name": "Cheney Wang",
"avatar_url": "https://avatars.githubusercontent.com/u/38240633?v=4",
"profile": "https://github.com/Cheney-W",
"contributions": [
"platform"
]
},
{
"login": "myd7349",
"name": "myd7349 ",
"avatar_url": "https://avatars.githubusercontent.com/u/5435649?v=4",
"profile": "http://myd7349.github.io/",
"contributions": [
"platform"
]
},
{
"login": "chausner",
"name": "chausner",
"avatar_url": "https://avatars.githubusercontent.com/u/15180557?v=4",
"profile": "https://github.com/chausner",
"contributions": [
"platform"
]
},
{
"login": "yyctw",
"name": "Yi-Yen Chung",
"avatar_url": "https://avatars.githubusercontent.com/u/45251297?v=4",
"profile": "https://github.com/yyctw",
"contributions": [
"code",
"test"
]
},
{
"login": "wewe5215",
"name": "Chi-Wei Chu",
"avatar_url": "https://avatars.githubusercontent.com/u/76145143?v=4",
"profile": "https://github.com/wewe5215",
"contributions": [
"code",
"test"
]
},
{
"login": "M-HT",
"name": "M-HT",
"avatar_url": "https://avatars.githubusercontent.com/u/12173952?v=4",
"profile": "https://github.com/M-HT",
"contributions": [
"code"
]
},
{
"login": "SGSSGene",
"name": "Simon Gene Gottlieb",
"avatar_url": "https://avatars.githubusercontent.com/u/456045?v=4",
"profile": "https://gottliebtfreitag.de",
"contributions": [
"code"
]
},
{
"login": "cbielow",
"name": "Chris Bielow",
"avatar_url": "https://avatars.githubusercontent.com/u/6008722?v=4",
"profile": "http://bsc.fu-berlin.de",
"contributions": [
"code"
]
},
{
"login": "XiWeiGu",
"name": "gu xiwei",
"avatar_url": "https://avatars.githubusercontent.com/u/41367273?v=4",
"profile": "https://github.com/XiWeiGu",
"contributions": [
"platform",
"test"
]
},
{
"login": "Vineg",
"name": "George Vinokhodov",
"avatar_url": "https://avatars.githubusercontent.com/u/1757455?v=4",
"profile": "https://github.com/Vineg",
"contributions": [
"code"
]
},
{
"login": "Coeur",
"name": "Cœur",
"avatar_url": "https://avatars.githubusercontent.com/u/839992?v=4",
"profile": "https://github.com/Coeur",
"contributions": [
"code"
]
},
{
"login": "Proudsalsa",
"name": "Florian @Proudsalsa",
"avatar_url": "https://avatars.githubusercontent.com/u/103449548?v=4",
"profile": "https://github.com/Proudsalsa",
"contributions": [
"code"
]
},
{
"login": "thomas-schlichter",
"name": "Thomas Schlichter",
"avatar_url": "https://avatars.githubusercontent.com/u/106664923?v=4",
"profile": "https://github.com/thomas-schlichter",
"contributions": [
"bug",
"code"
]
},
{
"login": "AymenQ",
"name": "Aymen Qader",
"avatar_url": "https://avatars.githubusercontent.com/u/3706283?v=4",
"profile": "https://github.com/AymenQ",
"contributions": [
"code"
]
},
{
"login": "eric900115",
"name": "Eric Su",
"avatar_url": "https://avatars.githubusercontent.com/u/77781328?v=4",
"profile": "https://github.com/eric900115",
"contributions": [
"code",
"platform"
]
},
{
"login": "Torinde",
"name": "Torinde",
"avatar_url": "https://avatars.githubusercontent.com/u/97228894?v=4",
"profile": "https://github.com/Torinde",
"contributions": [
"bug",
"doc",
"ideas"
]
},
{
"login": "howjmay",
"name": "Yang Hau",
"avatar_url": "https://avatars.githubusercontent.com/u/13924801?v=4",
"profile": "https://www.linkedin.com/in/yanghauyuan/",
"contributions": [
"code",
"ideas"
]
},
{
"login": "zengdage",
"name": "Zhijin Zeng",
"avatar_url": "https://avatars.githubusercontent.com/u/16076103?v=4",
"profile": "https://github.com/zengdage",
"contributions": [
"code"
]
}
],
"contributorsPerLine": 7
}
+121
View File
@@ -0,0 +1,121 @@
environment:
MESON_EXE_WRAPPER: "['C:\\Program Files\\OpenCppCoverage\\OpenCppCoverage.exe', '--export_type=cobertura', '--']"
CCACHE_MAXSIZE: '500Mi'
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
VCVARSALL: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python311-x64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python311-x64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python38-x64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
PYTHON_DIR: C:\Python38-x64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
VCVARSALL: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python311-x64
FLAGS: /arch:AVX
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python311-x64
FLAGS: /arch:AVX
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python38-x64
FLAGS: /arch:AVX
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
PYTHON_DIR: C:\Python38-x64
FLAGS: /arch:AVX
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
VCVARSALL: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python311-x64
FLAGS: /arch:AVX2
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python311-x64
FLAGS: /arch:AVX2
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python38-x64
FLAGS: /arch:AVX2
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
PYTHON_DIR: C:\Python38-x64
FLAGS: /arch:AVX2
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
VCVARSALL: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python311-x64
FLAGS: /arch:AVX512
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python311-x64
FLAGS: /arch:AVX512
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
VCVARSALL: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat
PYTHON_DIR: C:\Python38-x64
FLAGS: /arch:AVX512
branches:
except:
- /^ci/(?!appveyor)(/.+)?/
- /^dependabot/(/.+)?/
platform:
- x64
cache:
- '%SystemDrive%\ccache'
init:
- pwsh: |
$Env:APPVEYOR_SAVE_CACHE_ON_ERROR = 'true'
on_failure:
- appveyor PushArtifact build\meson-logs\meson-log.txt
- appveyor PushArtifact build\meson-logs\testlog.txt
install:
- cmd: set PATH=%PYTHON_DIR%;%PYTHON_DIR%\scripts;%PATH%
- cmd: pip install --upgrade ninja meson
- cmd: choco install opencppcoverage codecov ccache
- cmd: call "%VCVARSALL%" amd64
before_build:
- ps: |
git submodule -q update --init --recursive
if ($ENV:FLAGS -notlike "*ARCH*") {
echo "tests will be run"
} else {
echo "FLAGS is $ENV:FLAGS"
}
build_script:
- cmd: |
set CCACHE_DIR=%SystemDrive%\ccache
set CC=ccache.exe cl.exe
set CXX=ccache.exe cl.exe
ccache.exe --zero-stats
set CFLAGS=/WX /Z7 %FLAGS%
set CXXFLAGS=/WX /Z7 %FLAGS%
meson --backend=ninja build
meson compile -C build --verbose
ccache.exe --show-stats
test_script:
# "meson test -C build" fails due to excessively long command line
- ps: |
if ($ENV:FLAGS -notlike "*ARCH*") {
ninja -C build test
} else {
echo "skipping test"
}
## This seems to work; data shows up on CodeCov, but it emits an error
## which makes AppVeyor thing the whole build failed. Example:
## https://ci.appveyor.com/project/quixdb/ci-noise/build/job/e7d1wpt9icu77fn2
# after_test:
# - ps: |
# Invoke-WebRequest -Uri 'https://codecov.io/bash' -OutFile codecov.sh
# $env:APPVEYOR="true"
# $env:CI="true"
# bash codecov.sh -f "run-testsCoverage.xml"
+82
View File
@@ -0,0 +1,82 @@
pool:
vmImage: 'ubuntu-22.04'
trigger:
branches:
exclude:
- master
# - ci/*
# include:
# - ci/azure*
jobs:
- job: clang_analysis
timeoutInMinutes: 120
variables:
CC: clang-14
CXX: clang++-14
CFLAGS: -Wextra -Werror
CXXFLAGS: -Wextra -Werror
steps:
- script: uname -a && cat /proc/cpuinfo /proc/meminfo
displayName: System Information
- script: sudo add-apt-repository 'ppa:ubuntu-toolchain-r/test' && sudo apt-get update && sudo apt-get install -y ninja-build ninja-build python3-pip python3-setuptools python3-wheel clang-14 clang-tools-14
displayName: Install APT Dependencies
- script: pip3 install -v meson==0.55.1
displayName: Install pip Dependencies
- script: scan-build-14 /home/vsts/.local/bin/meson setup build -Db_sanitize=address,undefined
displayName: Configure
- script: scan-build-14 ninja -C build -v
displayName: Build
- script: ninja -C build -v test
displayName: Test
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: 'build/meson-logs/testlog.junit.xml'
- job: gcc_analysis
timeoutInMinutes: 120
variables:
CC: gcc-10
CXX: g++-10
CFLAGS: -fanalyzer -Wextra -Werror
CXXFLAGS: -fanalyzer -Wextra -Werror
steps:
- script: uname -a && cat /proc/cpuinfo /proc/meminfo
displayName: System Information
- script: sudo add-apt-repository 'ppa:ubuntu-toolchain-r/test' && sudo apt-get update && sudo apt-get install -y ninja-build ninja-build python3-pip python3-setuptools python3-wheel gcc-10 g++-10
displayName: Install APT Dependencies
- script: pip3 install meson==0.55.1
displayName: Install pip Dependencies
- script: /home/vsts/.local/bin/meson setup build -Db_sanitize=address,undefined
displayName: Configure
- script: ninja -C build -v
displayName: Build
- script: ninja -C build -v test
displayName: Test
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: 'build/meson-logs/testlog.junit.xml'
# - job: loongson3a
# container:
# image: debian:unstable
# options: "--name ci-container -v /usr/bin/docker:/tmp/docker:ro"
# steps:
# # https://github.com/Microsoft/azure-pipelines-agent/issues/2043
# - script: /tmp/docker exec -t -u 0 ci-container sh -c "apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confold" -y install sudo"
# displayName: 'Install Sudo in container'
# - script: uname -a && cat /proc/cpuinfo /proc/meminfo
# displayName: System Information
# - script: sudo dpkg --add-architecture mips64el && sudo apt-get update && sudo apt-get install -y ninja-build ninja-build python3-pip python3-setuptools python3-wheel libc6:mips64el gcc-10-mips64el-linux-gnuabi64 g++-10-mips64el-linux-gnuabi64 qemu-user-static
# displayName: Install APT Dependencies
# - script: pip3 install meson==0.55.1
# displayName: Install pip Dependencies
# - script: /home/vsts/.local/bin/meson setup build --cross-file=docker/cross-files/loongson-gcc-10.cross
# displayName: Configure
# - script: ninja -C build -v
# displayName: Build
# - script: ninja -C build -v test
# displayName: Test
+263
View File
@@ -0,0 +1,263 @@
version: 2.1
jobs:
native-aliases-arm64:
resource_class: arm.medium
machine:
image: ubuntu-2404:current
environment:
CFLAGS: -Wextra -Werror -march=native -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING
CXXFLAGS: -Wextra -Werror -march=native -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING
CC: gcc
CXX: g++
steps:
- run: sudo apt-get update && sudo apt-get install -y git ninja-build pipx gcc-14 g++-14 libxml2-utils ccache
- checkout
- restore_cache:
keys:
- ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
- ccache-{{ .Environment.CIRCLE_JOB }}-master
- ccache-{{ .Environment.CIRCLE_JOB }}
- run: cat /proc/cpuinfo /proc/meminfo
- run:
command: |
ccache --set-config=max_size='500M'
ccache --set-config=compression=true
ccache -p
ccache -z
- run: pipx install meson==0.55.1
- run: ./test/native-aliases.sh
- run: |
export PATH=/usr/lib/ccache:${PATH}
CC="ccache gcc-14" CXX="ccache g++-14" ${HOME}/.local/bin/meson setup build -Db_coverage=true
ninja -C build -v -j $(nproc)
- run: /usr/bin/ccache -s
- save_cache:
key: 'ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ epoch }}'
paths: [ "/home/circleci/.cache/ccache" ]
when: always
- run: ninja -C build -v test
gcc:
resource_class: large
docker:
- image: debian:testing-slim
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
environment:
CFLAGS: -Wextra -Werror -march=native
CXXFLAGS: -Wextra -Werror -march=native
CC: gcc
CXX: g++
steps:
- run: apt-get update && apt-get install -y git ssh ninja-build pipx python3-setuptools python3-wheel gcovr gcc g++ ccache
- checkout
- restore_cache:
keys:
- ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
- ccache-{{ .Environment.CIRCLE_JOB }}-master
- ccache-{{ .Environment.CIRCLE_JOB }}
- run: cat /proc/cpuinfo /proc/meminfo
- run:
command: |
ccache --set-config=max_size='500M'
ccache --set-config=compression=true
ccache -p
ccache -z
- run: pipx install meson==0.55.1
- run: |
export PATH=/usr/lib/ccache:${PATH}
CC="ccache gcc" CXX="ccache g++" /root/.local/bin/meson setup build
ninja -C build -v -j 5
- run: /usr/bin/ccache -s
- save_cache:
key: 'ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ epoch }}'
paths: [ "/root/.cache/ccache" ]
when: always
- run: ninja -C build -v test
portable-memfunctions:
resource_class: large
docker:
- image: debian:testing-slim
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
environment:
CFLAGS: -Wextra -Werror -march=native -DSIMDE_NO_STDLIB
CXXFLAGS: -Wextra -Werror -march=native -DSIMDE_NO_STDLIB
CC: gcc
CXX: g++
steps:
- run: apt-get update && apt-get install -y git ssh ninja-build pipx python3-setuptools python3-wheel gcovr gcc g++ ccache
- checkout
- restore_cache:
keys:
- ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
- ccache-{{ .Environment.CIRCLE_JOB }}-master
- ccache-{{ .Environment.CIRCLE_JOB }}
- run: cat /proc/cpuinfo /proc/meminfo
- run:
command: |
ccache --set-config=max_size='500M'
ccache --set-config=compression=true
ccache -p
ccache -z
- run: pipx install meson==0.55.1
- run: |
export PATH=/usr/lib/ccache:${PATH}
CC="ccache gcc" CXX="ccache g++" /root/.local/bin/meson setup build
ninja -C build -v -j 5
- run: /usr/bin/ccache -s
- save_cache:
key: 'ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ epoch }}'
paths: [ "/root/.cache/ccache" ]
when: always
- run: ninja -C build -v test
clang:
resource_class: large
docker:
- image: debian:testing-slim
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
environment:
CFLAGS: -Weverything -Werror -march=native
CXXFLAGS: -Weverything -Werror -march=native
steps:
- run: apt-get update && apt-get install -y git ssh ninja-build pipx python3-setuptools python3-wheel gcovr clang ccache
- checkout
- restore_cache:
keys:
- ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
- ccache-{{ .Environment.CIRCLE_JOB }}-master
- ccache-{{ .Environment.CIRCLE_JOB }}
- run: cat /proc/cpuinfo /proc/meminfo
- run:
command: |
ccache --set-config=max_size='500M'
ccache --set-config=compression=true
ccache -p
ccache -z
- run: pipx install meson==0.55.1
- run: |
export PATH=/usr/lib/ccache:${PATH}
CFLAGS="-Wno-unsafe-buffer-usage" CXXFLAGS="-Wno-unsafe-buffer-usage" CC="ccache clang" CXX="ccache clang++" /root/.local/bin/meson setup build
ninja -C build -v -j 5
- run: /usr/bin/ccache -s
- save_cache:
key: 'ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ epoch }}'
paths: [ "/root/.cache/ccache" ]
when: always
- run: ninja -C build -v test
i686:
resource_class: large
docker:
- image: debian:testing-slim
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
steps:
- run: apt-get update && apt-get install -y git ssh ninja-build pipx python3-setuptools python3-wheel gcovr {gcc,g++}-i686-linux-gnu libc6-i386-cross qemu-user-static ccache
- checkout
- restore_cache:
keys:
- ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
- ccache-{{ .Environment.CIRCLE_JOB }}-master
- ccache-{{ .Environment.CIRCLE_JOB }}
- run:
name: System Information
command: cat /proc/cpuinfo /proc/meminfo
- run: dpkg --add-architecture i386
- run: pipx install meson==0.55.1
- run:
command: |
ccache --set-config=max_size='500M'
ccache --set-config=compression=true
ccache -p
ccache -z
- run: |
export PATH=/usr/lib/ccache:${PATH}
/root/.local/bin/meson setup build --cross-file docker/cross-files/i686-gcc-qemu-ccache.cross
/root/.local/bin/meson compile -C build --verbose -j 5
- run: /usr/bin/ccache -s
- save_cache:
key: 'ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ epoch }}'
paths: [ "/root/.cache/ccache" ]
when: always
- run: /root/.local/bin/meson test -C build --num-processes 5 --print-errorlogs
i686-gcc12-O2:
resource_class: large
docker:
- image: debian:stable-slim
auth:
username: $DOCKERHUB_USERNAME
password: $DOCKERHUB_PASSWORD
steps:
- run: apt-get update && apt-get install -y git ssh ninja-build pipx python3-setuptools python3-wheel gcovr {gcc,g++}-12-i686-linux-gnu libc6-i386-cross qemu-user-static ccache build-essential
- checkout
- restore_cache:
keys:
- ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
- ccache-{{ .Environment.CIRCLE_JOB }}-master
- ccache-{{ .Environment.CIRCLE_JOB }}
- run:
name: System Information
command: cat /proc/cpuinfo /proc/meminfo
- run: dpkg --add-architecture i386
- run: pipx install meson==0.55.1
- run:
command: |
ccache --set-config=max_size='500M'
ccache --set-config=compression=true
ccache -p
ccache -z
- run: |
export PATH=/usr/lib/ccache:${PATH}
/root/.local/bin/meson setup build --cross-file docker/cross-files/i686-gcc-12-qemu-ccache.cross
/root/.local/bin/meson compile -C build --verbose -j 5
- run: /usr/bin/ccache -s
- save_cache:
key: 'ccache-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ epoch }}'
paths: [ "/root/.cache/ccache" ]
when: always
- run: /root/.local/bin/meson test -C build --num-processes 5 --print-errorlogs
workflows:
version: 2
test:
jobs:
- native-aliases-arm64:
filters:
branches:
ignore:
- /^ci/(?!circleci).*$/
- portable-memfunctions:
filters:
branches:
ignore:
- /^ci/(?!circleci).*$/
- gcc:
filters:
branches:
ignore:
- /^ci/(?!circleci).*$/
- clang:
filters:
branches:
ignore:
- /^ci/(?!circleci).*$/
# - i686:
# filters:
# branches:
# ignore:
# - /^ci/(?!circleci).*$/
- i686-gcc12-O2:
filters:
branches:
ignore:
- /^ci/(?!circleci).*$/
+24
View File
@@ -0,0 +1,24 @@
container:
image: debian:trixie-slim
task:
name: Sanitizers
skip: $BRANCH == "master" || ($BRANCH != 'ci/cirrus' && $BRANCH =~ '^ci/.+')
env:
CC: clang-17
CXX: clang++-17
CFLAGS: -Wextra -Werror -march=native
CXXFLAGS: -Wextra -Werror -march=native
system_info_script:
- cat /proc/cpuinfo
- cat /proc/meminfo
install_dependencies_script:
- apt-get update
- apt-get install -y ninja-build ninja-build pipx python3-setuptools python3-wheel gcovr clang-17
- pipx install meson==0.55.1
configure_script:
- /root/.local/bin/meson setup build -Db_coverage=true -Db_sanitize=address,undefined -Db_lundef=false
build_script:
- ninja -C build -v -j 3
test_script:
- ninja -C build -v test
+4
View File
@@ -0,0 +1,4 @@
*build*
docker/build*
sde*
.git
+119
View File
@@ -0,0 +1,119 @@
# -*- Python -*-
# Drone CI Starlark configuration file.
# https://docs.drone.io/pipeline/scripting/starlark/
# Run `drone starlark convert --stdout` to verify `.drone.star`.
def main(ctx):
jobs = []
for arch in ['aarch64', 'armv8', 'armv7']:
drone_arch = 'arm'
if arch == 'aarch64':
drone_arch = 'arm64'
for compiler in ['gcc', 'clang']:
cc = compiler
cxx = compiler + '++'
compiler_flags = []
packages = ['ninja-build', 'git-core', 'python3-pip', 'gcovr']
if arch == 'armv7':
compiler_flags.extend(['-march=armv7-a', '-mfpu=neon'])
elif arch == 'armv8':
compiler_flags.extend(['-march=armv8-a', '-mfpu=neon'])
elif arch == 'aarch64':
compiler_flags.extend(['-march=armv8-a+simd+crypto+crc'])
if compiler == 'gcc':
cxx = 'g++'
compiler_flags.extend(['-Wextra', '-Werror'])
packages.extend(['gcc', 'g++'])
elif compiler == 'clang':
compiler_flags.extend(['-Weverything', '-Werror'])
packages.extend(['clang'])
cflags = ' '.join(compiler_flags)
cxxflags = ' '.join(compiler_flags)
environment = {
"CC": cc,
"CXX": cxx,
"CFLAGS": cflags,
"CXXFLAGS": cxxflags,
"DEBIAN_FRONTEND": "noninteractive",
}
exclude_branches = ['master']
for provider in ['gha', 'cirrus', 'semaphore', 'circleci', 'appveyor', 'azure', 'travis']:
exclude_branches.append('ci/' + provider)
exclude_branches.append('ci/' + provider + '/**')
jobs.append({
"kind": "pipeline",
"type": "docker",
"name": compiler + ' ' + arch,
"platform": {
"os": "linux",
"arch": drone_arch
},
"steps": [
{
"name": "test",
"image": "ubuntu:bionic",
"environment": environment,
"commands": [
"cat /proc/cpuinfo",
"echo 'APT::Acquire::Retries \"3\";' > /etc/apt/apt.conf.d/80-retries",
"apt-get update -y",
"apt-get install -y " + " ".join(packages),
"pip3 install meson==0.55.1",
"meson build -Db_coverage=true || (cat build/meson-logs/meson-log.txt; false)",
"ninja -C build -v test || (cat build/meson-logs/testlog.txt; false)",
],
}
],
"trigger": {
"branch": {
"exclude": exclude_branches
}
},
})
# jobs.append({
# "kind": "pipeline",
# "type": "docker",
# "name": "native aliases",
# "platform": {
# "os": "linux",
# "arch": "arm64"
# },
# "steps": [
# {
# "name": "test",
# "image": "ubuntu:bionic",
# "environment": {
# "CC": "clang",
# "CXX": "clang++",
# "CFLAGS": "-march=armv8a+simd+crypto+crc -Weverything -Wextra -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING",
# "CXXFLAGS": "-march=armv8a+simd+crypto+crc -Weverything -Wextra -DSIMDE_ENABLE_NATIVE_ALIASES -DSIMDE_NATIVE_ALIASES_TESTING",
# "DEBIAN_FRONTEND": "noninteractive",
# },
# "commands": [
# "cat /proc/cpuinfo",
# "apt-get update -y",
# "apt-get install -y " + " ".join(['ninja-build', 'git-core', 'python3-pip', 'gcovr', 'clang', 'curl']),
# "pip3 install meson==0.55.1",
# "(cd test && sh -x ./native-aliases.sh)",
# "meson build -Db_coverage=true",
# "ninja -C build -v test",
# ],
# },
# ],
# "trigger": {
# "branch": {
# "exclude": exclude_branches
# }
# }
# })
return jobs
+18
View File
@@ -0,0 +1,18 @@
# Configuration file for EditorConfig
# More information is available under http://EditorConfig.org
# Ignore any other files further up in the file system
root = true
# Configuration for all files
[*]
# Enforce Unix style line endings (\n only)
end_of_line = lf
# Always end files with a blank line
insert_final_newline = true
# Force space characters for indentation
indent_style = space
# Always indent by 2 characters
indent_size = 2
# Remove whitespace characters at the end of line
trim_trailing_whitespace = true
+17
View File
@@ -0,0 +1,17 @@
{
"problemMatcher": [
{
"owner": "actionlint",
"pattern": [
{
"regexp": "^(?:\\x1b\\[\\d+m)?(.+?)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*: (?:\\x1b\\[\\d+m)*(.+?)(?:\\x1b\\[\\d+m)* \\[(.+?)\\]$",
"file": 1,
"line": 2,
"column": 3,
"message": 4,
"code": 5
}
]
}
]
}
+11
View File
@@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
+14
View File
@@ -0,0 +1,14 @@
name: Lint GitHub Actions workflows
on: [push, pull_request]
jobs:
actionlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Check workflow files
run: |
echo "::add-matcher::.github/actionlint-matcher.json"
bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
./actionlint -color
shell: bash
File diff suppressed because it is too large Load Diff
+39
View File
@@ -0,0 +1,39 @@
name: CMake
on:
push:
branches-ignore:
- 'ci/**'
- '!ci/gha**'
- 'dependabot/**'
pull_request:
branches:
- 'master'
concurrency:
group: cmake-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test-install:
name: CMake - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm]
steps:
- uses: actions/checkout@v6
- uses: ilammy/msvc-dev-cmd@v1
- name: Configure SIMDe
run: cmake -G Ninja -S . -B build
- name: Build SIMDe
run: cmake --build build
- name: Test SIMDe Package
run: ctest --test-dir build --output-on-failure --verbose
+43
View File
@@ -0,0 +1,43 @@
name: "CodeQL"
on:
push:
branches: [master]
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
schedule:
- cron: '0 8 * * 3'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# Override automatic language detection by changing the below list
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
language: ['c-cpp']
# Learn more...
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
steps:
- name: Checkout repository
uses: actions/checkout@v6
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
trap-caching: false
- run: |
sudo apt-get install -y ninja-build pipx gcc g++
pip3 install meson==0.55.1
"$HOME/.local/bin/meson" setup build
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
+49
View File
@@ -0,0 +1,49 @@
name: deploy
on:
push:
branches: [ master ]
jobs:
no-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
fetch-depth: 0
- uses: actions/setup-python@v6
- name: Filter Repository
run: |
pip install git-filter-repo
git-filter-repo --force --path-rename COPYING:.no-test/COPYING && \
git-filter-repo --path-rename '.no-test/':'simde/' && \
git-filter-repo --subdirectory-filter simde
- name: GitHub Push
uses: ad-m/github-push-action@v1.0.0
with:
github_token: ${{ secrets.PUSH_TO_NO_TESTS_TOKEN }}
repository: simd-everywhere/simde-no-tests
status:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
fetch-depth: 0
- uses: actions/checkout@v6
with:
fetch-depth: 0
repository: simd-everywhere/implementation-status
token: ${{ secrets.PUSH_IMPLEMENTATION_STATUS_TOKEN }}
path: implementation-status
- name: Install APT Dependencies
run: sudo apt-get update && sudo apt-get install -y python3-lxml
- name: Update
run: ./implementation-status/scripts/update.sh .
- uses: EndBug/add-and-commit@v9
with:
cwd: implementation-status
message: Sync with latest SIMDe.
default_author: github_actions
+331
View File
@@ -0,0 +1,331 @@
name: GCC-16
on:
push:
branches:
- 'master'
workflow_dispatch: {}
repository_dispatch:
types: [on-demand-gcc-16]
concurrency:
group: gcc-snapshot-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
x86:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
isax:
- -DSIMDE_NATURAL_VECTOR_SIZE=256 -march=x86-64-v3 -mavx512bw -mavx512vl
# https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels
- -march=x86-64 -maes -mpclmul # the x86-64 baseline is CMOV, CX8, FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2
- -march=x86-64-v2 # CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4_1, SSE4_2, SSSE3
- -march=x86-64-v3 # AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE
- -march=x86-64-v4 # AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL a.k.a. skylake+ (including zen4)
include:
- target: tgl
- isax: -march=x86-64-v4 -mcx16 -mxsave -mpclmul -mfsgsbase -mrdrnd -mhle -mrdseed -maes -mclflushopt -mxsavec -mxsaves -msgx -mpku -msha -mrdpid -mavx512vpopcntdq -mavx512ifma -mavx512vbmi -mavx512vnni -mavx512vbmi2 -mavx512bitalg -mvpclmulqdq -mgfni -mvaes # icelake
target: icl
- isax: -march=x86-64-v4 -mcx16 -mxsave -mpclmul -mfsgsbase -mrdrnd -mhle -mrdseed -maes -mclflushopt -mxsavec -mxsaves -msgx -mpku -msha -mrdpid -mavx512vpopcntdq -mavx512ifma -mavx512vbmi -mavx512vnni -mavx512vbmi2 -mavx512bitalg -mvpclmulqdq -mgfni -mvaes -mpconfig -mwbnoinvd -mclwb -mmovdiri -mmovdir64b -menqcmd -mcldemote -mptwrite -mwaitpkg -mserialize -mtsxldtrk -muintr -mavxvnni -mavx512fp16 # sapphire rapids without bf16
# See https://github.com/simd-everywhere/simde/issues/1095
target: spr
env:
CFLAGS: -Wall -Wextra -Werror ${{ matrix.isax }}
CXXFLAGS: -Wall -Wextra -Werror ${{ matrix.isax }}
INTEL_TARGET: ${{ matrix.target }}
steps:
- uses: actions/checkout@v6
if: ${{ github.event_name != 'repository_dispatch' }}
with:
submodules: recursive
- uses: actions/checkout@v6
if: ${{ github.event_name == 'repository_dispatch' }}
with:
submodules: recursive
repository: ${{ github.event.client_payload.repository }}
ref: ${{ github.event.client_payload.ref }}
- name: CPU Information
run: cat /proc/cpuinfo
- name: Install APT Dependencies
run: |
sudo add-apt-repository ppa:misterc/gcc-snapshot-latest-lts
# sudo add-apt-repository ppa:stephanosio/ccache
sudo apt-get install -y --no-install-recommends ninja-build pipx
sudo apt-get install -y ${{ github.event.client_payload.extra }} gcc-16 g++-16 # ccache
sudo apt-get purge -y gcc g++
sudo ln -s /usr/bin/gcc-16 /usr/bin/gcc
sudo ln -s /usr/bin/g++-16 /usr/bin/g++
pipx install meson==0.55.1
# - name: ccache
# uses: hendrikmuhs/ccache-action@v1.2
# with:
# key: gcc-16-${{ github.job }}-${{ matrix.isax }}
# verbose: 2
# - name: add ccache to the build path
# run: |
# export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
- name: Configure
run: meson setup build || (cat build/meson-logs/meson-log.txt ; false)
- name: Test run native?
run: |
test/check-flags.sh query && echo Tests with "$CFLAGS" will be run natively
test/check-flags.sh query || echo Tests with "$CFLAGS" will be run using SDE
- name: Build
run: ninja -C build -v
- name: Test
run: |
# shellcheck disable=SC2046
meson test -C build --print-errorlogs --wrapper "${GITHUB_WORKSPACE}/test/check-flags.sh sde" # $(meson test -C build --list | grep -v emul)
x86-xop:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
env:
CFLAGS: -Wall -Wextra -Werror -march=bdver2
CXXFLAGS: -Wall -Wextra -Werror -march=bdver2
steps:
- uses: actions/checkout@v6
if: ${{ github.event_name != 'repository_dispatch' }}
with:
submodules: recursive
- uses: actions/checkout@v6
if: ${{ github.event_name == 'repository_dispatch' }}
with:
submodules: recursive
repository: ${{ github.event.client_payload.repository }}
ref: ${{ github.event.client_payload.ref }}
- name: CPU Information
run: cat /proc/cpuinfo
- name: Install APT Dependencies
run: |
sudo add-apt-repository ppa:misterc/gcc-snapshot-latest-lts
# sudo add-apt-repository ppa:stephanosio/ccache
sudo apt-get install -y --no-install-recommends ninja-build pipx \
qemu-user-static # ccache
sudo apt-get install -y ${{ github.event.client_payload.extra }} gcc-16 g++-16
sudo apt-get purge -y gcc g++
sudo ln -s /usr/bin/gcc-16 /usr/bin/gcc
sudo ln -s /usr/bin/g++-16 /usr/bin/g++
pipx install meson==0.55.1
# - name: ccache
# uses: hendrikmuhs/ccache-action@v1.2
# with:
# key: gcc-16-${{ github.job }}
# verbose: 2
# - name: add ccache to the build path
# run: |
# export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
- name: Configure
run: meson setup build || (cat build/meson-logs/meson-log.txt ; false)
- name: Build
run: ninja -C build -v
# can't test until we find a combination of `gcc -march=` and `qemu -cpu` that both enable XOP and allows qemu to test it
# - name: Test
# run: meson test -C build --print-errorlogs --wrapper "qemu-amd64-static -cpu Opteron_G5-v1"
sleef:
runs-on: ubuntu-24.04
env:
CFLAGS: -march=native -Wall -Wextra -Werror
CXXFLAGS: -march=native -Wall -Wextra -Werror
steps:
- uses: actions/checkout@v6
if: ${{ github.event_name != 'repository_dispatch' }}
with:
submodules: recursive
- uses: actions/checkout@v6
if: ${{ github.event_name == 'repository_dispatch' }}
with:
submodules: recursive
repository: ${{ github.event.client_payload.repository }}
ref: ${{ github.event.client_payload.ref }}
- id: cpu
name: CPU Information
run: |
cat /proc/cpuinfo
- name: Install APT Dependencies
run: |
sudo add-apt-repository ppa:misterc/gcc-snapshot-latest-lts
# sudo add-apt-repository ppa:stephanosio/ccache
sudo apt-get install -y --no-install-recommends ninja-build pipx \
libsleef-dev # ccache
sudo apt-get install -y ${{ github.event.client_payload.extra }} gcc-16 g++-16
sudo apt-get purge -y gcc g++
sudo ln -s /usr/bin/gcc-16 /usr/bin/gcc
sudo ln -s /usr/bin/g++-16 /usr/bin/g++
pipx install meson==0.55.1
# - name: ccache
# uses: hendrikmuhs/ccache-action@v1.2
# with:
# key: gcc-16-${{ github.job }}
# verbose: 2
# - name: add ccache to the build path
# run: |
# export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
- name: Configure
run: meson setup build -Dsleef=enabled || (cat build/meson-logs/meson-log.txt ; false)
- name: Build
run: ninja -C build -v
- name: Test
run: |
# shellcheck disable=SC2046
meson test -C build --print-errorlogs # $(meson test -C build --list | grep -v emul)
gcc-16:
strategy:
fail-fast: false
matrix:
include:
- distro: ubuntu-24.04
arch_flags: -ffast-math
- distro: ubuntu-24.04
- distro: ubuntu-24.04-arm
runs-on: ${{ matrix.distro }}
env:
CFLAGS: ${{ matrix.arch_flags }} -march=native -Wall -Wextra -Werror
CXXFLAGS: ${{ matrix.arch_flags }} -march=native -Wall -Wextra -Werror
steps:
- uses: actions/checkout@v6
if: ${{ github.event_name != 'repository_dispatch' }}
with:
submodules: recursive
- uses: actions/checkout@v6
if: ${{ github.event_name == 'repository_dispatch' }}
with:
submodules: recursive
repository: ${{ github.event.client_payload.repository }}
ref: ${{ github.event.client_payload.ref }}
- id: cpu
name: CPU Information
run: |
cat /proc/cpuinfo
- name: Install APT Dependencies
run: |
sudo add-apt-repository ppa:misterc/gcc-snapshot-latest-lts
# sudo add-apt-repository ppa:stephanosio/ccache
sudo apt-get -y install --no-install-recommends pipx ninja-build \
# ccache
sudo apt-get install -y ${{ github.event.client_payload.extra }} gcc-16 g++-16
sudo apt-get -y purge g++ gcc
sudo ln -s /usr/bin/gcc-16 /usr/bin/gcc
sudo ln -s /usr/bin/g++-16 /usr/bin/g++
pipx install meson==0.55.1
# - name: ccache
# uses: hendrikmuhs/ccache-action@v1.2
# with:
# key: ${{ github.job }}-${{ matrix.version }}-${{ matrix.distro }}-${{ matrix.arch_flags }}
# verbose: 2
# - name: add ccache to the build path
# run: |
# export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
- name: Configure
run: meson setup build || (cat build/meson-logs/meson-log.txt ; false)
- name: Build
run: meson compile -C build --verbose
- name: Test
run: |
# shellcheck disable=SC2046
meson test -C build --print-errorlogs # $(meson test -C build --list | grep -v emul)
gcc-qemu:
strategy:
fail-fast: false
matrix:
include:
- version: 16
cross: armel
arch_gnu_abi: eabi
arch_deb: armel
arch_gnu: arm
distro: ubuntu-24.04
- version: 16
cross: armv7
arch_gnu: arm
arch_gnu_abi: eabihf
arch_deb: armhf
distro: ubuntu-24.04
- version: 16
extra: -no-extras
cross: aarch64
arch_gnu: aarch64
arch_deb: arm64
distro: ubuntu-24.04
- version: 16
cross: aarch64
arch_gnu: aarch64
arch_deb: arm64
distro: ubuntu-24.04
- extra: -32bit
version: 16
cross: armv8
arch_gnu: arm
arch_gnu_abi: eabihf
arch_deb: armhf
distro: ubuntu-24.04
- version: 16
cross: riscv64
arch_gnu: riscv64
arch_deb: riscv64
distro: ubuntu-24.04
- extra: -O3
version: 16
cross: riscv64
arch_gnu: riscv64
arch_deb: riscv64
distro: ubuntu-24.04
- version: 16
cross: s390x
arch_gnu: s390x
arch_deb: s390x
distro: ubuntu-24.04
# - version: 16
# cross: power9
# arch_gnu: powerpc64le
# arch_deb: ppc64el
# distro: ubuntu-24.04
- version: 16
cross: loongarch64
arch_gnu: loongarch64
arch_deb: loong64
distro: ubuntu-24.04
runs-on: ${{ matrix.distro }}
steps:
- uses: actions/checkout@v6
if: ${{ github.event_name != 'repository_dispatch' }}
with:
submodules: recursive
- uses: actions/checkout@v6
if: ${{ github.event_name == 'repository_dispatch' }}
with:
submodules: recursive
repository: ${{ github.event.client_payload.repository }}
ref: ${{ github.event.client_payload.ref }}
- name: CPU Information
run: cat /proc/cpuinfo
- name: Install APT Dependencies
run: |
sudo add-apt-repository ppa:misterc/gcc-snapshot-latest-lts
sudo apt-get -y --no-install-recommends install ccache ninja-build \
binfmt-support qemu-user-static pipx libc6-${{ matrix.arch_deb }}-cross
sudo apt-get install -y ${{ github.event.client_payload.extra }} \
gcc-${{ matrix.version }}-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} \
g++-${{ matrix.version }}-${{ matrix.arch_gnu }}-linux-gnu${{ matrix.arch_gnu_abi }} \
libstdc++-${{ matrix.version }}-dev-${{ matrix.arch_deb }}-cross
pipx install meson==0.55.1
# - name: ccache
# uses: hendrikmuhs/ccache-action@v1.2
# with:
# key: ${{ github.job }}-${{ matrix.version}}${{ matrix.extra }}-${{ matrix.distro }}-${{ matrix.cross }}
# verbose: 2
- name: Configure
run: meson setup --cross-file=docker/cross-files/${{ matrix.cross }}-gcc-${{ matrix.version }}${{ matrix.extra}}-ccache.cross build || (cat build/meson-logs/meson-log.txt ; false)
- name: Build
run: ninja -C build -v
- name: Test
run: |
# shellcheck disable=SC2046
meson test -C build --print-errorlogs --print-errorlogs
+45
View File
@@ -0,0 +1,45 @@
# This workflow integrates a collection of open source static analysis tools
# with GitHub code scanning. For documentation, or to provide feedback, visit
# https://github.com/github/ossar-action
name: OSSAR
on:
push:
branches: [master]
jobs:
OSSAR-Scan:
# OSSAR runs on windows-latest.
# ubuntu-latest and macos-latest support coming soon
runs-on: windows-latest
steps:
# Checkout your code repository to scan
- name: Checkout repository
uses: actions/checkout@v6
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
# Install dotnet, used by OSSAR
- name: Install .NET
uses: actions/setup-dotnet@v5
with:
dotnet-version: '6.0.x'
# Run open source static analysis tools
- name: Run OSSAR
uses: github/ossar-action@v1
id: ossar
# Upload results to the Security tab
- name: Upload OSSAR results
uses: github/codeql-action/upload-sarif@v4
with:
sarif_file: ${{ steps.ossar.outputs.sarifFile }}
+30
View File
@@ -0,0 +1,30 @@
name: Cleanup github runner caches on closed pull requests
on:
pull_request:
types:
- closed
jobs:
cleanup:
runs-on: ubuntu-latest
permissions:
actions: write
steps:
- name: Cleanup
run: |
echo "Fetching list of cache keys"
readarray -t cacheKeysForPR < <(gh cache list --ref "${BRANCH}" --json id --jq '.[].id')
## Setting this to not fail the workflow while deleting cache keys.
set +e
echo "Deleting caches..."
for cacheKey in "${cacheKeysForPR[@]}"
do
gh cache delete "${cacheKey}"
done
echo "Done"
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge
+4
View File
@@ -0,0 +1,4 @@
*~
/build*
/.cache
/.vscode
+3
View File
@@ -0,0 +1,3 @@
[submodule "munit"]
path = test/munit
url = https://github.com/nemequ/munit.git
+11
View File
@@ -0,0 +1,11 @@
Jun Aruga <jaruga@redhat.com>
Jun Aruga <jaruga@redhat.com> <jun.aruga@gmail.com>
Jun Aruga <jaruga@redhat.com> <junaruga@users.noreply.github.com>
Michael R. Crusoe <crusoe@debian.org>
Michael R. Crusoe <crusoe@debian.org> <1330696+mr-c@users.noreply.github.com>
Michael R. Crusoe <crusoe@debian.org> <michael.crusoe@gmail.com>
Yi-Yen Chung <s12345d60@gmail.com>
Yi-Yen Chung <s12345d60@gmail.com> <45251297+yyctw@users.noreply.github.com>
gu xiwei <guxiwei-hf@loongson.cn> # GF user XiWeiGu
Yang Hau <yuanyanghau@gmail.com> # GH user howjmay
Zhijin Zeng <zhijin.zeng@spacemit.com> # GH user zengdage
+10
View File
@@ -0,0 +1,10 @@
# SIMDe Without Test Cases
This repository contains only the core of
[SIMDe](https://github.com/simd-everywhere/simde).
It is generated automatically for every commit to master, and is
intended to be used as a submodule in projects which don't want to
include the (rather large) test cases.
All development work happens in the main repository, please do not
file issues or create pull requests against this repository.
+30
View File
@@ -0,0 +1,30 @@
# See the `.packit/README.md` for details.
# The used RPM spec file path.
# A minimal RPM spec file to run the tests.
specfile_path: .packit/simde.spec
jobs:
- &copr
# Use Fedora COPR in the CI.
# https://packit.dev/docs/configuration/#copr_build
job: copr_build
trigger: pull_request
# Enable internet access in the COPR.
enable_net: true
# Executed targets in the CI. Available targets are below.
# https://packit.dev/docs/configuration/#available-copr-build-targets
#
# Note that we keep the Fedora rawhide. See the `.packit/README.md` -
# "Motivation and context" for details.
targets:
- fedora-rawhide-x86_64
- fedora-rawhide-aarch64
- fedora-rawhide-ppc64le
- fedora-rawhide-s390x
- <<: *copr
# Run on push to any branch.
trigger: commit
# Run except the "master*" and "dependabot*" branches.
# https://github.com/packit/packit/issues/1986
branch: '(?!master)(?!dependabot)'
+45
View File
@@ -0,0 +1,45 @@
# Packit
This document is to use [Packit CI][Packit] that enables us to test SIMDe on Fedora project's native CPU environments, x86_64, i686, aarch64, ppc64le and s390x as of June 2023. Packit CI can be executed on pull-request and push, and create a RPM package based on the specified RPM spec (recipe) file, then run commands in the `%check` section in the RPM spec file in the environments. We use a minimal RPM spec file only to run tests on the environments.
## Motivation and context
We want to keep [Fedora rawhide][Fedora rawhide] cases in the CI. Fedora rawhide is the latest development version of Fedora Linux, not a named release that might go out of support later. Because the gcc and clang new versions are landing on Fedora rawhide earlier than other Linux distributions.
## How to check the CI results
1. Enable Packit CI for your forked simde repository. See the [onboarding guide][Packit guide]
2. When you push branches to your repository, the CI is triggered. Go to the [Pipelines][Packit pipelines] page to see your pipeline.
3. Do browser-search by "simde".
4. Click a "fedora-\*-\*" button on the Jobs to go to the job detailed page.
5. You can see 3 links below. You can check the Build Logs first, and the SRPM Logs second if it is necessary.
* **SRPM Logs**: A log of the preparation of the test such as installing the used RPM packages to test. This is a log that the system creates Source RPM (SRPM) from the RPM spec file.
* **Web URL**: Go to the jobs page in Fedora Copr web system used to run the RPM.
* **Build Logs**: It includes the testing log and the result. This is a log that the system builds a RPM package from the SRPM. The tests are executed in a part of the processes.
## Customize the CI
* `.packit.yml`
* You can customize the executed CPU pipelines at the `jobs - targets`, when you see infra issues in the specific CPU pipelines.
* `.packit/ci.sh`
* You can customize if the CI fails when the tests fail at the "Customized constants" section.
* You can customize the tests to be executed to save the CI's total running time at the "Customized constants" section.
You can check the [configuration document][Packit configuration] for details.
## Troubleshooting
If you experience issues related to Packit, you can try the following things:
* Check [Packit status page][Packit status].
* Check [Packit pipeline page][Packit pipelines] to check how your application and other applications are running.
* Go to [Packit issues page][Packit issues] to open bugs or feature requests.
* Contact Packet team. You can contact by their communication channels (Element, Matrix, IRC, Email, and Mastodon) written in [Packit top page][Packit] footer area - Contact.
[Packit]: https://packit.dev/
[Packit configuration]: https://packit.dev/docs/configuration
[Packit guide]: https://packit.dev/docs/guide/
[Packit issues]: https://github.com/packit/packit/issues
[Packit pipelines]: https://dashboard.packit.dev/pipelines
[Packit status]: https://status.packit.dev/
[Fedora rawhide]: https://docs.fedoraproject.org/en-US/releases/rawhide/
+215
View File
@@ -0,0 +1,215 @@
#!/bin/bash
set -euxo pipefail
# Define variables
HOST_CPU="$(uname -m)"
JOBS="$(nproc)"
# Functions
function _time {
/bin/time -f '=> [%E]' ${@}
}
function _setup {
if ! meson setup "${BUILD_DIR}"; then
cat "${BUILD_DIR}/meson-logs/meson-log.txt"
return 1
fi
}
function _build {
rm -f build.log
if ! _time ninja -C "${BUILD_DIR}" -v -j "${JOBS}" >& build.log; then
cat build.log
return 1
fi
head -4 build.log
tail -3 build.log
}
function _test {
if ! _time meson test -C "${BUILD_DIR}" \
-q --no-rebuild --print-errorlogs; then
return 1
fi
}
function _run_test {
if ! _setup; then
return 1
fi
if ! _build; then
return 2
fi
if ! _test; then
return 3
fi
}
function _run_test_and_get_result {
local exit_status=0
local result="skipped"
if [ "${#}" -lt 1 ]; then
echo "Argument error" 2>&1
exit 1
fi
local cond="${1}"
if [ "${cond}" = "include" ] || [ "${cond}" = "pend" ]; then
if _run_test; then
if [ "${cond}" = "include" ]; then
result="ok"
else
exit_status=1
result="pending - passed unexpectedly"
fi
else
if [ "${cond}" = "include" ]; then
exit_status=1
result="not ok"
else
result="pending - failed expectedly"
fi
fi
fi
# Use global variables to pass the return values as a limitation of Bash.
result_buf="${result}"
return "${exit_status}"
}
# Print system info.
cat /proc/cpuinfo
cat /proc/meminfo
# Set PATH for commands installed by `pip install`.
PATH="${PATH}:${HOME}/.local/bin"
# Install additional packages.
pip3 install -U meson
# Run test.
# Configuration
#
# If the value is true, the CI returns the exit status zero even if the tests
# fail as a compromised way.
IGNORE_EXIT_STATUS=
# Define the testing matrix.
# "include": Include the test in the matrix. Run the test.
# "exclude": Exclude the test. The test is not executed.
# It can be used to save the total running time in CI.
# "pend" : Run the test, but if the test fails, it passes as exit status zero.
# If the test passes unexpectedly, it fails as exit status non-zero.
#
# Set the default behavior for each test.
MATRIX_DEFAULT_GCC_DEFAULT="exclude"
MATRIX_DEFAULT_GCC_O2="include"
MATRIX_DEFAULT_GCC_RPM="exclude"
MATRIX_DEFAULT_CLANG_DEFAULT="exclude"
MATRIX_DEFAULT_CLANG_O2="include"
MATRIX_DEFAULT_CLANG_RPM="exclude"
# Set the CPU specific behavior for each test optionally.
# This configuration is prioritized than the default behavior.
# End of configuration
# Generate the current CPU specific test conditions.
# If there is no CPU specific variable, set the default value.
TEST_COND_GCC_DEFAULT=$(eval echo \
"\${MATRIX_${HOST_CPU}_GCC_DEFAULT:-${MATRIX_DEFAULT_GCC_DEFAULT}}")
TEST_COND_GCC_O2=$(eval echo \
"\${MATRIX_${HOST_CPU}_GCC_O2:-${MATRIX_DEFAULT_GCC_O2}}")
TEST_COND_GCC_RPM=$(eval echo \
"\${MATRIX_${HOST_CPU}_GCC_RPM:-${MATRIX_DEFAULT_GCC_RPM}}")
TEST_COND_CLANG_DEFAULT=$(eval echo \
"\${MATRIX_${HOST_CPU}_CLANG_DEFAULT:-${MATRIX_DEFAULT_CLANG_DEFAULT}}")
TEST_COND_CLANG_O2=$(eval echo \
"\${MATRIX_${HOST_CPU}_CLANG_O2:-${MATRIX_DEFAULT_CLANG_O2}}")
TEST_COND_CLANG_RPM=$(eval echo \
"\${MATRIX_${HOST_CPU}_CLANG_RPM:-${MATRIX_DEFAULT_CLANG_RPM}}")
exit_status=0
# A temporary buffer to store the return value from a function.
result_buf=
# Print compiler versions.
gcc --version
g++ --version
clang --version
clang++ --version
echo "== Tests on gcc in a default status =="
if ! BUILD_DIR="build/gcc" CC="gcc" CXX="g++" \
_run_test_and_get_result "${TEST_COND_GCC_DEFAULT}"; then
exit_status=1
fi
result_gcc="${result_buf}"
echo "== Tests on clang in a default status =="
if ! BUILD_DIR="build/clang" CC="clang" CXX="clang++" \
CFLAGS="--rtlib=compiler-rt" CXXFLAGS="--rtlib=compiler-rt" \
_run_test_and_get_result "${TEST_COND_CLANG_DEFAULT}"; then
exit_status=1
fi
result_clang="${result_buf}"
echo "== Tests on gcc with O2 flag =="
if ! BUILD_DIR="build/gcc-O2" CC="gcc" CXX="g++" \
CFLAGS="-O2" CXXFLAGS="-O2" \
_run_test_and_get_result "${TEST_COND_GCC_O2}"; then
exit_status=1
fi
result_gcc_O2="${result_buf}"
echo "== Tests on clang with O2 flag =="
if ! BUILD_DIR="build/clang-O2" CC="clang" CXX="clang++" \
CFLAGS="--rtlib=compiler-rt -O2" CXXFLAGS="--rtlib=compiler-rt -O2" \
_run_test_and_get_result "${TEST_COND_CLANG_O2}"; then
exit_status=1
fi
result_clang_O2="${result_buf}"
# This is an advanced test.
echo "== Tests on gcc with flags used in RPM package build =="
if ! BUILD_DIR="build/gcc-rpm" CC="gcc" CXX="g++" \
CFLAGS="${CI_GCC_RPM_CFLAGS-}" CXXFLAGS="${CI_GCC_RPM_CXXFLAGS-}" \
LDFLAGS="${CI_GCC_RPM_LDFLAGS-}" \
_run_test_and_get_result "${TEST_COND_GCC_RPM}"; then
exit_status=1
fi
result_gcc_rpm="${result_buf}"
# This is an advanced test.
echo "== Tests on clang with flags used in RPM package build =="
if ! BUILD_DIR="build/clang-rpm" CC="clang" CXX="clang++" \
CFLAGS="${CI_CLANG_RPM_CFLAGS-}" CXXFLAGS="${CI_CLANG_RPM_CXXFLAGS-}" \
LDFLAGS="${CI_CLANG_RPM_LDFLAGS-}" \
_run_test_and_get_result "${TEST_COND_CLANG_RPM}"; then
exit_status=1
fi
result_clang_rpm="${result_buf}"
# Print results.
cat <<EOF
== Results ==
Exit status: ${exit_status}
${result_gcc}: gcc without flags
${result_gcc_O2}: gcc with -O2 flag
${result_gcc_rpm}: gcc with RPM build flags
${result_clang}: clang without flags
${result_clang_O2}: clang with -O2 flag
${result_clang_rpm}: clang with RPM build flags
EOF
if [ "${IGNORE_EXIT_STATUS}" = true ]; then
echo "warning: Exiting always with exit status zero is not ideal."
exit 0
else
exit ${exit_status}
fi
+81
View File
@@ -0,0 +1,81 @@
# Disable the automatically set build flags to the environment variables such
# as CC, CFLAGS, and etc.
# See <https://src.fedoraproject.org/rpms/redhat-rpm-config/blob/rawhide/f/macros>.
%undefine _auto_set_build_flags
Name: simde
Version: 1
Release: 1%{?dist}
Summary: Dummy
License: MIT
URL: https://github.com/simd-everywhere/simde
# This value is magically replaced with the archive tar.gz file created by
# `git archive` in the process of the CI.
# Set the existing file `README.md` in case of creating SRPM from this RPM spec
# file on local for testing purpose.
Source0: README.md
# A path to the CI script.
Source1: ci.sh
# List up the needed RPM package names to test here.
# clang, clang++
BuildRequires: clang
BuildRequires: compiler-rt
BuildRequires: gcc
# g++
BuildRequires: gcc-c++
# ninja
BuildRequires: ninja-build
# pip and setuptools are needed to install and use meson PyPI package.
BuildRequires: python3-devel
BuildRequires: python3-pip
BuildRequires: python3-setuptools
# The GNU time (/bin/time) is used for testing. Use this GNU time rather than
# the embedded time function in bash.
# https://www.gnu.org/software/time/
BuildRequires: time
# RPM package description.
%description
# The bash commands to prepare are executed.
%prep
# Print the replaced value of the Source0.
echo "Source0: %{SOURCE0}"
# Create a dummy file for a valid RPM spec file.
touch dummy.txt
# The bash commands to test are executed.
%check
# Check the directory structure in the tar.gz file.
tar tzvf "%{SOURCE0}" > source_files.txt
head -2 source_files.txt
# Check if the submodule munit is included.
grep munit source_files.txt
# Extract the source archive file.
tar xzf "%{SOURCE0}"
pushd simde-*
# Set the flags used to build the actual RPM package.
# These can be used in the CI testing script.
%global toolchain clang
export CI_CLANG_RPM_CFLAGS="%{build_cflags}"
export CI_CLANG_RPM_CXXFLAGS="%{build_cxxflags}"
export CI_CLANG_RPM_LDFLAGS="%{build_ldflags}"
%global toolchain gcc
export CI_GCC_RPM_CFLAGS="%{build_cflags}"
export CI_GCC_RPM_CXXFLAGS="%{build_cxxflags}"
export CI_GCC_RPM_LDFLAGS="%{build_ldflags}"
echo "Running the CI script %{SOURCE1}."
/bin/time -f '=> [%E]' "%{SOURCE1}"
popd
# Files included in the built RPM package.
%files
%doc dummy.txt
# Changelog entries for the RPM package.
%changelog
* Fri Jun 02 2023 Dummy Dummy <dummy@dummy.com> - 1-1
- Dummy.
+55
View File
@@ -0,0 +1,55 @@
version: v1.0
name: Build
agent:
machine:
type: e1-standard-2
os_image: ubuntu2004
blocks:
- name: CI
skip:
when: "branch = 'master' OR (branch !~ '^ci/semaphore(/.*)?' AND branch =~ '^ci/.+')"
task:
jobs:
- name: GCC
matrix:
- env_var: GCC_VERSION
values: ['8', '7']
commands:
- cat /proc/cpuinfo
- checkout
- git submodule update --init
- sudo apt-get update
- sudo apt-get install -y ninja-build python3-pip python3-setuptools gcovr gcc-${GCC_VERSION} g++-${GCC_VERSION}
- pip3 install meson==0.55.1
- mkdir build
- CC="gcc-${GCC_VERSION}" CXX="g++-${GCC_VERSION}" ~/.local/bin/meson setup build -Db_coverage=true --optimization $(expr $RANDOM % 3)
- ~/.local/bin/meson compile -C build --ninja-args=-v
- ~/.local/bin/meson test -C build --print-errorlogs $(~/.local/bin/meson test -C build --list | grep -v emul)
- ninja -C build coverage-xml
env_vars:
- name: CFLAGS
value: -Wextra -Werror -march=native
- name: CXXFLAGS
value: -Wextra -Werror -march=native
- name: clang
matrix:
- env_var: CLANG_VERSION
values: ['10', '8', '6.0']
commands:
- cat /proc/cpuinfo
- checkout
- git submodule update --init
- sudo apt-get update
- sudo apt-get install -y ninja-build python3-pip python3-setuptools gcovr clang-${CLANG_VERSION}
- pip3 install meson==0.55.1
- mkdir build
- CC="clang-${CLANG_VERSION}" CXX="clang++-${CLANG_VERSION}" ~/.local/bin/meson setup build -Db_coverage=true
- ~/.local/bin/meson compile -C build --ninja-args=-v
- ~/.local/bin/meson test -C build --print-errorlogs $(~/.local/bin/meson test -C build --list | grep -v emul)
- ninja -C build coverage-xml
env_vars:
- name: CFLAGS
value: -Weverything -Werror -march=native
- name: CXXFLAGS
value: -Weverything -Werror -march=native
+50
View File
@@ -0,0 +1,50 @@
language: c
os: linux
dist: focal
jobs:
include:
- name: POWER9
if: branch != master OR type == pull_request
arch: ppc64le
compiler: clang
env:
- CC="clang"
- CXX="clang++"
- CFLAGS="-mcpu=power9 -Weverything -Werror"
- CXXFLAGS="-mcpu=power9 -Weverything -Werror"
- JOBS="$(nproc)"
addons:
apt:
packages: ninja-build python3-pip clang
- name: z/Arch
if: branch != master OR type == pull_request
arch: s390x
compiler: gcc
env:
- CC="gcc"
- CXX="g++"
- CFLAGS="-march=native -mzvector -Wextra -Werror"
- CXXFLAGS="-march=native -mzvector -Wextra -Werror"
- JOBS="$(nproc)"
addons:
apt:
packages: ninja-build python3-pip gcc g++
before_install:
- cat /proc/cpuinfo
- cat /proc/meminfo
install:
- pip3 install meson==0.55.1
script:
- meson setup build -Db_coverage=true
- ninja -C build -v -j${JOBS}
after_success:
- meson test -C build --print-errorlogs
notifications:
email: false
+78
View File
@@ -0,0 +1,78 @@
cmake_minimum_required(VERSION 3.22)
project(
simde
DESCRIPTION
"Implementations of SIMD instruction sets for systems which don't natively support them."
HOMEPAGE_URL "https://github.com/simd-everywhere/simde"
LANGUAGES C CXX
VERSION 0.8.4
)
# Options
option(SIMDE_TEST_CMAKE_PACKAGING "Test cmake packaging" ${PROJECT_IS_TOP_LEVEL})
# The main simde library
add_library(simde INTERFACE)
add_library(simde::simde ALIAS simde)
target_compile_features(simde INTERFACE c_std_99)
target_include_directories(
simde
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
if(SIMDE_TEST_CMAKE_PACKAGING)
include(CTest)
enable_testing()
add_subdirectory(test/cmake-packaging)
endif()
include(GNUInstallDirs)
# Install headers
install(DIRECTORY simde DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
# Export targets
install(TARGETS simde EXPORT simde-targets)
# Package Configuration
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/simde-config-version.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
file(
WRITE
${CMAKE_CURRENT_BINARY_DIR}/simde-config.cmake.in
"@PACKAGE_INIT@\n"
"include(\"\${CMAKE_CURRENT_LIST_DIR}/simde-config-targets.cmake\")\n"
)
configure_package_config_file(
${CMAKE_CURRENT_BINARY_DIR}/simde-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/simde-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simde
NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/simde-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/simde-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simde
)
install(
EXPORT simde-targets
FILE simde-config-targets.cmake
NAMESPACE simde::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simde
)
+105
View File
@@ -0,0 +1,105 @@
# Contributing to SIMDe
First off, if you're even reading this, thank you! There is a lot of
work to do, and any help is appreciated.
If you haven't already, please read the
[README](https://github.com/simd-everywhere/simde/blob/master/README.md). The
[wiki](https://github.com/simd-everywhere/simde/wiki) also has some good
information, especially the
[FAQ](https://github.com/simd-everywhere/simde/wiki/FAQ) and a guide on how to
[implement a new
function](https://github.com/simd-everywhere/simde/wiki/Implementing-a-New-Function).
For information on developing for architectures you don't have access
to, please see the [Development
Environment](https://github.com/simd-everywhere/simde/wiki/Development-Environment)
page on the wiki.
If you still have questions, or if anything below doesn't make sense
to you, please feel free to use the [issue
tracker](https://github.com/simd-everywhere/simde/issues) or the [mailing
list](https://groups.google.com/forum/#!forum/simde) to ask. I know
the SIMDe documentation needs a lot of improvement, and asking
questions will help us understand what is missing, so please don't be
shy!
## Building the Tests
SIMDe contains an extensive test suite used for development. Most
users will never need to build the suite, but if you're contributing
code to SIMDe you'll need to build them.
Here is the basic procedure for compiling and running the tests:
### On Unix
```bash
mkdir -p build
cd build
CFLAGS="-march=native" CXXFLAGS="-march=native" meson setup ..
ninja test
```
Note that `-march=native` may not be the right flag for your compiler.
That should work for most compilers on x86/x86_64, though MSVC is an
exception (try `/arch:AVX2` instead of `-march=native`). On other
architectures please consult your compiler documentation to find out
what flags you should use to enable the SIMD extension for your target
platform. Here are a few to try:
* ARM:
* `-march=armv8-a+simd` (for AArch64)
* `-march=armv8-a+simd -mfpu=auto` (for ARMv8)
* `-march=armv7-a -mfpu=neon` (for ARMv7)
* POWER
* `-mcpu=native`
If you need a flag not listed above, please let us know so we can add
it to the list.
#### Single test
Compile and run a specific test. Switch `emul` for `native`, and `/c` for `/cpp`
as needed.
```
meson test --print-errorlogs arm/neon/qabs/emul/c
```
Using `meson test` instead of `ninja` and directly executing the test
is helpful for emscripten and other architectures where are there extra steps needed
(changing the directory, using `v8` to run`, etc..).
Just compile one specific test with verbose output. Useful for debugging
compiler errors.
```
meson compile --verbose test/arm/neon/qabs-emul-c
```
### On Windows:
```bash
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" arm64
mkdir build
cd build
set CFLAGS="/std:c11"
set CXXFLAGS="/Zc:preprocessor"
meson setup ..
ninja test
```
Note change arm64 to x64 on x86_64 CPU.
You may also want to take a look at the
[Docker container](https://github.com/simd-everywhere/simde/tree/master/docker)
which has many builds pre-configured, including cross-compilers and emulators.
## Coding Style
SIMDe has an [EditorConfig](https://editorconfig.org/) file to
configure your editor for things like tabs vs. spaces, how many spaces,
etc. If you use an editor which doesn't support it out of the box then
odds are good there is a plugin you can download; please do so.
For other coding style information, please see the
[Coding Style](https://github.com/simd-everywhere/simde/wiki/Coding-Style)
document in the Wiki.
+20
View File
@@ -0,0 +1,20 @@
Copyright (c) 2017 Evan Nemerson <evan@nemerson.com>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+521
View File
@@ -0,0 +1,521 @@
# SIMD Everywhere
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-78-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
[![Chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://matrix.to/#/#simd-everywhere_community:gitter.im)
[![codecov](https://codecov.io/gh/simd-everywhere/simde/branch/master/graph/badge.svg?token=jcMBoRk0ui)](https://codecov.io/gh/simd-everywhere/simde)
The SIMDe header-only library provides fast, portable implementations of
[SIMD intrinsics](https://en.wikipedia.org/wiki/SIMD) on hardware which
doesn't natively support them, such as calling [SSE](https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions)
functions on ARM. There is no performance penalty if the hardware
supports the native implementation (*e.g.*, SSE/[AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions)
runs at full speed on [x86](https://en.wikipedia.org/wiki/X86),
[NEON](https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_(Neon)) on [ARM](https://en.wikipedia.org/wiki/ARM_architecture),
*etc.*).
This makes porting code to other architectures much easier in a few
key ways:
First, instead of forcing you to rewrite everything for each
architecture, SIMDe lets you get a port up and running almost
effortlessly. You can then start working on switching the most
performance-critical sections to native intrinsics, improving
performance gradually. SIMDe lets (for example) SSE/AVX and NEON code
exist side-by-side, in the same implementation.
Second, SIMDe makes it easier to write code targeting [ISA](https://en.wikipedia.org/wiki/Instruction_set_architecture)
extensions you don't have convenient access to. You can run NEON code on your
x86 machine *without an emulator*. Obviously you'll eventually want
to test on the actual hardware you're targeting, but for most
development, SIMDe can provide a much easier path.
SIMDe takes a very different approach from most other SIMD abstraction
layers in that it aims to expose the entire functionality of the
underlying instruction set. Instead of limiting functionality to the
lowest common denominator, SIMDe tries to minimize the amount of
effort required to port while still allowing you the space to optimize
as needed.
The current focus is on writing complete portable implementations,
though a large number of functions already have accelerated
implementations using one (or more) of the following:
* SIMD intrinsics from other ISA extensions (e.g., using NEON to
implement SSE).
* Compiler-specific vector extensions and built-ins such as
[`__builtin_shufflevector`](http://clang.llvm.org/docs/LanguageExtensions.html#langext-builtin-shufflevector)
and
[`__builtin_convertvector`](http://clang.llvm.org/docs/LanguageExtensions.html#langext-builtin-convertvector)
* Compiler auto-vectorization hints, using:
* [OpenMP 4 SIMD](http://www.openmp.org/)
* [Cilk Plus](https://www.cilkplus.org/)
* [GCC loop-specific pragmas](https://gcc.gnu.org/onlinedocs/gcc/Loop-Specific-Pragmas.html)
* [clang pragma loop hint directives](http://llvm.org/docs/Vectorizers.html#pragma-loop-hint-directives)
You can [try SIMDe online](https://simde.netlify.app/godbolt/demo)
using Compiler Explorer and an amalgamated SIMDe header.
If you have any questions, please feel free to use the
[issue tracker](https://github.com/simd-everywhere/simde/issues) or the
[mailing list](https://groups.google.com/forum/#!forum/simde).
## Current Status
There are currently complete implementations of the following instruction
set extensions:
* ARM
* [NEON](https://en.wikipedia.org/wiki/ARM_architecture_family#Advanced_SIMD_(Neon)) [List](https://developer.arm.com/architectures/instruction-sets/intrinsics/#f:@navigationhierarchiessimdisa=[Neon])
* x86 / x86_64
* [MMX](https://en.wikipedia.org/wiki/MMX_(instruction_set)) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#techs=MMX)
* [SSE](https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ssetechs=SSE)
* [SSE2](https://en.wikipedia.org/wiki/SSE2) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ssetechs=SSE2)
* [SSE3](https://en.wikipedia.org/wiki/SSE3) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ssetechs=SSE3)
* [SSSE3](https://en.wikipedia.org/wiki/SSSE3) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ssetechs=SSSE3)
* [SSE4.1](https://en.wikipedia.org/wiki/SSE4#SSE4.1) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ssetechs=SSE4_1)
* [CRC32](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=7131&othertechs=CRC32)
* [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#avxnewtechs=AVX)
* [AVX2](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#avxnewtechs=AVX2)
* [F16C](https://en.wikipedia.org/wiki/F16C) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#avxnewtechs=F16C)
* [FMA](https://en.wikipedia.org/wiki/FMA_instruction_set) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#avxnewtechs=FMA)
* [GFNI](https://en.wikipedia.org/wiki/AVX-512#GFNI) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#othertechs=GFNI)
* [XOP](https://en.wikipedia.org/wiki/XOP_instruction_set)
* [SVML](https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference/intrinsics/intrinsics-for-intel-advanced-vector-extensions-512-intel-avx-512-instructions/intrinsics-for-arithmetic-operations-1/intrinsics-for-short-vector-math-library-svml-operations.html) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=770&techs=SVML)
* [AVX512VPOPCNTDQ](https://en.wikipedia.org/wiki/AVX-512#VPOPCNTDQ_and_BITALG) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=7131&avx512techs=AVX512VPOPCNTDQ)
* [AVX512_BITALG](https://en.wikipedia.org/wiki/AVX-512#VPOPCNTDQ_and_BITALG) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=7131&avx512techs=AVX512_BITALG)
* [AVX512_VBMI](https://en.wikipedia.org/wiki/AVX-512#Permute) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=7131&avx512techs=AVX512_VBMI)
* [AVX512_VNNI](https://en.wikipedia.org/wiki/AVX-512#VNNI) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=7131&avx512techs=AVX512_VNNI)
* [AVX512_VP2INTERSECT](https://en.wikipedia.org/wiki/AVX-512#VP2INTERSECT) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=7131&avx512techs=AVX512_VP2INTERSECT)
* [VPCLMULQDQ](https://en.wikipedia.org/wiki/AVX-512#VPCLMULQDQ) [List](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#othertechs=VPCLMULQDQ)
* WebAssembly
* [SIMD128](https://github.com/WebAssembly/simd)
As well as partial support for many others, including AES-ni, [CLMUL](https://en.wikipedia.org/wiki/CLMUL_instruction_set), SSE4.2, SVE, [MSA](https://en.wikipedia.org/wiki/MIPS_architecture#Application-specific_extensions) in
addition to several AVX-512 extensions. See the
[instruction-set-support](https://github.com/simd-everywhere/simde/issues?q=is%3Aissue+is%3Aopen+label%3Ainstruction-set-support+sort%3Aupdated-desc)
label in the issue tracker for details on progress. If you'd like to
be notified when an instruction set is available you may subscribe to
the relevant issue.
If you have a project you're interested in using with SIMDe but we
don't yet support all the functions you need, please file an issue
with a list of what's missing so we know what to prioritize.
The default branch is protected so commits never reach it unless
they have passed extensive CI checks. Status badges don't really
make sense since they will always be green, but here are the links:
* [GitHub Actions](https://github.com/simd-everywhere/simde/actions)
* [Cirrus CI](https://cirrus-ci.com/github/simd-everywhere/simde)
* [Semaphore CI](https://nemequ.semaphoreci.com/projects/simde)
* [Circle CI](https://app.circleci.com/pipelines/github/simd-everywhere/simde)
* [AppVeyor](https://ci.appveyor.com/project/nemequ/simde)
* [Azure Pipelines](https://dev.azure.com/simd-everywhere/SIMDe/_build)
* [Drone CI](https://cloud.drone.io/simd-everywhere/simde/)
* [Travis CI](https://app.travis-ci.com/github/simd-everywhere/simde/)
* [Packit CI](https://dashboard.packit.dev/projects/github.com/simd-everywhere/simde)
If you're adding a new build I suggest Cirrus CI, which is where we
currently have the most room given the number of builds currently on
the platform and the quotas for free/open-source usage. Alternately,
feel free to set up another provider (such as
[Codefresh](https://codefresh.io/),
[Shippable](https://www.shippable.com/),
[Bitrise](https://www.bitrise.io/),
[Werkaer](https://app.wercker.com/), etc.).
*Notice*: we plan on changing the name of the default branch from
"master" to something else soon; we are just trying to wait to see what
name git settles on so we can be consistent.
## Contributing
First off, if you're reading this: thank you! Even considering
contributing to SIMDe is very much appreciated!
SIMDe is a fairly large undertaking; there are a *lot* of functions to
get through and a lot of opportunities for optimization on different
platforms, so we're very happy for any help you can provide.
Programmers of all skill levels are welcome, there are lots of tasks
which are pretty straightforward and don't require any special
expertise.
If you're not sure how you'd like to contribute, please consider taking
a look at [the issue tracker](https://github.com/simd-everywhere/simde/issues).
There is a [good first issue](https://github.com/simd-everywhere/simde/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
tag if you want to ease into a your first contributions, but if you're
interested in something else please get in touch via the issue tracker;
we're happy to help you get a handle on whatever you are interested in.
If you're interested in implementing currently unimplemented functions,
there is [a
guide](https://github.com/simd-everywhere/simde/wiki/Implementing-a-New-Function)
explaining how to add new functions and how to quickly and easily get
a test case in place. It's a bit rough right now, but if anything is
unclear please feel free to use the issue tracker to ask about
anything you're not clear on.
## Usage
First, it is important to note that *you do not need two separate
versions* (one using SIMDe, the other native). If the native functions
are available SIMDe will use them, and compilers easily optimize away
any overhead from SIMDe; all they have to do is some basic inlining.
`-O2` should be enough, but we strongly recommend `-O3` (or whatever
flag instructs your compiler to aggressizely optimize) since many of
the portable fallbacks are substantially faster with aggressive
auto-vectorization that isn't enabled at lower optimization levels.
Each instruction set has a separate file; `x86/mmx.h` for MMX,
`x86/sse.h` for SSE, `x86/sse2.h` for SSE2, and so on. Just include
the header for whichever instruction set(s) you want *instead of the
native version* (if you include the native version after SIMDe it will
result in compile-time errors if native aliases are enabled). SIMDe
will provide the fastest implementation it can given which extensions
you've enabled in your compiler (i.e., if you want to use NEON to
implement SSE, you may need to pass something like `-mfpu=neon`
or `-march=armv8-a+simd`. See
[GCC ARM-Options](https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html)
for more information).
If you define `SIMDE_ENABLE_NATIVE_ALIASES` before including SIMDe
you can use the same names as the native functions. Unfortunately,
this is somewhat error-prone due to portability issues in the APIs, so
it's recommended to only do this for testing. When
`SIMDE_ENABLE_NATIVE_ALIASES` is undefined only the versions prefixed
with `simde_` will be available; for example, the MMX `_mm_add_pi8`
intrinsic becomes `simde_mm_add_pi8`, and `__m64` becomes `simde__m64`.
Since SIMDe is meant to be portable, many functions which assume types
are of a specific size have been altered to use fixed-width types
instead. For example, Intel's APIs use `char` for signed 8-bit
integers, but `char` on ARM is generally unsigned. SIMDe uses `int8_t`
to make the API portable, but that means your code may require some
minor changes (such as using `int8_t` instead of `char`) to work on
other platforms.
That said, the changes are usually quite minor. It's often enough to
just use search and replace, manual changes are required pretty
infrequently.
### OpenMP 4 SIMD
SIMDe makes extensive use of annotations to help the compiler vectorize
code. By far the best annotations use the SIMD support built in to
OpenMP 4, so if your compiler supports these annotations we strongly
recommend you enable them.
If you are already using OpenMP, SIMDe will automatically detect it
using the `_OPENMP` macro and no further action is required.
Some compilers allow you to enable OpenMP SIMD *without* enabling the
full OpenMP. In such cases there is no runtime dependency on OpenMP
and no runtime overhead; SIMDe will just be faster. Unfortunately,
SIMDe has no way to detect such situations (the `_OPENMP` macro is not
defined), so after enabling it in your compiler you'll need to define
`SIMDE_ENABLE_OPENMP` (e.g., by passing `-DSIMDE_ENABLE_OPENMP`) to get
SIMDe to output the relevant pragmas.
Enabling OpenMP SIMD support varies by compiler:
* GCC 4.9+ and clang 6+ support a `-fopenmp-simd` command line flag.
* ICC supports a `-qopenmp-simd` command line flag.
* MCST's LCC enables OpenMP SIMD by default, so no flags are needed
(technically you don't even need to pass `-DSIMDE_ENABLE_OPENMP`).
We are not currently aware of any other compilers which allow you to
enable OpenMP SIMD support without enabling full OpenMP (if you are
please file an issue to let us know). You should determine whether you
wish to enable full OpenMP support on a case-by-case basis, but it is
likely that the overhead of linking to (but not using) the OpenMP
runtime library will be dwarfed by the performance improvements from
using the OpenMP SIMD annotations in SIMDe.
If you choose not to use OpenMP SIMD, SIMDe also supports
using [Cilk Plus](https://www.cilkplus.org/), [GCC loop-specific
pragmas](https://gcc.gnu.org/onlinedocs/gcc/Loop-Specific-Pragmas.html),
or [clang pragma loop hint
directives](http://llvm.org/docs/Vectorizers.html#pragma-loop-hint-directives),
though these are not nearly as effective as OpenMP SIMD and depending
on them will likely result in less efficient code. All of these are
detected automatically by SIMDe, so if they are enabled in your
compiler nothing more is required.
If for some reason you do not wish to enable OpenMP 4 SIMD support even
though SIMDe detects it, you should define `SIMDE_DISABLE_OPENMP` prior
to including SIMDe.
## Portability
### Compilers
SIMDe does depend on some C99 features, though the subset supported by
MSVC also works. While we do our best to make sure we provide optimized
implementations where they are supported, SIMDe does contain portable
fallbacks which are designed to work on any C99 compiler.
Every commit is tested in CI on multiple compilers, platforms, and
configurations, and our test coverage is extremely extensive.
Currently tested compilers include:
* GCC versions back to 4.8
* Clang versions back to 3.8
* Microsoft Visual Studio back to 12 (2013)
* IBM XL C/C++
* Intel C/C++ Compiler (ICC)
I'm generally willing to accept patches to add support for other
compilers, as long as they're not too disruptive, *especially* if we
can get CI support going. If using one of our existing CI providers
isn't an option then other CI platforms can be added.
### Hardware
The following architectures are tested in CI for every commit:
* x86_64/amd64
* x86
* AArch64
* ARMv8
* ARMv7 with VFPv3-D16 floating point
* ARMv5 EABI
* PPC64
* z/Architecture (with "-mzvector")
* MIPS Loongson 64
* RISC-V 64
* emscripten 32- & 64-bit; regular and relaxed
* LoongArch64
We would love to add more, so patches are extremely welcome!
## Related Projects
* The "builtins" module in
[portable-snippets](https://github.com/nemequ/portable-snippets)
does much the same thing, but for compiler-specific intrinsics
(think `__builtin_clz` and `_BitScanForward`), **not** SIMD
intrinsics.
* Intel offers an emulator, the [Intel® Software Development
Emulator](https://software.intel.com/en-us/articles/intel-software-development-emulator/)
which can be used to develop software which uses Intel intrinsics
without having to own hardware which supports them, though it
doesn't help for deployment.
* [Iris](https://github.com/AlexYaruki/iris) is the only other project
I'm aware of which is attempting to create portable implementations
like SIMDe. SIMDe is much further along on the Intel side, but Iris
looks to be in better shape on ARM. C++-only, Apache 2.0 license.
AFAICT there are no accelerated fallbacks, nor is there a good way to
add them since it relies extensively on templates.
* There are a few projects trying to implement one set with another:
* [ARM_NEON_2_x86_SSE](https://github.com/intel/ARM_NEON_2_x86_SSE)
— implementing NEON using SSE. Quite extensive, Apache 2.0
license.
* [sse2neon](https://github.com/jratcliff63367/sse2neon) —
implementing SSE using NEON. This code has already been merged
into SIMDe.
* [veclib](https://github.com/IvantheDugtrio/veclib) — implementing
SSE2 using AltiVec/VMX, using a non-free IBM library called
[powerveclib](https://www.ibm.com/developerworks/community/groups/community/powerveclib/)
* [SSE-to-NEON](https://github.com/otim/SSE-to-NEON) — implementing
SSE with NEON. Non-free, C++.
* [AvxToNeon](https://github.com/kunpengcompute/AvxToNeon) — Popular
AVX+ intrinsincs implemented in NEON. C, Apache 2.0 license.
* [neon2rvv](https://github.com/howjmay/neon2rvv) - A C/C++ header file that converts Arm/Aarch64 NEON intrinsics to RISC-V Vector (RVV) Extension, MIT license
* [sse2rvv](https://github.com/pattonkan/sse2rvv) - A C/C++ header file that converts Intel SSE intrinsics to RISCV-V Extension intrinsics, MIT license.
* [arm-neon-tests](https://github.com/christophe-lyon/arm-neon-tests)
contains tests to verify NEON implementations.
If you know of any other related projects, please [let us
know](https://github.com/simd-everywhere/simde/issues/new)!
## Caveats
Sometime features can't be emulated. If SIMDe is operating in native
mode the functions will work as expected, but if there is no native
support some caveats apply:
* Many functions require <math.h> and/or <fenv.h>. SIMDe will still
work without those headers, but the results of those functions are
undefined.
* x86 / x86_64
* SSE
* `SIMDE_MM_SET_ROUNDING_MODE()` will use `fesetround()`, altering
the global rounding mode.
* `simde_mm_getcsr` and `simde_mm_setcsr` only implement bits 13
and 14 (rounding mode).
* AVX
* `simde_mm256_test*` do not set the CF/ZF registers as there is
no portable way to implement that functionality.
* `simde_mm256_zeroall` and `simde_mm256_zeroupper` are not
implemented as there is no portable way to implement that
functionality.
Additionally, there are some known limitations which apply when using
native aliases (`SIMDE_ENABLE_NATIVE_ALIASES`):
* On Windows x86 (but not x86_64), some MMX functions and SSE/SSE2
functions which use MMX types (__m64) other than for pointers may
return incorrect results.
Also, as mentioned earlier, while some APIs make assumptions about
basic types (*e.g.*, `int` is 32 bits), SIMDe does not, so many types
have been altered to use portable fixed-width versions such as
`int32_t`.
If you find any other differences, please file an issue so we can either fix
it or add it to the list above.
## Benefactors
SIMDe uses resources provided for free by a number of organizations.
While this shouldn't be taken to imply endorsement of SIMDe, we're
tremendously grateful for their support:
* [IntegriCloud](https://integricloud.com/) — provides access to a very
fast POWER9 server for developing AltiVec/VMX support.
* [GCC Compile Farm](https://gcc.gnu.org/wiki/CompileFarm) — provides
access to a wide range of machines with different architectures for
developing support for various ISA extensions.
* [CodeCov.io](https://codecov.io/) — provides code coverage analysis
for our test cases.
* [Google](https://www.google.com/) ­— financing
[Summer of Code](https://summerofcode.withgoogle.com/), substantial
amounts of code (Sean Maher's contributions), and an [Open Source Peer
Bonus](https://opensource.google/docs/growing/peer-bonus/).
Without such organizations donating resources, SIMDe wouldn't be nearly
as useful or usable as it is today.
We would also like to thank anyone who has helped develop the myriad
of software on which SIMDe relies, including compilers and analysis
tools.
Finally, a special thank you to
[anyone who has contributed](https://github.com/simd-everywhere/simde/graphs/contributors)
to SIMDe, filed bugs, provided suggestions, or helped with SIMDe
development in any way.
## License
SIMDe is distributed under an MIT-style license; see COPYING for
details.
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://nemequ.github.io/"><img src="https://avatars0.githubusercontent.com/u/1151?v=4" width="100px;" alt=""/><br /><sub><b>Evan Nemerson</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=nemequ" title="Code">💻</a> <a href="#content-nemequ" title="Content">🖋</a> <a href="https://github.com/nemequ/simde/commits?author=nemequ" title="Documentation">📖</a> <a href="#example-nemequ" title="Examples">💡</a> <a href="#ideas-nemequ" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-nemequ" title="Answering Questions">💬</a> <a href="https://github.com/nemequ/simde/pulls?q=is%3Apr+reviewed-by%3Anemequ" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/nemequ/simde/commits?author=nemequ" title="Tests">⚠️</a> <a href="#tutorial-nemequ" title="Tutorials">✅</a> <a href="#talk-nemequ" title="Talks">📢</a> <a href="https://github.com/nemequ/simde/issues?q=author%3Anemequ" title="Bug reports">🐛</a> <a href="#infra-nemequ" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-nemequ" title="Maintenance">🚧</a> <a href="#projectManagement-nemequ" title="Project Management">📆</a></td>
<td align="center"><a href="https://orcid.org/0000-0002-2961-9670"><img src="https://avatars3.githubusercontent.com/u/1330696?v=4" width="100px;" alt=""/><br /><sub><b>Michael R. Crusoe</b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3Amr-c" title="Bug reports">🐛</a> <a href="https://github.com/nemequ/simde/commits?author=mr-c" title="Code">💻</a> <a href="#eventOrganizing-mr-c" title="Event Organizing">📋</a> <a href="#fundingFinding-mr-c" title="Funding Finding">🔍</a> <a href="#ideas-mr-c" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-mr-c" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-mr-c" title="Packaging/porting to new platform">📦</a> <a href="https://github.com/nemequ/simde/commits?author=mr-c" title="Tests">⚠️</a> <a href="#maintenance-mr-c" title="Maintenance">🚧</a> <a href="#projectManagement-mr-c" title="Project Management">📆</a> <a href="https://github.com/nemequ/simde/pulls?q=is%3Apr+reviewed-by%3Amr-c" title="Reviewed Pull Requests">👀</a></td>
<td align="center"><a href="https://github.com/himanshi18037"><img src="https://avatars1.githubusercontent.com/u/43923076?v=4" width="100px;" alt=""/><br /><sub><b>HIMANSHI MATHUR</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=himanshi18037" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=himanshi18037" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/masterchef2209"><img src="https://avatars0.githubusercontent.com/u/27916352?v=4" width="100px;" alt=""/><br /><sub><b>Hidayat Khan</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=masterchef2209" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=masterchef2209" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/rosbif"><img src="https://avatars1.githubusercontent.com/u/553899?v=4" width="100px;" alt=""/><br /><sub><b>rosbif</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=rosbif" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=rosbif" title="Tests">⚠️</a> <a href="https://github.com/nemequ/simde/issues?q=author%3Arosbif" title="Bug reports">🐛</a> <a href="#ideas-rosbif" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/nemequ/simde/commits?author=rosbif" title="Documentation">📖</a></td>
<td align="center"><a href="http://junaruga.hatenablog.com/"><img src="https://avatars2.githubusercontent.com/u/121989?v=4" width="100px;" alt=""/><br /><sub><b>Jun Aruga</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=junaruga" title="Code">💻</a> <a href="#ideas-junaruga" title="Ideas, Planning, & Feedback">🤔</a> <a href="#platform-junaruga" title="Packaging/porting to new platform">📦</a> <a href="#infra-junaruga" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-junaruga" title="Maintenance">🚧</a> <a href="https://github.com/nemequ/simde/commits?author=junaruga" title="Tests">⚠️</a> <a href="https://github.com/nemequ/simde/issues?q=author%3Ajunaruga" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/marmeladema"><img src="https://avatars2.githubusercontent.com/u/1629419?v=4" width="100px;" alt=""/><br /><sub><b>Élie ROUDNINSKI</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=marmeladema" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=marmeladema" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center"><a href="http://www.bache.name"><img src="https://avatars3.githubusercontent.com/u/7937081?v=4" width="100px;" alt=""/><br /><sub><b>Jesper Storm Bache</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=jsbache" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/jeffdaily"><img src="https://avatars1.githubusercontent.com/u/904248?v=4" width="100px;" alt=""/><br /><sub><b>Jeff Daily</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=jeffdaily" title="Code">💻</a> <a href="#infra-jeffdaily" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center"><a href="https://github.com/yekm"><img src="https://avatars2.githubusercontent.com/u/205196?v=4" width="100px;" alt=""/><br /><sub><b>Pavel</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=yekm" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/sabarishbollapragada"><img src="https://avatars3.githubusercontent.com/u/36379720?v=4" width="100px;" alt=""/><br /><sub><b>Sabarish Bollapragada</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=sabarishbollapragada" title="Code">💻</a></td>
<td align="center"><a href="http://www.thegavinli.com/"><img src="https://avatars2.githubusercontent.com/u/371529?v=4" width="100px;" alt=""/><br /><sub><b>Gavin Li</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=gh2o" title="Code">💻</a></td>
<td align="center"><a href="http://www.yiningkarlli.com"><img src="https://avatars0.githubusercontent.com/u/1057198?v=4" width="100px;" alt=""/><br /><sub><b>Yining Karl Li</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=betajippity" title="Code">💻</a></td>
<td align="center"><a href="https://www.facebook.com/anirbandey303"><img src="https://avatars1.githubusercontent.com/u/29774651?v=4" width="100px;" alt=""/><br /><sub><b>Anirban Dey</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=anirbandey303" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Un1Gfn"><img src="https://avatars3.githubusercontent.com/u/28521292?v=4" width="100px;" alt=""/><br /><sub><b>Darren Ng</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=Un1Gfn" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/FaresSalem"><img src="https://avatars0.githubusercontent.com/u/7736245?v=4" width="100px;" alt=""/><br /><sub><b>FaresSalem</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=FaresSalem" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/GorePradnyesh"><img src="https://avatars0.githubusercontent.com/u/843197?v=4" width="100px;" alt=""/><br /><sub><b>Pradnyesh Gore</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=GorePradnyesh" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/seanptmaher"><img src="https://avatars0.githubusercontent.com/u/39571964?v=4" width="100px;" alt=""/><br /><sub><b>Sean Maher</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=seanptmaher" title="Code">💻</a></td>
<td align="center"><a href="https://zh.wikipedia.org/wiki/User:Artoria2e5"><img src="https://avatars.githubusercontent.com/u/6459309?v=4" width="100px;" alt=""/><br /><sub><b>Mingye Wang</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=Artoria2e5" title="Documentation">📖</a></td>
<td align="center"><a href="http://www.ngzhian.com"><img src="https://avatars.githubusercontent.com/u/1749303?v=4" width="100px;" alt=""/><br /><sub><b>Ng Zhi An</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=ngzhian" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=ngzhian" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Glitch18"><img src="https://avatars.githubusercontent.com/u/30515829?v=4" width="100px;" alt=""/><br /><sub><b>Atharva Nimbalkar</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=Glitch18" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=Glitch18" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/simba611"><img src="https://avatars.githubusercontent.com/u/59763921?v=4" width="100px;" alt=""/><br /><sub><b>simba611</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=simba611" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=simba611" title="Tests">⚠️</a></td>
<td align="center"><a href="https://ashnewmanjones.com"><img src="https://avatars.githubusercontent.com/u/29983014?v=4" width="100px;" alt=""/><br /><sub><b>Ashleigh Newman-Jones</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=ashnewmanjones" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=ashnewmanjones" title="Tests">⚠️</a></td>
<td align="center"><a href="https://alum.mit.edu/www/wrv/"><img src="https://avatars.githubusercontent.com/u/5039686?v=4" width="100px;" alt=""/><br /><sub><b>Willy R. Vasquez</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=wrv" title="Code">💻</a> <a href="#maintenance-wrv" title="Maintenance">🚧</a> <a href="https://github.com/nemequ/simde/commits?author=wrv" title="Tests">⚠️</a></td>
<td align="center"><a href="https://cs.stanford.edu/~keithw"><img src="https://avatars.githubusercontent.com/u/208955?v=4" width="100px;" alt=""/><br /><sub><b>Keith Winstein</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=keithw" title="Code">💻</a> <a href="#maintenance-keithw" title="Maintenance">🚧</a> <a href="https://github.com/nemequ/simde/commits?author=keithw" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/SoapGentoo"><img src="https://avatars.githubusercontent.com/u/16636962?v=4" width="100px;" alt=""/><br /><sub><b>David Seifert</b></sub></a><br /><a href="#maintenance-SoapGentoo" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://mirdita.de"><img src="https://avatars.githubusercontent.com/u/63657?v=4" width="100px;" alt=""/><br /><sub><b>Milot Mirdita</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=milot-mirdita" title="Code">💻</a> <a href="#maintenance-milot-mirdita" title="Maintenance">🚧</a> <a href="https://github.com/nemequ/simde/commits?author=milot-mirdita" title="Tests">⚠️</a></td>
<td align="center"><a href="http://bitpatch.com"><img src="https://avatars.githubusercontent.com/u/4021602?v=4" width="100px;" alt=""/><br /><sub><b>aqrit</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=aqrit" title="Code">💻</a> <a href="#maintenance-aqrit" title="Maintenance">🚧</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/dgazzoni"><img src="https://avatars.githubusercontent.com/u/17934171?v=4" width="100px;" alt=""/><br /><sub><b>Décio Luiz Gazzoni Filho</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=dgazzoni" title="Code">💻</a> <a href="#maintenance-dgazzoni" title="Maintenance">🚧</a> <a href="https://github.com/nemequ/simde/commits?author=dgazzoni" title="Tests">⚠️</a></td>
<td align="center"><a href="http://vk.com/muzzdiez"><img src="https://avatars.githubusercontent.com/u/16463967?v=4" width="100px;" alt=""/><br /><sub><b>Igor Molchanov</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=makise-homura" title="Code">💻</a> <a href="#maintenance-makise-homura" title="Maintenance">🚧</a> <a href="#platform-makise-homura" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://github.com/anrodrig"><img src="https://avatars.githubusercontent.com/u/35815808?v=4" width="100px;" alt=""/><br /><sub><b>Andrew Rodriguez</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=anrodrig" title="Code">💻</a> <a href="#maintenance-anrodrig" title="Maintenance">🚧</a> <a href="https://github.com/nemequ/simde/commits?author=anrodrig" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/Changqing-JING"><img src="https://avatars.githubusercontent.com/u/59640930?v=4" width="100px;" alt=""/><br /><sub><b>Changqing Jing</b></sub></a><br /><a href="#maintenance-Changqing-JING" title="Maintenance">🚧</a></td>
<td align="center"><a href="http://jpcima.sdf1.org/"><img src="https://avatars.githubusercontent.com/u/17614485?v=4" width="100px;" alt=""/><br /><sub><b>JP Cimalando</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=jpcima" title="Code">💻</a> <a href="#infra-jpcima" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
<td align="center"><a href="https://flygoat.com/"><img src="https://avatars.githubusercontent.com/u/5955297?v=4" width="100px;" alt=""/><br /><sub><b>Jiaxun Yang</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=FlyGoat" title="Code">💻</a> <a href="#platform-FlyGoat" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://github.com/ktgw0316"><img src="https://avatars.githubusercontent.com/u/3116763?v=4" width="100px;" alt=""/><br /><sub><b>Masahiro Kitagawa</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=ktgw0316" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=ktgw0316" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/operasfantom"><img src="https://avatars.githubusercontent.com/u/31903947?v=4" width="100px;" alt=""/><br /><sub><b>Pavel Iatchenii</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=operasfantom" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=operasfantom" title="Tests">⚠️</a></td>
<td align="center"><a href="https://tommyvct.tk"><img src="https://avatars.githubusercontent.com/u/7903172?v=4" width="100px;" alt=""/><br /><sub><b>Tommy Vercetti</b></sub></a><br /><a href="#maintenance-tommyvct" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://github.com/rscohn2"><img src="https://avatars.githubusercontent.com/u/1936730?v=4" width="100px;" alt=""/><br /><sub><b>Robert Cohn</b></sub></a><br /><a href="#maintenance-rscohn2" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://github.com/adamnovak"><img src="https://avatars.githubusercontent.com/u/5062495?v=4" width="100px;" alt=""/><br /><sub><b>Adam Novak</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=adamnovak" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/boris-kuz"><img src="https://avatars.githubusercontent.com/u/18011434?v=4" width="100px;" alt=""/><br /><sub><b>boris-kuz</b></sub></a><br /><a href="#maintenance-boris-kuz" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://github.com/Epixu"><img src="https://avatars.githubusercontent.com/u/1529601?v=4" width="100px;" alt=""/><br /><sub><b>Dimo Markov</b></sub></a><br /><a href="#maintenance-Epixu" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://dhbloo.github.io/"><img src="https://avatars.githubusercontent.com/u/32353216?v=4" width="100px;" alt=""/><br /><sub><b>dblue</b></sub></a><br /><a href="#maintenance-dhbloo" title="Maintenance">🚧</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/zekehul"><img src="https://avatars.githubusercontent.com/u/8780526?v=4" width="100px;" alt=""/><br /><sub><b>zekehul</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=zekehul" title="Code">💻</a> <a href="#maintenance-zekehul" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://open-cells.com"><img src="https://avatars.githubusercontent.com/u/40661368?v=4" width="100px;" alt=""/><br /><sub><b>Laurent Thomas</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=LaurentThomas" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/maxbachmann"><img src="https://avatars.githubusercontent.com/u/44199644?v=4" width="100px;" alt=""/><br /><sub><b>Max Bachmann</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=maxbachmann" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/psaab"><img src="https://avatars.githubusercontent.com/u/196946?v=4" width="100px;" alt=""/><br /><sub><b>psaab</b></sub></a><br /><a href="#maintenance-psaab" title="Maintenance">🚧</a></td>
<td align="center"><a href="http://superduper.net/"><img src="https://avatars.githubusercontent.com/u/515813?v=4" width="100px;" alt=""/><br /><sub><b>Sam Clegg</b></sub></a><br /><a href="#maintenance-sbc100" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://twitter.com/tlively52"><img src="https://avatars.githubusercontent.com/u/7121787?v=4" width="100px;" alt=""/><br /><sub><b>Thomas Lively</b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3Atlively" title="Bug reports">🐛</a> <a href="#ideas-tlively" title="Ideas, Planning, & Feedback">🤔</a> <a href="#maintenance-tlively" title="Maintenance">🚧</a></td>
<td align="center"><a href="http://blog.coderzh.com/"><img src="https://avatars.githubusercontent.com/u/329164?v=4" width="100px;" alt=""/><br /><sub><b>coderzh</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=coderzh" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=coderzh" title="Tests">⚠️</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/k-dominik"><img src="https://avatars.githubusercontent.com/u/24434157?v=4" width="100px;" alt=""/><br /><sub><b>Dominik Kutra</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=k-dominik" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=k-dominik" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/Lithrein"><img src="https://avatars.githubusercontent.com/u/207981?v=4" width="100px;" alt=""/><br /><sub><b>Lithrein</b></sub></a><br /><a href="#maintenance-Lithrein" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://github.com/quyykk"><img src="https://avatars.githubusercontent.com/u/85879619?v=4" width="100px;" alt=""/><br /><sub><b>Nick</b></sub></a><br /><a href="#maintenance-quyykk" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://github.com/thomasdwu"><img src="https://avatars.githubusercontent.com/u/6819659?v=4" width="100px;" alt=""/><br /><sub><b>thomasdwu</b></sub></a><br /><a href="#maintenance-thomasdwu" title="Maintenance">🚧</a></td>
<td align="center"><a href="https://github.com/Remnant44"><img src="https://avatars.githubusercontent.com/u/54461740?v=4" width="100px;" alt=""/><br /><sub><b>Stephen</b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3ARemnant44" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/johnplatts"><img src="https://avatars.githubusercontent.com/u/28941113?v=4" width="100px;" alt=""/><br /><sub><b>John Platts</b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3Ajohnplatts" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/tycho"><img src="https://avatars.githubusercontent.com/u/29616?v=4" width="100px;" alt=""/><br /><sub><b>Steven Noonan</b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3Atycho" title="Bug reports">🐛</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/p0nce"><img src="https://avatars.githubusercontent.com/u/1067485?v=4" width="100px;" alt=""/><br /><sub><b>p0nce </b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3Ap0nce" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://bonedaddy.net/pabs3/"><img src="https://avatars.githubusercontent.com/u/328602?v=4" width="100px;" alt=""/><br /><sub><b>Paul Wise</b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3Apabs3" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/easyaspi314"><img src="https://avatars.githubusercontent.com/u/6258309?v=4" width="100px;" alt=""/><br /><sub><b>easyaspi314 (Devin)</b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3Aeasyaspi314" title="Bug reports">🐛</a> <a href="https://github.com/nemequ/simde/commits?author=easyaspi314" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/JonLiu1993"><img src="https://avatars.githubusercontent.com/u/63675417?v=4" width="100px;" alt=""/><br /><sub><b>JonLiu1993</b></sub></a><br /><a href="#platform-JonLiu1993" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://github.com/Cheney-W"><img src="https://avatars.githubusercontent.com/u/38240633?v=4" width="100px;" alt=""/><br /><sub><b>Cheney Wang</b></sub></a><br /><a href="#platform-Cheney-W" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="http://myd7349.github.io/"><img src="https://avatars.githubusercontent.com/u/5435649?v=4" width="100px;" alt=""/><br /><sub><b>myd7349 </b></sub></a><br /><a href="#platform-myd7349" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://github.com/chausner"><img src="https://avatars.githubusercontent.com/u/15180557?v=4" width="100px;" alt=""/><br /><sub><b>chausner</b></sub></a><br /><a href="#platform-chausner" title="Packaging/porting to new platform">📦</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/yyctw"><img src="https://avatars.githubusercontent.com/u/45251297?v=4" width="100px;" alt=""/><br /><sub><b>Yi-Yen Chung</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=yyctw" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=yyctw" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/wewe5215"><img src="https://avatars.githubusercontent.com/u/76145143?v=4" width="100px;" alt=""/><br /><sub><b>Chi-Wei Chu</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=wewe5215" title="Code">💻</a> <a href="https://github.com/nemequ/simde/commits?author=wewe5215" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/M-HT"><img src="https://avatars.githubusercontent.com/u/12173952?v=4" width="100px;" alt=""/><br /><sub><b>M-HT</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=M-HT" title="Code">💻</a></td>
<td align="center"><a href="https://gottliebtfreitag.de"><img src="https://avatars.githubusercontent.com/u/456045?v=4" width="100px;" alt=""/><br /><sub><b>Simon Gene Gottlieb</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=SGSSGene" title="Code">💻</a></td>
<td align="center"><a href="http://bsc.fu-berlin.de"><img src="https://avatars.githubusercontent.com/u/6008722?v=4" width="100px;" alt=""/><br /><sub><b>Chris Bielow</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=cbielow" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/XiWeiGu"><img src="https://avatars.githubusercontent.com/u/41367273?v=4" width="100px;" alt=""/><br /><sub><b>gu xiwei</b></sub></a><br /><a href="#platform-XiWeiGu" title="Packaging/porting to new platform">📦</a> <a href="https://github.com/nemequ/simde/commits?author=XiWeiGu" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/Vineg"><img src="https://avatars.githubusercontent.com/u/1757455?v=4" width="100px;" alt=""/><br /><sub><b>George Vinokhodov</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=Vineg" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Coeur"><img src="https://avatars.githubusercontent.com/u/839992?v=4" width="100px;" alt=""/><br /><sub><b>Cœur</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=Coeur" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Proudsalsa"><img src="https://avatars.githubusercontent.com/u/103449548?v=4" width="100px;" alt=""/><br /><sub><b>Florian @Proudsalsa</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=Proudsalsa" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/thomas-schlichter"><img src="https://avatars.githubusercontent.com/u/106664923?v=4" width="100px;" alt=""/><br /><sub><b>Thomas Schlichter</b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3Athomas-schlichter" title="Bug reports">🐛</a> <a href="https://github.com/nemequ/simde/commits?author=thomas-schlichter" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/AymenQ"><img src="https://avatars.githubusercontent.com/u/3706283?v=4" width="100px;" alt=""/><br /><sub><b>Aymen Qader</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=AymenQ" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/eric900115"><img src="https://avatars.githubusercontent.com/u/77781328?v=4" width="100px;" alt=""/><br /><sub><b>Eric Su</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=eric900115" title="Code">💻</a> <a href="#platform-eric900115" title="Packaging/porting to new platform">📦</a></td>
<td align="center"><a href="https://github.com/Torinde"><img src="https://avatars.githubusercontent.com/u/97228894?v=4" width="100px;" alt=""/><br /><sub><b>Torinde</b></sub></a><br /><a href="https://github.com/nemequ/simde/issues?q=author%3ATorinde" title="Bug reports">🐛</a> <a href="https://github.com/nemequ/simde/commits?author=Torinde" title="Documentation">📖</a> <a href="#ideas-Torinde" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="https://www.linkedin.com/in/yanghauyuan/"><img src="https://avatars.githubusercontent.com/u/13924801?v=4" width="100px;" alt=""/><br /><sub><b>Yang Hau</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=howjmay" title="Code">💻</a> <a href="#ideas-howjmay" title="Ideas, Planning, & Feedback">🤔</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/zengdage"><img src="https://avatars.githubusercontent.com/u/16076103?v=4" width="100px;" alt=""/><br /><sub><b>Zhijin Zeng</b></sub></a><br /><a href="https://github.com/nemequ/simde/commits?author=zengdage" title="Code">💻</a></td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind are welcome!
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/python3
# amalgamate.py
# Written by Evan Nemerson <evan@nemerson.com>
#
# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to
# the public domain worldwide. This software is distributed without
# any warranty.
#
# For details, see <http://creativecommons.org/publicdomain/zero/1.0/>.
# SPDX-License-Identifier: CC0-1.0
# Quick and dirty script to amalgamate C into a single file. Includes
# using angle brackets (#include <foo.h>) will be preserved, but for
# includes using double quotes (#include "foo.h") the file will be
# included by this script.
#
# If you make any improvements please report them in the SIMDe issue
# tracker at <https://github.com/simd-everywhere/simde/issues> or
# directly to the author so they can be merged back into the original
# version.
import sys, re, os, subprocess
amalgamate_include = re.compile('^\\s*#\\s*include\\s+\\"([^)]+)\\"\\s$')
already_included = []
def amalgamate(filename, stream):
full_path = os.path.realpath(os.path.realpath(filename))
srcdir = os.path.dirname(full_path)
print('/* AUTOMATICALLY GENERATED FILE, DO NOT MODIFY */')
git_id = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=srcdir).decode().strip()
print("/* {:s} */".format(git_id))
if full_path not in already_included:
already_included.insert(-1, full_path)
with open(filename) as input_file:
stream.write('/* :: Begin ' + os.path.relpath(full_path) + ' :: */\n')
for source_line in input_file:
a9e_inc_m = amalgamate_include.match(source_line)
if a9e_inc_m:
amalgamate(os.path.join(srcdir, a9e_inc_m.group(1)), stream)
else:
stream.write(source_line)
stream.write('/* :: End ' + os.path.relpath(full_path) + ' :: */\n')
if len(sys.argv) != 2:
sys.stderr.write("USAGE: " + sys.argv[0] + ' SOURCE_FILE\n\n')
sys.stderr.write("This will print a copy of $SOURCE_FILE to stdout, while replacing\n")
sys.stderr.write("all '#include AMALGAMATE(file)' lines with copies of file.\n")
sys.exit(1)
amalgamate(sys.argv[1], sys.stdout)
+3
View File
@@ -0,0 +1,3 @@
comment: false
ignore:
- "test"
+122
View File
@@ -0,0 +1,122 @@
# Dockerfile for SIMDe development
ARG RELEASE=testing
FROM debian:${RELEASE}-slim
ARG DEBIAN_FRONTEND=noninteractive
ARG QEMU_GIT=n
ARG ARCHS="arm64 armel armhf i386 mips64el ppc64el s390x riscv64"
RUN \
apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y netselect-apt && \
if netselect-apt -n ${release}; then \
mv sources.list /etc/apt/sources.list; \
fi
COPY docker/bin /tmp/simde-bin
RUN \
for script in simde-reset-build.sh; do \
ln -s /usr/local/src/simde/docker/bin/"${script}" /usr/bin/"${script}"; \
done
# Common packages
RUN \
apt-get update -y && \
apt-get upgrade -y && \
apt-get install -yq --no-install-recommends \
git build-essential vim \
ccache ninja-build \
'^clang-[0-9\.]+$' \
'^llvm-[0-9\.]+$' \
'^g(cc|\+\+)-[0-9\.]+$' \
gdb valgrind \
binfmt-support qemu-user-static \
creduce screen htop parallel nano rsync strace \
npm libsleef-dev \
pipx wget curl
# Meson on stable is too old, and we want to make sure we keep 0.55
# working for a while.
RUN pipx install meson==0.55.1
# GCC cross-compilers
RUN \
apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y apt-file && \
apt-file update
RUN \
PACKAGES_TO_INSTALL=""; \
for ARCH in ${ARCHS}; do \
PACKAGES_TO_INSTALL="${PACKAGES_TO_INSTALL} libc6-${ARCH}-cross libstdc++-[0-9]*-dev-${ARCH}-cross"; \
PACKAGES_TO_INSTALL="${PACKAGES_TO_INSTALL} $(apt-file search -x "/usr/bin/$(/tmp/simde-bin/arch2gcc.sh ${ARCH})-(ar|g(cc|\+\+)-[0-9\.]+)" | awk -F: '{ print $1}')"; \
done; \
echo ${PACKAGES_TO_INSTALL} ; \
apt-get install -yq $(echo ${PACKAGES_TO_INSTALL} | tr ' ' '\n' | grep -v -- -9- | tr '\n' ' ')
ENV PATH="/usr/lib/ccache:$PATH:/root/.local/bin:/root/.jsvu/bin"
# ICC
RUN \
apt-get update -y && \
apt-get upgrade -y && \
apt-get install -yq gpg && \
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
| gpg --dearmor > /usr/share/keyrings/oneapi-archive-keyring.gpg && \
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" > /etc/apt/sources.list.d/oneAPI.list && \
apt-get update && \
apt-get install -yq --no-install-recommends intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic intel-oneapi-compiler-dpcpp-cpp && \
for exe in icc icpc icx icpx; do \
printf '#!/bin/bash\nARGS="$@"\nsource /opt/intel/oneapi/compiler/latest/env/vars.sh >/dev/null\n%s ${ARGS}\n' "${exe}" > /usr/bin/"${exe}" && \
chmod 0755 /usr/bin/"${exe}" ; \
done
# # xlc -- Install fails.
# # Once IBM releases a version for Ubuntu Focal (20.04) I hope I can
# # get this working.
# RUN \
# curl -s 'https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/public.gpg' | apt-key add - && \
# echo "deb [arch=ppc64el] https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/ bionic main" > /etc/apt/sources.list.d/xlc.list && \
# apt-get update && \
# XLC_VERSION="$(apt-cache search '^xlc\.[0-9]+\.[0-9]+\.[0-9]+$' | awk '{ print substr($1, 5) }')" && \
# apt-get install "xlc.${XLC_VERSION}:ppc64el" "xlc-license-community.${XLC_VERSION}:ppc64el" && \
# /opt/ibm/xlC/${XLC_VERSION}/bin/xlc_configure <<< 1 >/dev/null
# Intel SDE
COPY test/download-sde.sh /tmp/simde-bin/download-sde.sh
RUN \
"/tmp/simde-bin/download-sde.sh" "/opt/intel/sde" && \
for executable in sde sde64; do \
ln -s "/opt/intel/sde/${executable}" "/usr/bin/${executable}"; \
done
# Emscripten
RUN \
git clone https://github.com/emscripten-core/emsdk.git /opt/emsdk && \
cd /opt/emsdk && ./emsdk install tot && ./emsdk activate tot && \
ln -s /opt/emsdk/upstream/bin/wasm-ld /usr/bin/wasm-ld && \
npm install jsvu -g && jsvu --os=linux64 --engines=v8 && ln -s "/root/.jsvu/v8" "/usr/bin/v8"
# Meson cross files
RUN \
mkdir -p "/usr/local/share/meson/cross" && ln -s /usr/local/src/simde/docker/cross-files /usr/local/share/meson/cross/simde
# Install QEMU git (necessary for MIPS)
RUN \
if [ ${QEMU_GIT} = "y" ]; then \
apt-get install -y pkg-config libglib2.0-dev libpixman-1-dev libaio-dev \
libbpf-dev libdw-dev libcapstone-dev flex bison \
liburing-dev libseccomp-dev libcap-ng-dev libzstd-dev libudev-dev libgnutls28-dev linux-headers-amd64 && \
git clone https://gitlab.com/qemu-project/qemu.git /usr/local/src/qemu && \
mkdir -p /usr/local/src/qemu/build && cd /usr/local/src/qemu/build && \
../configure --prefix=/opt/qemu && \
make -j$(nproc) && \
make install; \
rm -rf /usr/local/src/qemu; \
fi
RUN mkdir -p /opt/simde
WORKDIR /opt/simde
ENV CCACHE_DIR=/opt/simde/.ccache CCACHE_COMPRESS=1
+112
View File
@@ -0,0 +1,112 @@
# Dockerfile for SIMDe development
FROM ubuntu:focal
ARG DEBIAN_FRONTEND=noninteractive
ARG QEMU_GIT=n
ARG ARCHS="arm64"
#"arm64 armel armhf i386 mips64el ppc64el s390x riscv64"
COPY docker/bin /tmp/simde-bin
RUN \
for script in simde-reset-build.sh; do \
ln -s /usr/local/src/simde/docker/bin/"${script}" /usr/bin/"${script}"; \
done
# Common packages
RUN \
apt-get update -y && \
apt-get upgrade -y && \
apt-get install -yq --no-install-recommends \
git build-essential vim \
ccache ninja-build \
'^clang-[0-9\.]+$' \
'^llvm-[0-9\.]+$' \
'^g(cc|\+\+)-[0-9\.]+$' \
gdb valgrind \
binfmt-support qemu-user-static \
creduce screen htop parallel nano rsync strace \
npm libsleef-dev \
pipx wget curl
# Meson on stable is too old, and we want to make sure we keep 0.55
# working for a while.
RUN pipx install meson==0.55.1
# GCC cross-compilers
RUN \
apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y apt-file && \
apt-file update
RUN \
PACKAGES_TO_INSTALL=""; \
for ARCH in ${ARCHS}; do \
PACKAGES_TO_INSTALL="${PACKAGES_TO_INSTALL} libc6-${ARCH}-cross libstdc++-[0-9]*-dev-${ARCH}-cross"; \
PACKAGES_TO_INSTALL="${PACKAGES_TO_INSTALL} $(apt-file search -x "/usr/bin/$(/tmp/simde-bin/arch2gcc.sh ${ARCH})-(ar|g(cc|\+\+)-[0-9\.]+)" | awk -F: '{ print $1}')"; \
done; \
echo ${PACKAGES_TO_INSTALL} ; \
apt-get install -yq ${PACKAGES_TO_INSTALL}
ENV PATH="/usr/lib/ccache:$PATH:/root/.local/bin:/root/.jsvu/bin"
# ICC
RUN \
apt-get update -y && \
apt-get upgrade -y && \
apt-get install -yq gpg && \
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
| gpg --dearmor > /usr/share/keyrings/oneapi-archive-keyring.gpg && \
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" > /etc/apt/sources.list.d/oneAPI.list && \
apt-get update && \
apt-get install -yq --no-install-recommends intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic intel-oneapi-compiler-dpcpp-cpp && \
for exe in icc icpc icx icpx; do \
printf '#!/bin/bash\nARGS="$@"\nsource /opt/intel/oneapi/compiler/latest/env/vars.sh >/dev/null\n%s ${ARGS}\n' "${exe}" > /usr/bin/"${exe}" && \
chmod 0755 /usr/bin/"${exe}" ; \
done
# # xlc -- Install fails.
# # Once IBM releases a version for Ubuntu Focal (20.04) I hope I can
# # get this working.
# RUN \
# curl -s 'https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/public.gpg' | apt-key add - && \
# echo "deb [arch=ppc64el] https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/ bionic main" > /etc/apt/sources.list.d/xlc.list && \
# apt-get update && \
# XLC_VERSION="$(apt-cache search '^xlc\.[0-9]+\.[0-9]+\.[0-9]+$' | awk '{ print substr($1, 5) }')" && \
# apt-get install "xlc.${XLC_VERSION}:ppc64el" "xlc-license-community.${XLC_VERSION}:ppc64el" && \
# /opt/ibm/xlC/${XLC_VERSION}/bin/xlc_configure <<< 1 >/dev/null
# Intel SDE
COPY test/download-sde.sh /tmp/simde-bin/download-sde.sh
RUN \
"/tmp/simde-bin/download-sde.sh" "/opt/intel/sde" && \
for executable in sde sde64; do \
ln -s "/opt/intel/sde/${executable}" "/usr/bin/${executable}"; \
done
# Emscripten
RUN \
git clone https://github.com/emscripten-core/emsdk.git /opt/emsdk && \
cd /opt/emsdk && ./emsdk install tot && ./emsdk activate tot && \
ln -s /opt/emsdk/upstream/bin/wasm-ld /usr/bin/wasm-ld && \
npm install jsvu -g && jsvu --os=linux64 --engines=v8 && ln -s "/root/.jsvu/v8" "/usr/bin/v8"
# Meson cross files
RUN \
mkdir -p "/usr/local/share/meson/cross" && ln -s /usr/local/src/simde/docker/cross-files /usr/local/share/meson/cross/simde
# Install QEMU git (necessary for MIPS)
RUN \
if [ ${QEMU_GIT} = "y" ]; then \
apt-get install -y pkg-config libglib2.0-dev libpixman-1-dev && \
git clone https://gitlab.com/qemu-project/qemu.git /usr/local/src/qemu && \
mkdir -p /usr/local/src/qemu/build && cd /usr/local/src/qemu/build && \
../configure --prefix=/opt/qemu && \
make -j$(nproc) && \
make install; \
rm -rf /usr/local/src/qemu; \
fi
RUN mkdir -p /opt/simde
WORKDIR /opt/simde
ENV CCACHE_DIR=/opt/simde/.ccache CCACHE_COMPRESS=1
+112
View File
@@ -0,0 +1,112 @@
# Dockerfile for SIMDe development
FROM ubuntu:bionic
ARG DEBIAN_FRONTEND=noninteractive
ARG QEMU_GIT=n
ARG ARCHS="arm64"
#"arm64 armel armhf i386 mips64el ppc64el s390x riscv64"
COPY docker/bin /tmp/simde-bin
RUN \
for script in simde-reset-build.sh; do \
ln -s /usr/local/src/simde/docker/bin/"${script}" /usr/bin/"${script}"; \
done
# Common packages
RUN \
apt-get update -y && \
apt-get upgrade -y && \
apt-get install -yq --no-install-recommends \
git build-essential vim \
ccache ninja-build \
'^clang-[0-9\.]+$' \
'^llvm-[0-9\.]+$' \
'^g(cc|\+\+)-[0-9\.]+$' \
gdb valgrind \
binfmt-support qemu-user-static \
creduce screen htop parallel nano rsync strace \
npm \
python3-pip wget curl python3-setuptools python3-wheel
# Meson on stable is too old, and we want to make sure we keep 0.55
# working for a while.
RUN pip3 install meson==0.55.1
# GCC cross-compilers
RUN \
apt-get update -y && \
apt-get upgrade -y && \
apt-get install -y apt-file && \
apt-file update
RUN \
PACKAGES_TO_INSTALL=""; \
for ARCH in ${ARCHS}; do \
PACKAGES_TO_INSTALL="${PACKAGES_TO_INSTALL} libc6-${ARCH}-cross libstdc++-[0-9]*-dev-${ARCH}-cross"; \
PACKAGES_TO_INSTALL="${PACKAGES_TO_INSTALL} $(apt-file search -x "/usr/bin/$(/tmp/simde-bin/arch2gcc.sh ${ARCH})-(ar|g(cc|\+\+)-[0-9\.]+)" | awk -F: '{ print $1}')"; \
done; \
echo ${PACKAGES_TO_INSTALL} ; \
apt-get install -yq ${PACKAGES_TO_INSTALL}
ENV PATH="/usr/lib/ccache:$PATH:/root/.local/bin:/root/.jsvu/bin"
# ICC
# RUN \
# apt-get update -y && \
# apt-get upgrade -y && \
# apt-get install -yq gpg && \
# wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \
# | gpg --dearmor > /usr/share/keyrings/oneapi-archive-keyring.gpg && \
# echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" > /etc/apt/sources.list.d/oneAPI.list && \
# apt-get update && \
# apt-get install -yq --no-install-recommends intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic intel-oneapi-compiler-dpcpp-cpp && \
# for exe in icc icpc icx icpx; do \
# printf '#!/bin/bash\nARGS="$@"\nsource /opt/intel/oneapi/compiler/latest/env/vars.sh >/dev/null\n%s ${ARGS}\n' "${exe}" > /usr/bin/"${exe}" && \
# chmod 0755 /usr/bin/"${exe}" ; \
# done
# # xlc -- Install fails.
# # Once IBM releases a version for Ubuntu Focal (20.04) I hope I can
# # get this working.
# RUN \
# curl -s 'https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/public.gpg' | apt-key add - && \
# echo "deb [arch=ppc64el] https://public.dhe.ibm.com/software/server/POWER/Linux/xl-compiler/eval/ppc64le/ubuntu/ bionic main" > /etc/apt/sources.list.d/xlc.list && \
# apt-get update && \
# XLC_VERSION="$(apt-cache search '^xlc\.[0-9]+\.[0-9]+\.[0-9]+$' | awk '{ print substr($1, 5) }')" && \
# apt-get install "xlc.${XLC_VERSION}:ppc64el" "xlc-license-community.${XLC_VERSION}:ppc64el" && \
# /opt/ibm/xlC/${XLC_VERSION}/bin/xlc_configure <<< 1 >/dev/null
# Intel SDE
COPY test/download-sde.sh /tmp/simde-bin/download-sde.sh
RUN \
"/tmp/simde-bin/download-sde.sh" "/opt/intel/sde" && \
for executable in sde sde64; do \
ln -s "/opt/intel/sde/${executable}" "/usr/bin/${executable}"; \
done
# Emscripten
# RUN \
# git clone https://github.com/emscripten-core/emsdk.git /opt/emsdk && \
# cd /opt/emsdk && ./emsdk install tot && ./emsdk activate tot && \
# ln -s /opt/emsdk/upstream/bin/wasm-ld /usr/bin/wasm-ld && \
# npm install jsvu -g && jsvu --os=linux64 --engines=v8 && ln -s "/root/.jsvu/v8" "/usr/bin/v8"
# Meson cross files
RUN \
mkdir -p "/usr/local/share/meson/cross" && ln -s /usr/local/src/simde/docker/cross-files /usr/local/share/meson/cross/simde
# Install QEMU git (necessary for MIPS)
RUN \
if [ ${QEMU_GIT} = "y" ]; then \
apt-get install -y pkg-config libglib2.0-dev libpixman-1-dev && \
git clone https://gitlab.com/qemu-project/qemu.git /usr/local/src/qemu && \
mkdir -p /usr/local/src/qemu/build && cd /usr/local/src/qemu/build && \
../configure --prefix=/opt/qemu && \
make -j$(nproc) && \
make install; \
rm -rf /usr/local/src/qemu; \
fi
RUN mkdir -p /opt/simde
WORKDIR /opt/simde
ENV CCACHE_DIR=/opt/simde/.ccache CCACHE_COMPRESS=1
+50
View File
@@ -0,0 +1,50 @@
# SIMDe Development Container
The basic idea is to set up a Debian system with lots of different
compilers and emulators for different architectures and configure
multiple builds in different directories.
Note that there are also several docker files in the test/
subdirectory. These can be used to test other operating systems,
especially older compilers which aren't supported on Debian testing
anymore.
To use this, just run the `simde-dev.sh` script and go grab ~a cup of
coffee~ lunch (it will take a while, and download a *lot* of packages).
Once the container is ready it will drop you into a bash shell in
`/opt/simde`; this is the build directory.
This will bind the parent directory (the root of the SIMDe checkout)
to `/usr/local/src/simde`; any changes to either will propagate to the
other, meaning you can continue using your normal development
environment and just re-run ninja in the container to (re)build SIMDe.
If you would like build directories to persist across multiple
invocations of `simde-dev.sh`, you can set the `PERSISTENT_BUILD_DIR`
to a directory on the host filesystem and it will be mapped to
`/opt/simde` in the container.
Once your container is finished building, just `simde-reset-build.sh`
and it should be populated with a bunch of subdirectories which you can
build with ninja. For example, `ninja -C gcc-10` will build SIMDe
using GCC 10. If you want to run the tests, `ninja -C gcc-10 test`
(or `cd gcc-10 && ninja test`).
You can also run `simde-reset-build.sh build-name` to (re)generate a
single build.
# Debian Version
By default, we use Debian testing. If you would like to use Debian
unstable instead, just run `simde-dev.sh unstable`.
## Altering or Adding Builds
Each build has an associated Meson cross file (see the `cross-files/`
subdirectory). We kind of abuse these by adding flags like `-Wextra`,
`-Werror`, `-march=...`, *etc.*, which aren't really about
cross-compilation. However, you can add or remove C/C++ flags in the
cross files, or if you want to *add* flags you can just put them in
the `CFLAGS`/`CXXFLAGS` environment variables and reconfigure the
build. You can also create a new cross file with your preferred
configuration.
+65
View File
@@ -0,0 +1,65 @@
#!/bin/sh
case "${1}" in
"alpha")
echo "alpha-linux-gnu"
;;
"amd64")
echo "x86_64-linux-gnu"
;;
"arm64")
echo "aarch64-linux-gnu"
;;
"armhf")
echo "arm-linux-gnueabihf"
;;
"armel")
echo "arm-linux-gnueabi"
;;
"hppa")
echo "hppa-linux-gnu"
;;
"hppa64")
echo "hppa64-linux-gnu"
;;
"i386")
echo "i686-linux-gnu"
;;
"m68k")
echo "m68k-linux-gnu"
;;
"mips64el")
echo "mips64el-linux-gnuabi64"
;;
"mipsel")
echo "mips64-linux-gnuabi64"
;;
"ppc")
echo "powerpc-linux-gnu"
;;
"ppc64")
echo "powerpc64-linux-gnu"
;;
"ppc64el")
echo "powerpc64le-linux-gnu"
;;
"riscv64")
echo "riscv64-linux-gnu"
;;
"s390x")
echo "s390x-linux-gnu"
;;
"sh4")
echo "sh4-linux-gnu"
;;
"sparc64")
echo "sparc64-linux-gnu"
;;
"x32")
echo "x86_64-linux-gnux32"
;;
*)
echo "Unknown architecture: ${1}" >&2
exit 1
;;
esac
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
if [ $# = 0 ]; then
for crossfile in /usr/local/share/meson/cross/simde/*.cross; do
basename "$crossfile" .cross
done | xargs "$0"
else
while [ $# -gt 0 ]; do
ninja -C /opt/simde-build/"$1" test || exit 1
shift
done
fi
+30
View File
@@ -0,0 +1,30 @@
#!/bin/bash
function configure {
if [ -e "/opt/simde/${1}" ]; then
rm -rf "/opt/simde/${1}";
fi
if [ -e "/usr/local/share/meson/cross/simde/${1}.cross" ]; then
meson --cross-file="/usr/local/share/meson/cross/simde/${1}.cross" "/opt/simde/${1}" "/usr/local/src/simde"
fi
}
if [ $# -gt 0 ]; then
while [ $# -ge 1 ]; do
configure "$1"
shift
done
else
for cross in /usr/local/share/meson/cross/simde/*.cross; do
target="$(basename "$cross" .cross)"
if [ ! -e "/opt/simde/${target}" ]; then
configure "$(basename "${target}" .cross)"
fi
done
for target in "aarch64-clang-10" "emscripten"; do
if [ ! -e "/opt/simde/${target}" ]; then
configure "$(basename "${target}" .cross)"
fi
done
fi
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-10'
cpp = 'clang++-10'
ar = 'llvm-ar-10'
strip = 'llvm-strip-10'
objcopy = 'llvm-objcopy-10'
ld = 'llvm-ld-10'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-11'
cpp = 'clang++-11'
ar = 'llvm-ar-11'
strip = 'llvm-strip-11'
objcopy = 'llvm-objcopy-11'
ld = 'llvm-ld-11'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-12'
cpp = 'clang++-12'
ar = 'llvm-ar-12'
strip = 'llvm-strip-12'
objcopy = 'llvm-objcopy-12'
ld = 'llvm-ld-12'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-13'
cpp = 'clang++-13'
ar = 'llvm-ar-13'
strip = 'llvm-strip-13'
objcopy = 'llvm-objcopy-13'
ld = 'llvm-ld-13'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-14'
cpp = 'clang++-14'
ar = 'llvm-ar-14'
strip = 'llvm-strip-14'
objcopy = 'llvm-objcopy-14'
ld = 'llvm-ld-14'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-15'
cpp = 'clang++-15'
ar = 'llvm-ar-15'
strip = 'llvm-strip-15'
objcopy = 'llvm-objcopy-15'
ld = 'llvm-ld-15'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+sve', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+18
View File
@@ -0,0 +1,18 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-10'
cpp = 'aarch64-linux-gnu-g++-10'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a+sve', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+sve', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+18
View File
@@ -0,0 +1,18 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-11'
cpp = 'aarch64-linux-gnu-g++-11'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a+sve', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+sve', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+18
View File
@@ -0,0 +1,18 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-12'
cpp = 'aarch64-linux-gnu-g++-12'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a+sve', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+sve', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-10'
cpp = 'clang++-10'
ar = 'llvm-ar-10'
strip = 'llvm-strip-10'
objcopy = 'llvm-objcopy-10'
ld = 'llvm-ld-10'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-11'
cpp = 'clang++-11'
ar = 'llvm-ar-11'
strip = 'llvm-strip-11'
objcopy = 'llvm-objcopy-11'
ld = 'llvm-ld-11'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+sha3+dotprod+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+sha3+dotprod+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-12'
cpp = 'clang++-12'
ar = 'llvm-ar-12'
strip = 'llvm-strip-12'
objcopy = 'llvm-objcopy-12'
ld = 'llvm-ld-12'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-13'
cpp = 'clang++-13'
ar = 'llvm-ar-13'
strip = 'llvm-strip-13'
objcopy = 'llvm-objcopy-13'
ld = 'llvm-ld-13'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
c_link_args = ['--target=aarch64-linux-gnu', '-Wl,-z,relro', '-Wl,-z,now']
cpp_link_args = ['--target=aarch64-linux-gnu', '-Wl,-z,relro', '-Wl,-z,now']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-13'
cpp = 'clang++-13'
ar = 'llvm-ar-13'
strip = 'llvm-strip-13'
objcopy = 'llvm-objcopy-13'
ld = 'llvm-ld-13'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-14'
cpp = 'clang++-14'
ar = 'llvm-ar-14'
strip = 'llvm-strip-14'
objcopy = 'llvm-objcopy-14'
ld = 'llvm-ld-14'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
c_link_args = ['--target=aarch64-linux-gnu', '-Wl,-z,relro', '-Wl,-z,now']
cpp_link_args = ['--target=aarch64-linux-gnu', '-Wl,-z,relro', '-Wl,-z,now']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-14'
cpp = 'clang++-14'
ar = 'llvm-ar-14'
strip = 'llvm-strip-14'
objcopy = 'llvm-objcopy-14'
ld = 'llvm-ld-14'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = ['ccache', 'clang-15']
cpp = ['ccache', 'clang++-15']
ar = 'llvm-ar-15'
strip = 'llvm-strip-15'
objcopy = 'llvm-objcopy-15'
ld = 'llvm-ld-15'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8.2-a+simd+crypto+crc+bf16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8.2-a+simd+crypto+crc+bf16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-15'
cpp = 'clang++-15'
ar = 'llvm-ar-15'
strip = 'llvm-strip-15'
objcopy = 'llvm-objcopy-15'
ld = 'llvm-ld-15'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
c_link_args = ['--target=aarch64-linux-gnu', '-Wl,-z,relro', '-Wl,-z,now']
cpp_link_args = ['--target=aarch64-linux-gnu', '-Wl,-z,relro', '-Wl,-z,now']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-15'
cpp = 'clang++-15'
ar = 'llvm-ar-15'
strip = 'llvm-strip-15'
objcopy = 'llvm-objcopy-15'
ld = 'llvm-ld-15'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = ['ccache', 'clang-16']
cpp = ['ccache', 'clang++-16']
ar = 'llvm-ar-16'
strip = 'llvm-strip-16'
objcopy = 'llvm-objcopy-16'
ld = 'llvm-ld-16'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc+bf16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+crypto+crc+bf16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = ['ccache', 'clang-17']
cpp = ['ccache', 'clang++-17']
ar = 'llvm-ar-17'
strip = 'llvm-strip-17'
objcopy = 'llvm-objcopy-17'
ld = 'llvm-ld-17'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv9.4-a+crypto+sha3+sm4', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv9.4-a+crypto+sha3+sm4', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = ['ccache', 'clang-18']
cpp = ['ccache', 'clang++-18']
ar = 'llvm-ar-18'
strip = 'llvm-strip-18'
objcopy = 'llvm-objcopy-18'
ld = 'llvm-ld-18'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = ['ccache', 'clang-18']
cpp = ['ccache', 'clang++-18']
ar = 'llvm-ar-18'
strip = 'llvm-strip-18'
objcopy = 'llvm-objcopy-18'
ld = 'llvm-ld-18'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-19']
cpp = ['ccache', 'clang++-19']
ar = 'llvm-ar-19'
strip = 'llvm-strip-19'
objcopy = 'llvm-objcopy-19'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[built-in options]
c_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-19']
cpp = ['ccache', 'clang++-19']
ar = 'llvm-ar-19'
strip = 'llvm-strip-19'
objcopy = 'llvm-objcopy-19'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[built-in options]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-20']
cpp = ['ccache', 'clang++-20']
ar = 'llvm-ar-20'
strip = 'llvm-strip-20'
objcopy = 'llvm-objcopy-20'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[built-in options]
c_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4+sve2-bitperm', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4+sve2-bitperm', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-20']
cpp = ['ccache', 'clang++-20']
ar = 'llvm-ar-20'
strip = 'llvm-strip-20'
objcopy = 'llvm-objcopy-20'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[built-in options]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-21']
cpp = ['ccache', 'clang++-21']
ar = 'llvm-ar-21'
strip = 'llvm-strip-21'
objcopy = 'llvm-objcopy-21'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[built-in options]
c_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4+sve2-bitperm', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4+sve2-bitperm', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-21']
cpp = ['ccache', 'clang++-21']
ar = 'llvm-ar-21'
strip = 'llvm-strip-21'
objcopy = 'llvm-objcopy-21'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[built-in options]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-22']
cpp = ['ccache', 'clang++-22']
ar = 'llvm-ar-22'
strip = 'llvm-strip-22'
objcopy = 'llvm-objcopy-22'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[built-in options]
c_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4+sve2-bitperm', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv9.3-a+crypto+sha3+sm4+sve2-bitperm', '-Wextra', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-22']
cpp = ['ccache', 'clang++-22']
ar = 'llvm-ar-22'
strip = 'llvm-strip-22'
objcopy = 'llvm-objcopy-22'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[built-in options]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-6.0'
cpp = 'clang++-6.0'
ar = 'llvm-ar-6.0'
strip = 'llvm-strip-6.0'
objcopy = 'llvm-objcopy-6.0'
ld = 'llvm-ld-6.0'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unused-parameter']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd=fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unused-parameter']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-7'
cpp = 'clang++-7'
ar = 'llvm-ar-7'
strip = 'llvm-strip-7'
objcopy = 'llvm-objcopy-7'
ld = 'llvm-ld-7'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unused-parameter']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unused-parameter']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-8'
cpp = 'clang++-8'
ar = 'llvm-ar-8'
strip = 'llvm-strip-8'
objcopy = 'llvm-objcopy-8'
ld = 'llvm-ld-8'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unused-parameter']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unused-parameter']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+20
View File
@@ -0,0 +1,20 @@
[binaries]
c = 'clang-9'
cpp = 'clang++-9'
ar = 'llvm-ar-9'
strip = 'llvm-strip-9'
objcopy = 'llvm-objcopy-9'
ld = 'llvm-ld-9'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=aarch64-linux-gnu', '-march=armv8-a+simd+fp16', '-isystem=/usr/aarch64-linux-gnu/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=aarch64-linux-gnu']
cpp_link_args = ['--target=aarch64-linux-gnu']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+18
View File
@@ -0,0 +1,18 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-10'
cpp = 'aarch64-linux-gnu-g++-10'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a+simd+crypto+crc', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+simd+crypto+crc', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,18 @@
[binaries]
c = ['ccache', 'aarch64-linux-gnu-gcc-11']
cpp = ['ccache', 'aarch64-linux-gnu-g++-11']
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8.5-a+crypto+sha3+sm4', '-Wextra', '-Werror']
cpp_args = ['-march=armv8.5-a+crypto+sha3+sm4', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-11'
cpp = 'aarch64-linux-gnu-g++-11'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
cpp_args = ['-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
c_link_args = ['-Wl,-z,relro', '-Wl,-z,now']
cpp_link_args = ['-Wl,-z,relro', '-Wl,-z,now']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+18
View File
@@ -0,0 +1,18 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-11'
cpp = 'aarch64-linux-gnu-g++-11'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a+simd+crypto+crc', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+simd+crypto+crc', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,18 @@
[binaries]
c = ['ccache', 'aarch64-linux-gnu-gcc-12']
cpp = ['ccache', 'aarch64-linux-gnu-g++-12']
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv9-a+crypto+sha3+sm4+bf16+i8mm', '-Wextra', '-Werror']
cpp_args = ['-march=armv9-a+crypto+sha3+sm4+bf16+i8mm', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-12'
cpp = 'aarch64-linux-gnu-g++-12'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
cpp_args = ['-Wextra', '-Werror', '-g', '-O2', '-fstack-protector-strong', '-Wformat', '-Werror=format-security', '-Wdate-time', '-D_FORTIFY_SOURCE=2']
c_link_args = ['-Wl,-z,relro', '-Wl,-z,now']
cpp_link_args = ['-Wl,-z,relro', '-Wl,-z,now']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+18
View File
@@ -0,0 +1,18 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-12'
cpp = 'aarch64-linux-gnu-g++-12'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a+simd+crypto+crc', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+simd+crypto+crc', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,18 @@
[binaries]
c = ['ccache', 'aarch64-linux-gnu-gcc-13']
cpp = ['ccache', 'aarch64-linux-gnu-g++-13']
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv9.3-a+crypto+sha3+sm4', '-Wextra', '-Werror']
cpp_args = ['-march=armv9.3-a+crypto+sha3+sm4', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,18 @@
[binaries]
c = ['ccache', 'aarch64-linux-gnu-gcc-14']
cpp = ['ccache', 'aarch64-linux-gnu-g++-14']
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv9.3-a+crc+sve2-aes+crypto+sha3+sm4+sve2-sha3+sve2-bitperm', '-Wextra', '-Werror']
cpp_args = ['-march=armv9.3-a+crc+sve2-aes+crypto+sha3+sm4+sve2-sha3+sve2-bitperm', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,18 @@
[binaries]
c = ['ccache', 'aarch64-linux-gnu-gcc-14']
cpp = ['ccache', 'aarch64-linux-gnu-g++-14']
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,18 @@
[binaries]
c = ['ccache', 'aarch64-linux-gnu-gcc-15']
cpp = ['ccache', 'aarch64-linux-gnu-g++-15']
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv9.3-a+crc+sve2-aes+crypto+sha3+sm4+sve2-sha3+sve2-bitperm', '-Wextra', '-Werror']
cpp_args = ['-march=armv9.3-a+crc+sve2-aes+crypto+sha3+sm4+sve2-sha3+sve2-bitperm', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,18 @@
[binaries]
c = ['ccache', 'aarch64-linux-gnu-gcc-15']
cpp = ['ccache', 'aarch64-linux-gnu-g++-15']
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,18 @@
[binaries]
c = ['ccache', 'aarch64-linux-gnu-gcc-16']
cpp = ['ccache', 'aarch64-linux-gnu-g++-16']
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv9.3-a+crc+sve2-aes+crypto+sha3+sm4+sve2-sha3+sve2-bitperm', '-Wextra', '-Werror']
cpp_args = ['-march=armv9.3-a+crc+sve2-aes+crypto+sha3+sm4+sve2-sha3+sve2-bitperm', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,18 @@
[binaries]
c = ['ccache', 'aarch64-linux-gnu-gcc-16']
cpp = ['ccache', 'aarch64-linux-gnu-g++-16']
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+18
View File
@@ -0,0 +1,18 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-7'
cpp = 'aarch64-linux-gnu-g++-7'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a+simd', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+simd', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+18
View File
@@ -0,0 +1,18 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-8'
cpp = 'aarch64-linux-gnu-g++-8'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a+simd', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+simd', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
+18
View File
@@ -0,0 +1,18 @@
[binaries]
c = 'aarch64-linux-gnu-gcc-9'
cpp = 'aarch64-linux-gnu-g++-9'
ar = 'aarch64-linux-gnu-ar'
strip = 'aarch64-linux-gnu-strip'
objcopy = 'aarch64-linux-gnu-objcopy'
ld = 'aarch64-linux-gnu-ld'
exe_wrapper = ['qemu-aarch64-static', '-L', '/usr/aarch64-linux-gnu']
[properties]
c_args = ['-march=armv8-a+simd', '-Wextra', '-Werror']
cpp_args = ['-march=armv8-a+simd', '-Wextra', '-Werror']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = ['ccache', 'clang-15']
cpp = ['ccache', 'clang++-15']
ar = 'llvm-ar-15'
strip = 'llvm-strip-15'
objcopy = 'llvm-objcopy-15'
ld = 'llvm-ld-15'
exe_wrapper = ['qemu-arm-static', '-L', '/usr/arm-linux-gnueabi']
[properties]
c_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
cpp_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror']
c_link_args = ['--target=arm-linux-gnueabi']
cpp_link_args = ['--target=arm-linux-gnueabi']
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'generic'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = ['ccache', 'clang-16']
cpp = ['ccache', 'clang++-16']
ar = 'llvm-ar-16'
strip = 'llvm-strip-16'
objcopy = 'llvm-objcopy-16'
ld = 'llvm-ld-16'
exe_wrapper = ['qemu-arm-static', '-L', '/usr/arm-linux-gnueabi']
[properties]
c_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage']
cpp_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage']
c_link_args = ['--target=arm-linux-gnueabi']
cpp_link_args = ['--target=arm-linux-gnueabi']
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'generic'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = ['ccache', 'clang-17']
cpp = ['ccache', 'clang++-17']
ar = 'llvm-ar-17'
strip = 'llvm-strip-17'
objcopy = 'llvm-objcopy-17'
ld = 'llvm-ld-17'
exe_wrapper = ['qemu-arm-static', '-L', '/usr/arm-linux-gnueabi']
[properties]
c_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage']
cpp_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage']
c_link_args = ['--target=arm-linux-gnueabi']
cpp_link_args = ['--target=arm-linux-gnueabi']
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'generic'
endian = 'little'
@@ -0,0 +1,20 @@
[binaries]
c = ['ccache', 'clang-18']
cpp = ['ccache', 'clang++-18']
ar = 'llvm-ar-18'
strip = 'llvm-strip-18'
objcopy = 'llvm-objcopy-18'
ld = 'llvm-ld-18'
exe_wrapper = ['qemu-arm-static', '-L', '/usr/arm-linux-gnueabi']
[properties]
c_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=arm-linux-gnueabi']
cpp_link_args = ['--target=arm-linux-gnueabi']
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'generic'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-19']
cpp = ['ccache', 'clang++-19']
ar = 'llvm-ar-19'
strip = 'llvm-strip-19'
objcopy = 'llvm-objcopy-19'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-arm-static', '-L', '/usr/arm-linux-gnueabi']
[built-in options]
c_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=arm-linux-gnueabi']
cpp_link_args = ['--target=arm-linux-gnueabi']
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'generic'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-20']
cpp = ['ccache', 'clang++-20']
ar = 'llvm-ar-20'
strip = 'llvm-strip-20'
objcopy = 'llvm-objcopy-20'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-arm-static', '-L', '/usr/arm-linux-gnueabi']
[built-in options]
c_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
cpp_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default']
c_link_args = ['--target=arm-linux-gnueabi']
cpp_link_args = ['--target=arm-linux-gnueabi']
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'generic'
endian = 'little'
@@ -0,0 +1,21 @@
[binaries]
c = ['ccache', 'clang-21']
cpp = ['ccache', 'clang++-21']
ar = 'llvm-ar-21'
strip = 'llvm-strip-21'
objcopy = 'llvm-objcopy-21'
c_ld = 'lld'
cpp_ld = 'lld'
exe_wrapper = ['qemu-arm-static', '-L', '/usr/arm-linux-gnueabi']
[built-in options]
c_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
cpp_args = ['--target=arm-linux-gnueabi', '-isystem=/usr/arm-linux-gnueabi/include', '-Weverything', '-fno-lax-vector-conversions', '-Werror', '-Wno-unsafe-buffer-usage', '-Wno-switch-default', '-Wno-c++-keyword']
c_link_args = ['--target=arm-linux-gnueabi']
cpp_link_args = ['--target=arm-linux-gnueabi']
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'generic'
endian = 'little'

Some files were not shown because too many files have changed in this diff Show More