{"id":17180653,"url":"https://github.com/jbush001/nyuzitoolchain","last_synced_at":"2025-04-13T16:23:43.586Z","repository":{"id":8042309,"uuid":"9452617","full_name":"jbush001/NyuziToolchain","owner":"jbush001","description":"Port of LLVM/Clang C compiler to Nyuzi parallel processor architecture ","archived":false,"fork":false,"pushed_at":"2022-12-04T05:49:31.000Z","size":280781,"stargazers_count":63,"open_issues_count":32,"forks_count":28,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-27T07:21:19.516Z","etag":null,"topics":["clang","compiler","gpgpu","llvm","toolchain"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbush001.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/Contributing.rst","funding":null,"license":"LICENSE.TXT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-04-15T16:05:17.000Z","updated_at":"2025-01-29T08:12:13.000Z","dependencies_parsed_at":"2023-01-11T18:46:12.311Z","dependency_job_id":null,"html_url":"https://github.com/jbush001/NyuziToolchain","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbush001%2FNyuziToolchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbush001%2FNyuziToolchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbush001%2FNyuziToolchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbush001%2FNyuziToolchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbush001","download_url":"https://codeload.github.com/jbush001/NyuziToolchain/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248742204,"owners_count":21154453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clang","compiler","gpgpu","llvm","toolchain"],"created_at":"2024-10-15T00:30:08.357Z","updated_at":"2025-04-13T16:23:38.576Z","avatar_url":"https://github.com/jbush001.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is a toolchain for a parallel processor architecture called\n[Nyuzi](https://github.com/jbush001/NyuziProcessor), based on\n[LLVM](http://llvm.org/).  It includes a C/C++ compiler (clang), assembler,\nlinker and debugger (lldb).\n\nWhile this project includes a C/C++ compiler, the LLVM backend can support\nany language.\n\nQuestions or issues can be directed to the [mailing list](https://groups.google.com/forum/#!forum/nyuzi-processor-dev) or...\n[![Chat at https://gitter.im/jbush001/NyuziProcessor](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jbush001/NyuziProcessor?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n\n# Building\n\nThe NyuziProcessor repository README has instructions for building this as\nwell. These instructions are only necessary if you want to build this\nseparately.\n\n## Required Software\n\nThe following sections describe how to install these packages.\n\n- gcc 4.8+ or Apple clang 4.2+\n- cmake 3.4.3+\n- python 2.7\n- libxml (including headers)\n- zlib (including headers)\n- bison 2.7+\n- flex 2.5+\n- swig 3.0.11+ (http://www.swig.org/) with python wrappers\n- libedit (http://thrysoee.dk/editline/)\n- ncurses\n- ninja 1.3+\n\n## Building on Linux\n\nYou can install required packages using the built-in package manager (apt-get,\nyum, etc). As LLVM needs newer versions of many packages, you should be on\na recent version of your Linux distribution. Instructions are below are for Ubuntu\n(which must be on at least version 16). You may need to change the package names\nfor other distributions:\n\n    sudo apt-get install libxml2-dev cmake gcc g++ python bison flex \\\n        zlib1g-dev swig python-dev libedit-dev libncurses5-dev ninja-build\n\n    git clone git@github.com:jbush001/NyuziToolchain.git\n    cd NyuziToolchain\n    mkdir build\n    cd build\n    cmake -G Ninja ..\n    ninja\n    sudo ninja install\n\n## Building on MacOS\n\nOn Mavericks and later, you can install the host command line compiler like this:\n\n    xcode-select --install\n\nOn earlier versions, you can download XCode from the app store. You will also\nneed to install a package manager like [Homebrew](https://brew.sh/) to\nget the remaining dependencies. Open a new terminal to do the build after\ninstalling Brew, because it installs alternate versions of some utilities\nand updates the PATH. Once you have done this:\n\n    brew install cmake bison swig sdl2 emacs ninja\n\n    git clone https://github.com/jbush001/NyuziToolchain.git\n    cd NyuziToolchain\n    mkdir build\n    cd build\n    cmake -G Ninja ..\n    ninja\n    sudo ninja install\n\n**Upgrading 'flex' using the package manager may cause build errors. I\nwould recommend using the system supplied version.**\n\n## Building on Windows\n\nI have not tested this natively on Windows. Many of the libraries are already cross\nplatform, so it should theoretically be possible.\n\n## Other Notes\n\n* The toolchain is installed into /usr/local/llvm-nyuzi/\n* The triple for this target is 'nyuzi-'.\n\n## Tests\n\nChange PATH environment variable to include the binary directory (build/bin). This is only required\nfor llvm-lit based tests. Run the tests as follows (assuming you are at the top of the project\ndirectory):\n\n```\nexport PATH=\u003cBUILDDIR\u003e/build/bin:$PATH\nllvm-lit test\nllvm-lit tools/clang/test/CodeGen/\nllvm-lit tools/lld/test/ELF/nyuzi-*\n```\n\nAll tests should pass.\n\n* The command above for the LLD tests uses a wildcard to only run tests for the Nyuzi\ntarget. This is because many tests are architecture specific but don't specify a\nREQUIRES line in the file. They are assuming LLVM is built for all architectures,\nwhere I have modified the build files in this project to only build for Nyuzi.*\n\nIt is also useful to run the\n[random test generator](https://github.com/jbush001/NyuziToolchain/wiki/Validating-LLVM-with-random-programs)\nto validate the backend.\n\nThere is a set of whole-program tests in the NyuziProcessor repository\n[test/whole-program](https://github.com/jbush001/NyuziProcessor/tree/master/tests/whole-program)\nEach test case is compiled and then run in the instruction set simulator, which\nchecks the output for validity. This is similar to the test-suite project in LLVM.\nInstructions are in that directory.\n\nIn the same repository, there is also a test to validates the LLDB debugger by\nrunning a real program in the emulator:\n[tests/tools/lldb](https://github.com/jbush001/NyuziProcessor/tree/master/tests/tools/lldb)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbush001%2Fnyuzitoolchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbush001%2Fnyuzitoolchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbush001%2Fnyuzitoolchain/lists"}