Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,10 @@ if(BUILD_TESTING AND NOT DISCO_DOS_BUILD)
target_link_libraries(disco_gsu_checked_proof_tests PRIVATE disco_compiler_core)
add_executable(disco_gsu_size_optimization_tests tests/GSUSizeOptimizationTests.cpp)
target_link_libraries(disco_gsu_size_optimization_tests PRIVATE disco_compiler_core)
add_executable(disco_ir_storage_optimizer_tests tests/IRStorageOptimizerTests.cpp)
target_link_libraries(disco_ir_storage_optimizer_tests PRIVATE disco_compiler_core)
add_executable(disco_gsu_seven_backend_tests tests/GSUSevenBackendTests.cpp)
target_link_libraries(disco_gsu_seven_backend_tests PRIVATE disco_compiler_core disco_assembler_core disco_linker_core)
add_executable(disco_gsu_compaction_tests tests/GSUCompactionTests.cpp)
target_link_libraries(disco_gsu_compaction_tests PRIVATE disco_compiler_core disco_assembler_core)

Expand Down Expand Up @@ -234,6 +238,11 @@ if(BUILD_TESTING AND NOT DISCO_DOS_BUILD)
set_tests_properties(${name} PROPERTIES LABELS "language;conformance")
elseif(case_name MATCHES "^graphics_")
set_tests_properties(${name} PROPERTIES LABELS "backend;gsu;graphics")
elseif(case_name MATCHES "^gem_chess_(raster|raster_private|paint)$")
# Each mode keeps its complete deterministic corpus. Allow Debug
# and sanitizer models to finish without sharing one suite timeout.
set_tests_properties(${name} PROPERTIES
LABELS "backend;gsu;graphics;gem-chess;optimization;correctness" TIMEOUT 1800)
endif()
if(case_name MATCHES "^gsu_(contributor_correctness|optimization|local_optimization|global_optimization|value_optimization|sccp|checked_proofs|size_optimization|selection_optimization|sbk)$" OR ARGV2 MATCHES "^[12]$")
set_property(TEST ${name} APPEND PROPERTY LABELS "gsu;optimization;correctness")
Expand All @@ -248,6 +257,11 @@ if(BUILD_TESTING AND NOT DISCO_DOS_BUILD)
-DTEST_DIR=${CMAKE_CURRENT_BINARY_DIR}/test-output/build_target_parity
-P ${CMAKE_CURRENT_SOURCE_DIR}/tests/BuildTargetParityTests.cmake)
set_tests_properties(build_target_parity_regressions PROPERTIES LABELS "build;unit")
add_test(NAME require_no_spills_cli COMMAND ${CMAKE_COMMAND}
-DDISCC=$<TARGET_FILE:discc>
-DTEST_DIR=${CMAKE_CURRENT_BINARY_DIR}/test-output/require-no-spills
-P ${CMAKE_CURRENT_SOURCE_DIR}/tests/run_no_spill_regression.cmake)
set_tests_properties(require_no_spills_cli PROPERTIES LABELS "gsu;optimization;cli;project" TIMEOUT 300)
add_test(NAME object_file_hardening COMMAND disco_object_tests)
add_test(NAME linker_hardening COMMAND disco_linker_hardening_tests)
add_test(NAME ir_verifier COMMAND disco_ir_verifier_tests)
Expand All @@ -264,6 +278,9 @@ if(BUILD_TESTING AND NOT DISCO_DOS_BUILD)
add_test(NAME gsu_checked_proofs COMMAND disco_gsu_checked_proof_tests)
set_tests_properties(gsu_checked_proofs PROPERTIES LABELS "gsu;optimization;unit")
add_test(NAME gsu_size_optimization_unit COMMAND disco_gsu_size_optimization_tests)
add_test(NAME ir_storage_optimizer_unit COMMAND disco_ir_storage_optimizer_tests)
add_test(NAME gsu_seven_backend_unit COMMAND disco_gsu_seven_backend_tests)
set_tests_properties(ir_storage_optimizer_unit gsu_seven_backend_unit PROPERTIES LABELS "gsu;ir;optimization;unit")
add_test(NAME gsu_compaction_unit COMMAND disco_gsu_compaction_tests)
set_tests_properties(gsu_compaction_unit PROPERTIES LABELS "gsu;ir;optimization;unit")
set_tests_properties(gsu_size_optimization_unit PROPERTIES LABELS "gsu;ir;optimization;unit")
Expand Down
7 changes: 7 additions & 0 deletions README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,13 @@ The [interactive OBJ demo](tests/graphics/interactive_shapes/README.md) adds a
cube and an icosahedral sphere: D-Pad rotation, A to toggle wireframe/filled faces,
and Select + Up/Down to resize, using OBJ/4bpp at approximately 21 MHz.

### Gem Chess Scene

The [gem-chess demo](examples/snes/gem_chess/README.md) renders an 8×8 board and
32 faceted pieces with an orbiting camera in a BG1 bitmap. See its
[Mesen preview](examples/snes/gem_chess/preview.png), build instructions and
measurement limits. It is a scene viewer, not a chess rules engine or a real-time game.

**The example SNES ROMs contain no Nintendo proprietary code, commercial game
assets, or Nintendo SDK components.** These are emulator demonstrations, not
physical-hardware validation.
Expand Down
2 changes: 1 addition & 1 deletion build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ No tools are installed automatically and no build directories are deleted.
'disco_target_foundation_tests', 'disco_gsu_execution_tests', 'disco_gsu_differential_tests', 'disco_gsu_mapping_tests',
'disco_assembly_export_tests', 'disco_language_contract_tests', 'disco_project_manifest_tests',
'disco_module_loader_tests', 'disco_linker_hardening_tests', 'disco_gsu_benchmarks',
'disco_ir_local_optimizer_tests', 'disco_ir_global_optimizer_tests', 'disco_ir_value_optimizer_tests', 'disco_gsu_cost_tests', 'disco_ir_conditional_optimizer_tests', 'disco_gsu_scheduler_tests', 'disco_gsu_checked_proof_tests', 'disco_gsu_size_optimization_tests', 'disco_gsu_compaction_tests')
'disco_ir_local_optimizer_tests', 'disco_ir_global_optimizer_tests', 'disco_ir_value_optimizer_tests', 'disco_gsu_cost_tests', 'disco_ir_conditional_optimizer_tests', 'disco_gsu_scheduler_tests', 'disco_gsu_checked_proof_tests', 'disco_gsu_size_optimization_tests', 'disco_gsu_compaction_tests', 'disco_ir_storage_optimizer_tests', 'disco_gsu_seven_backend_tests')
}
$flags = @('-std=c++23', '-Wall', '-Wextra', '-Wpedantic', '-I', "$PSScriptRoot/src")
switch ($Configuration) {
Expand Down
2 changes: 1 addition & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ else
disco_target_foundation_tests disco_gsu_execution_tests disco_gsu_differential_tests disco_gsu_mapping_tests
disco_assembly_export_tests disco_language_contract_tests disco_project_manifest_tests
disco_module_loader_tests disco_linker_hardening_tests disco_gsu_benchmarks
disco_ir_local_optimizer_tests disco_ir_global_optimizer_tests disco_ir_value_optimizer_tests disco_gsu_cost_tests disco_ir_conditional_optimizer_tests disco_gsu_scheduler_tests disco_gsu_checked_proof_tests disco_gsu_size_optimization_tests disco_gsu_compaction_tests)
disco_ir_local_optimizer_tests disco_ir_global_optimizer_tests disco_ir_value_optimizer_tests disco_gsu_cost_tests disco_ir_conditional_optimizer_tests disco_gsu_scheduler_tests disco_gsu_checked_proof_tests disco_gsu_size_optimization_tests disco_gsu_compaction_tests disco_ir_storage_optimizer_tests disco_gsu_seven_backend_tests)
fi
# Recursive lookup uses only Bash arrays, not Bash 4 associative arrays or eval.
resolve_sources() {
Expand Down
4 changes: 3 additions & 1 deletion cmake/build-sources.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ object src/ObjectFile.cpp src/AssemblyGenerator.cpp
project src/ManifestParser.cpp src/ProjectManifest.cpp src/ProjectPaths.cpp
linker src/LinkerDriver.cpp
frontend src/ModuleLoader.cpp src/ModuleInterface.cpp src/Lexer.cpp src/Token.cpp src/Parser.cpp
compiler src/LanguageWarnings.cpp src/ConstantEvaluator.cpp src/Analyzer.cpp src/Optimizer.cpp src/IR.cpp src/IRControlFlow.cpp src/IRGlobalOptimizer.cpp src/IRValueOptimizer.cpp src/IRSizeOptimizer.cpp src/IRCompactOptimizer.cpp src/IRConditionalOptimizer.cpp src/IRLocalOptimizer.cpp src/IRDivModFusion.cpp src/GSUMachineScheduler.cpp src/GSUAddressProof.cpp src/IRCodeGenerator.cpp src/IRPointerCodeGenerator.cpp src/IRIntegerCodeGenerator.cpp src/LinearScanAllocator.cpp src/DataSegment.cpp src/ASTPrinter.cpp
compiler src/LanguageWarnings.cpp src/ConstantEvaluator.cpp src/Analyzer.cpp src/Optimizer.cpp src/IR.cpp src/IRControlFlow.cpp src/IRGlobalOptimizer.cpp src/IRValueOptimizer.cpp src/IRSizeOptimizer.cpp src/IRCompactOptimizer.cpp src/IRConditionalOptimizer.cpp src/IRLocalOptimizer.cpp src/IRDivModFusion.cpp src/IRStorageOptimizer.cpp src/GSUMachineScheduler.cpp src/GSUAddressProof.cpp src/IRCodeGenerator.cpp src/IRBackendOptimization.cpp src/IRPointerCodeGenerator.cpp src/IRIntegerCodeGenerator.cpp src/LinearScanAllocator.cpp src/DataSegment.cpp src/ASTPrinter.cpp
assembler src/Assembler.cpp
discc src/discc.cpp src/CompilerDriver.cpp src/ProjectBuild.cpp @compiler @frontend @object @project @linker
discld src/discld.cpp @object @project @linker
Expand All @@ -22,6 +22,8 @@ disco_ir_conditional_optimizer_tests tests/IRConditionalOptimizerTests.cpp @comp
disco_gsu_scheduler_tests tests/GSUMachineSchedulerTests.cpp @compiler @frontend @assembler @object @project
disco_gsu_checked_proof_tests tests/GSUCheckedProofTests.cpp @compiler @frontend @object @project
disco_gsu_size_optimization_tests tests/GSUSizeOptimizationTests.cpp @compiler @frontend @object @project
disco_ir_storage_optimizer_tests tests/IRStorageOptimizerTests.cpp @compiler @frontend @object @project
disco_gsu_seven_backend_tests tests/GSUSevenBackendTests.cpp @compiler @frontend @assembler @object @project @linker
disco_gsu_compaction_tests tests/GSUCompactionTests.cpp @compiler @frontend @assembler @object @project
disco_project_manifest_tests tests/ProjectManifestTests.cpp @project
disco_module_loader_tests tests/ModuleLoaderTests.cpp @compiler @frontend @object @project
Expand Down
Loading
Loading