| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
|
|
|
|
| |
* Added llvm demangler code
* Added clang-cl compiler class
|
| |
|
| |
|
|
|
|
| |
* Add basic support for Hook programming language
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add RGA compiler support to HLSL
AMD's Radeon GPU Analyzer (RGA) tool is an indispensible tool for
graphics programmers to inspect the instructions that will be
compiled by the driver for a given shader and GPU. The integration of
this compiler into CE is slightly unconventional for reasons to be
explained here:
When trying to compile HLSL directly to ISA, RGA requires a full
pipeline state description (specified for graphics pipelines using a
gpso file), and a root signature, since changes to either affect how
resources and data within the shader are accessed or written to.
Specifying both is difficult to the extent that it would add significant
usage friction to the tool. An informal survey among other senior
graphics programming practitioners suggested unanimous agreement to
infer both pipeline state and root signature where possible, with the
expectation that if more accurate ISA code was needed, RGA could be used
directly offline.
Fortunately, RGA supplies an alternative workflow, wherein SPIR-V code
can be compiled directly to the approximate ISA, bypassing both the
pipeline and root signature requirement. To use RGA, the following steps
are performed:
1. Use the default DXC compiler to emit SPIR-V as text to a temporary
file in the selected temp folder.
2. Compile the ISA using RGA, consuming the output of step 1
3. Rename the resulting file to the output file CE expects
In addition, a non-standard argument --asic is added to the user
options. This argument is filtered for DXC, but for RGA is forwarded as
the selected ASIC to emit ISA for.
These steps are performed by a single `rga.js` script, which is invoked
as an executable. This chaining could have been added within CE library
code directly, but being an atypical flow, felt more appropriate as a
separate script (which has the benefit of faster iteration, due to being
loaded on each compilation request). The paths to DXC and RGA are
supplied as arguments through a simple CLI interface.
NOTE: This commit also adds `-Zi` and `-Qembed_debug` flags to both DXC
and RGA, which provides line association data for DXIL.
Signed-off-by: Jeremy Ong <jeremycong@gmail.com>
* Incorporate PR feedback (see commit body)
This commit introduces several changes:
- HLSL compiler is now Typescript
- A new RGACompiler Typescript class is used to invoke RGA
- The multi-phase compilation that was previously done using a Node
script now leverages the existing sandboxed execution facilities
- The DXC compiler is configurable as a property on the RGA
configuration, and an example is provided in hlsl.defaults.properties
As there are several steps needed to compile HLSL to AMD ISA as before,
as steps are done asynchronously so the runtime can continue to service
other requests during compilation (either DXC or RGA) or file I/O.
Signed-off-by: Jeremy Ong <jeremycong@gmail.com>
Signed-off-by: Jeremy Ong <jeremycong@gmail.com>
Co-authored-by: Rubén Rincón Blanco <ruben@rinconblanco.es>
|
|
|
|
|
|
|
|
|
| |
- Renames orphancompiler.py script to propscheck.py, the name fits better
- Fixes Go props to make them easier to maintain
- Alphabetically sorts some listings in the code
- Adds tests to the props checker script (No idea how to integrate those so it's manual for now)
- Adds 2 missing limit cases for Motd filtering
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add preliminary HLSL support
- Adds a new language mode to monaco, extending the base C++ layer with
HLSL intrinsics and types
- Adds a new `HLSLCompiler` class
- Adds a sample pixel shader
The compiler used to test this locally is the [DirectX Shader
Compiler](https://github.com/microsoft/DirectXShaderCompiler) (aka DXC),
which needs to also be added to the
[infra](https://github.com/compiler-explorer/infra) project.
Some guidance is needed before this PR can be merged:
1. While DXC can run on Linux, there are no binaries available so this
compiler must be built. Are there examples that show how we should do
this as part of the infra CI/CD? Should we build and host it
separately instead? The build process for DXC on Linux is relatively
straightforward and documented
[here](https://github.com/microsoft/DirectXShaderCompiler/blob/main/docs/DxcOnUnix.rst).
2. The example code doesn't compile unless the user also supplies
additional compiler flags `-T ps_6_6 -E PSMain`. Is there a way to
load these flags conditionally only if the sample is loaded?
3. Technically, DXC emits DXIL IR (based on LLVM IR) and I am wondering
if it's possible to extend an existing LLVM backend. In addition, the
`-spirv` compiler flag could be emitted to target the SPIR-V backend
instead, so I'm curious if there is a good way to express the target
backend.
Signed-off-by: Jeremy Ong <jeremycong@gmail.com>
* Fix copyright dates, remove unnecessary strict usage, and remove
placeholder logo
Signed-off-by: Jeremy Ong <jeremycong@gmail.com>
* Rebase and remove unneeded HLSL logo
Signed-off-by: Jeremy Ong <jeremycong@gmail.com>
* Fix lint errors
Signed-off-by: Jeremy Ong <jeremycong@gmail.com>
* Simply HLSL sample and remove default config
Signed-off-by: Jeremy Ong <jeremycong@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add basic CIRCT compiler support.
This adds basic support for CIRCT as requested in #3825. The addition
is based on the similar additions for MLIR in #3733 and #3770.
* Update path and rename compiler in circt.amazon.properties.
* Update circt.amazon.properties
Co-authored-by: Patrick Quist <partouf@gmail.com>
|
|
|
| |
Add support for the Carbon language prototype.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* The Grand Reformat
- everything made prettier...literally
- some tweaks to include a few more files, including documentation
- minor changes to format style
- some tiny `// prettier-ignore` changes to keep a few things the way we like them
- a couple of super minor tweaks to embedded document types to ensure they format correctly
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* feat(compilers): Solidity support MVP
* don't concat userOptions in optionsForFilter
* fixes after review
* Update etc/config/solidity.defaults.properties
Co-authored-by: Rubén Rincón Blanco <ruben@rinconblanco.es>
Co-authored-by: Rubén Rincón Blanco <ruben@rinconblanco.es>
|
| |
| |
| |
| |
| |
| |
| | |
* progress
* added some config
Co-authored-by: Alex D <duzhar@gmail.com>
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
|
| |
* add support for erlang to beam bytecode
* changed call by 'this' to overridden functions
* Update base-compiler.js
Co-authored-by: Patrick Quist <partouf@gmail.com>
|
|
|
|
|
|
|
|
|
| |
(#2940)
* Add support for generating SPIR-V assembly from OpenCL C and C++ for OpenCL
* Update cpp_for_opencl.amazon.properties
* Update openclc.amazon.properties
Co-authored-by: Patrick Quist <partouf@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A new compiler type 'win32-vc6' has been added, which uses a slightly
modified version of asm-parser-vc to handle assembly output differences
from current Visual Studio output.
In particular, MSVC6 does not output a comment line containing the
function's compile flags prior to the function body. The win32-vc parser
uses this to identify the start of a function and initialize
currentFunction. Instead, we use the regex that identifies a function
name to do this. Otherwise, a TypeError occurs trying to set
currentFunction.name when currentFunction is null.
In addition, MSVC6 only outputs a file comment once (presumably, until a
function from a different file is output). So instead of initializing
currentFunction.file to undefined, it is set to currentFile instead.
This should get set on the first function found in the file, but if not
it is initialized to undefined, so the behavior there would be the same.
Finally, the _DATA and _TLS segments are handled as well as some
additional miscellaneous directives.
|
| |
|
|
|
|
|
| |
* Add support for circle-lang (closes #1845)
* Add circle-128 version.
* Support keywords starting with @ (thanks Matt!)
|
|
|
|
|
|
| |
Add support for cproc C11 compiler.
cproc is a lightweight compiler using the QBE backend.
Fixes #2755
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Added support for HIP compilation for AMD GPUs.
At the moment it only supports stand-alone compilation w/o ROCm SDK.
* Enable barebones HIP compilation.
Clang by itself is good enough to compile simple kernels that do not need ROCm
SDK headers and bitcode libraries.
Closes #2760
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GCC backend for rustc is still in a very early state.
It is in the process of being merged in main rustc source:
https://github.com/rust-lang/compiler-team/issues/442
Currently reusing main rust compiler class and simply remove -Cllvm= argument if
any (only for intel asm syntax).
Disabling binary until the result is more friendly (currently binary are too
big).
refs #2683
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add Crystal support
* Fix copyright
* Add ASM parser for Crystal
* Add supportsLibraryCodeFilter
* Update crystal-mode.js
* use baseName
* Force `square` call
* Update default snippet
Co-authored-by: Patrick Quist <partouf@gmail.com>
|
|
|
|
|
|
|
| |
* Add initial scala support
* Fix scala 3 compiler flags
* Use semver instead
|
|
|
|
|
|
|
|
| |
* Added support for SASS disassembly for clang as a CUDA compiler.
Clang `--cuda-device-only -c` produces the same kind of CUBIN output as `nvcc
-cubin` and can use nvdisasm to disassemble it.
* Enable SASS disassembly for clang as a CUDA compiler.
|
|
|
|
|
|
| |
As requested by #2707
It still has the same problems found in #2434,
which that will get fixed in Zig 0.8.1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add Kotlin/JVM support
* Update CONTRIBUTORS.md
* Use kotlinc-jvm instead of kotlinc
* Fix alphabetical ordering
* Filter kotlin compiler arguments
Extract user options filtering for java into a separate function to
handle filtering options with extra arguments.
Filter kotlin compiler options: -d, -jdk-home, -kotlin-home, -script, -progressive
* Filter -Xjavac user options
Filter any option that starts with '-Xjavac', as it could be used to pass unwanted options through kotlinc to javac.
* Fix year in copyright
Co-authored-by: Rubén Rincón Blanco <ruben@rinconblanco.es>
* Add kotlin.amazon.properties
* Add JAVA_HOME to kotlin default exec options
Query per-compiler property 'java_home' and set environment
* Add java_home to kotlin properties
Co-authored-by: Daniel Below <daniel.below@jetbrains.com>
Co-authored-by: Rubén Rincón Blanco <ruben@rinconblanco.es>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the needed base for new mrustc compiler.
https://github.com/thepowersgang/mrustc
mrustc is transpiling Rust to C and is mainly used for bootstraping rustc.
This change treats the C output as the final product (as is assembly for
GCC/clang). It is not easily possible to automatically plug this C to other C
compilers to get assembly or executable.
fixes #2643
|
| |
|
|
|
| |
Use default GCCCompiler values for GCCRS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add Zig cc as a C compiler
This commit is currently untested - I have no way to do it locally
(Even though installing Zig is awesomely simple!), so it might be
pretty broken
Releated issue: #2427
* Move cc to options field
This way fstat works
* attempt at fixing zigcc
* force zig > 0.6 to compile to binary as workaround
Co-authored-by: partouf <partouf@gmail.com>
|
| |
|
|
|
|
|
|
|
|
|
| |
* minimal tinycc support
* dont pass -g by default + don't use binary mode on -E
* work around for trunk
* add tinycc trunk
|