├── .clang-format
├── .clang-format-ignore
├── .clang-tidy
├── .git_archival.txt
├── .gitattributes
├── .github
└── workflows
│ ├── pip.yml
│ └── presubmit.yml
├── .gitignore
├── .gitmodules
├── .lldbinit
├── CMakeLists.txt
├── CMakePresets.json
├── CODE_OF_CONDUCT.md
├── LICENSE.txt
├── Makefile
├── README.md
├── apps
├── CMakeLists.txt
├── CMakePresets.json
├── HelloAndroid
│ ├── .gitignore
│ ├── AndroidManifest.xml
│ ├── README.md
│ ├── ant.properties
│ ├── build-gradle.sh
│ ├── build.gradle
│ ├── build.sh
│ ├── build.xml
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── jni
│ │ ├── Android.mk
│ │ ├── Application.mk
│ │ ├── hello_generator.cpp
│ │ └── hello_wrapper.cpp
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-ldpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ │ └── strings.xml
│ └── src
│ │ └── com
│ │ └── example
│ │ └── hellohalide
│ │ ├── CameraActivity.java
│ │ ├── CameraPreview.java
│ │ └── FrameHandler.java
├── HelloAndroidCamera2
│ ├── .gitignore
│ ├── AndroidManifest.xml
│ ├── README.md
│ ├── ant.properties
│ ├── build-gradle.sh
│ ├── build.gradle
│ ├── build.sh
│ ├── build.xml
│ ├── gradle
│ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── jni
│ │ ├── Android.mk
│ │ ├── AndroidBufferUtilities.cpp
│ │ ├── AndroidBufferUtilities.h
│ │ ├── Application.mk
│ │ ├── HalideFilters.cpp
│ │ ├── LockedSurface.cpp
│ │ ├── LockedSurface.h
│ │ ├── YuvBufferT.cpp
│ │ ├── YuvBufferT.h
│ │ ├── deinterleave_generator.cpp
│ │ └── edge_detect_generator.cpp
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-ldpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher.png
│ │ ├── layout
│ │ │ ├── activity_camera.xml
│ │ │ ├── fragment_camera2_basic.xml
│ │ │ └── main.xml
│ │ └── values
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ └── src
│ │ └── com
│ │ ├── android
│ │ └── ex
│ │ │ └── camera2
│ │ │ ├── blocking
│ │ │ ├── BlockingCameraManager.java
│ │ │ ├── BlockingCaptureCallback.java
│ │ │ ├── BlockingSessionCallback.java
│ │ │ └── BlockingStateCallback.java
│ │ │ ├── exceptions
│ │ │ └── TimeoutRuntimeException.java
│ │ │ ├── pos
│ │ │ └── AutoFocusStateMachine.java
│ │ │ └── utils
│ │ │ ├── StateChangeListener.java
│ │ │ ├── StateWaiter.java
│ │ │ └── SysTrace.java
│ │ └── example
│ │ └── helloandroidcamera2
│ │ ├── AndroidBufferUtilities.java
│ │ ├── AutoFitSurfaceView.java
│ │ ├── Camera2BasicFragment.java
│ │ ├── CameraActivity.java
│ │ ├── HalideFilters.java
│ │ ├── HalideYuvBufferT.java
│ │ └── NativeSurfaceHandle.java
├── HelloBaremetal
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── add_generator.cpp
│ ├── cmake-external_project
│ │ ├── CMakeLists.txt
│ │ ├── build.sh
│ │ ├── generator
│ │ │ └── CMakeLists.txt
│ │ └── run.sh
│ ├── cmake-super_build
│ │ ├── CMakeLists.txt
│ │ ├── app
│ │ │ └── CMakeLists.txt
│ │ ├── build.sh
│ │ ├── generator
│ │ │ └── CMakeLists.txt
│ │ └── run.sh
│ ├── cmake-twice
│ │ ├── CMakeLists.txt
│ │ ├── build.sh
│ │ └── run.sh
│ ├── cmake
│ │ └── toolchain.noos-arm32-sample.cmake
│ ├── enable_neon.s
│ ├── filter.cpp
│ └── run_baremetal.sh
├── HelloPyTorch
│ ├── Makefile
│ ├── README.md
│ ├── modules.py
│ ├── setup.cfg
│ ├── setup.py
│ ├── src
│ │ └── add_generator.cpp
│ └── test.py
├── HelloWasm
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── README.md
│ ├── core.cpp
│ ├── index.html
│ ├── main.js
│ ├── reaction_diffusion_generator.cpp
│ └── sw.js
├── HelloiOS
│ ├── HelloiOS.xcodeproj
│ │ └── project.pbxproj
│ └── HelloiOS
│ │ ├── AppDelegate.h
│ │ ├── AppDelegate.mm
│ │ ├── HalideView.h
│ │ ├── HalideView.mm
│ │ ├── HalideViewController.h
│ │ ├── HalideViewController.mm
│ │ ├── HelloiOS-Info.plist
│ │ ├── HelloiOS-Prefix.pch
│ │ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── LaunchImage.launchimage
│ │ │ └── Contents.json
│ │ ├── en.lproj
│ │ └── InfoPlist.strings
│ │ ├── main.mm
│ │ └── reaction_diffusion_2_generator.cpp
├── auto_viz
│ ├── Makefile
│ ├── auto_viz_demo.cpp
│ └── auto_viz_demo_generator.cpp
├── bgu
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── bgu_generator.cpp
│ └── filter.cpp
├── bilateral_grid
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── bilateral_grid_generator.cpp
│ ├── filter.cpp
│ └── viz.sh
├── blur
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── adb_run_on_device.sh
│ ├── halide_blur_generator.cpp
│ └── test.cpp
├── c_backend
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── pipeline_cpp_generator.cpp
│ ├── pipeline_generator.cpp
│ ├── run.cpp
│ └── run_cpp.cpp
├── camera_pipe
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── camera_pipe_generator.cpp
│ ├── process.cpp
│ └── viz.sh
├── compositing
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── compositing_generator.cpp
│ └── process.cpp
├── conv_layer
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── conv_layer_generator.cpp
│ └── process.cpp
├── cuda_mat_mul
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── mat_mul_generator.cpp
│ └── runner.cpp
├── depthwise_separable_conv
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── depthwise_separable_conv_generator.cpp
│ ├── process.cpp
│ └── tf_separable_conv.py
├── fft
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── complex.h
│ ├── fft.cpp
│ ├── fft.h
│ ├── fft_aot_test.cpp
│ ├── fft_generator.cpp
│ ├── funct.h
│ └── main.cpp
├── hannk
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── README.md
│ ├── benchmark.cpp
│ ├── cmake
│ │ └── superbuild
│ │ │ └── CMakeLists.txt
│ ├── compare_vs_tflite.cpp
│ ├── configure_cmake.sh
│ ├── delegate
│ │ ├── CMakeLists.txt
│ │ ├── exported_symbols.ldscript
│ │ ├── exported_symbols.osx
│ │ ├── hannk_delegate.cpp
│ │ ├── hannk_delegate.h
│ │ ├── hannk_delegate_adaptor.cpp
│ │ └── hannk_delegate_provider.cpp
│ ├── halide
│ │ ├── CMakeLists.txt
│ │ ├── common_halide.cpp
│ │ ├── common_halide.h
│ │ ├── common_halide_test.cpp
│ │ ├── constants.h
│ │ ├── conv_generator.cpp
│ │ ├── copy_generator.cpp
│ │ ├── depthwise_conv_generator.cpp
│ │ ├── docs
│ │ │ └── approx_log2_and_applications.ipynb
│ │ ├── elementwise_generator.cpp
│ │ ├── fill_generator.cpp
│ │ ├── normalizations_generator.cpp
│ │ ├── pool_generator.cpp
│ │ └── reductions_generator.cpp
│ ├── interpreter
│ │ ├── CMakeLists.txt
│ │ ├── allocation_planner.cpp
│ │ ├── allocation_planner.h
│ │ ├── elementwise_program.cpp
│ │ ├── elementwise_program.h
│ │ ├── interpreter.cpp
│ │ ├── interpreter.h
│ │ ├── interval.cpp
│ │ ├── interval.h
│ │ ├── lower.cpp
│ │ ├── lower.h
│ │ ├── model.cpp
│ │ ├── model.h
│ │ ├── ops.cpp
│ │ ├── ops.h
│ │ ├── stubs.cpp
│ │ ├── tensor.cpp
│ │ ├── tensor.h
│ │ ├── transforms.cpp
│ │ └── transforms.h
│ ├── run_benchmark_on_device.sh
│ ├── run_benchmark_on_hexagon_sim.sh
│ ├── run_compare_on_device.sh
│ ├── test
│ │ ├── inception_v2_224_quant
│ │ │ └── 000.DEPTHWISE_CONV_2D.tflite
│ │ ├── inception_v4_299_quant
│ │ │ ├── 000.CONV_2D.tflite
│ │ │ ├── 001.CONV_2D.tflite
│ │ │ ├── 002.CONV_2D.tflite
│ │ │ ├── 003.MAX_POOL_2D.tflite
│ │ │ ├── 004.CONV_2D.tflite
│ │ │ ├── 006.CONV_2D.tflite
│ │ │ ├── 008.CONV_2D.tflite
│ │ │ ├── 009.CONV_2D.tflite
│ │ │ ├── 013.MAX_POOL_2D.tflite
│ │ │ ├── 015.CONCATENATION.tflite
│ │ │ ├── 016.AVERAGE_POOL_2D.tflite
│ │ │ ├── 024.CONCATENATION.tflite
│ │ │ ├── 044.CONV_2D.tflite
│ │ │ ├── 045.CONV_2D.tflite
│ │ │ ├── 049.CONV_2D.tflite
│ │ │ ├── 052.MAX_POOL_2D.tflite
│ │ │ ├── 054.CONV_2D.tflite
│ │ │ ├── 057.CONCATENATION.tflite
│ │ │ ├── 069.CONCATENATION.tflite
│ │ │ ├── 081.CONCATENATION.tflite
│ │ │ ├── 093.CONCATENATION.tflite
│ │ │ ├── 105.CONCATENATION.tflite
│ │ │ ├── 117.CONCATENATION.tflite
│ │ │ ├── 118.AVERAGE_POOL_2D.tflite
│ │ │ ├── 129.CONCATENATION.tflite
│ │ │ ├── 140.CONV_2D.tflite
│ │ │ ├── 141.CONCATENATION.tflite
│ │ │ ├── 142.MAX_POOL_2D.tflite
│ │ │ ├── 149.CONCATENATION.tflite
│ │ │ ├── 178.AVERAGE_POOL_2D.tflite
│ │ │ ├── 189.CONCATENATION.tflite
│ │ │ ├── 191.CONCATENATION.tflite
│ │ │ ├── 192.AVERAGE_POOL_2D.tflite
│ │ │ └── 194.SOFTMAX.tflite
│ │ ├── misc
│ │ │ ├── L2_NORMALIZATION.tflite
│ │ │ ├── LOGISTIC.tflite
│ │ │ ├── MUL.tflite
│ │ │ ├── SPACE_TO_DEPTH.2.tflite
│ │ │ ├── SPACE_TO_DEPTH.4.tflite
│ │ │ ├── SPLIT.1_1_1.tflite
│ │ │ ├── SPLIT_V.36_5_7.tflite
│ │ │ ├── TRANSPOSE.2_0_1.tflite
│ │ │ ├── bad_broadcast_add.tflite
│ │ │ ├── bad_broadcast_mul.tflite
│ │ │ ├── bad_broadcast_sub.tflite
│ │ │ └── bad_fully_connected.tflite
│ │ ├── mobilenet_v1_0.25_128_quant
│ │ │ ├── 000.CONV_2D.tflite
│ │ │ ├── 001.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 002.CONV_2D.tflite
│ │ │ ├── 003.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 004.CONV_2D.tflite
│ │ │ ├── 005.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 006.CONV_2D.tflite
│ │ │ ├── 007.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 008.CONV_2D.tflite
│ │ │ ├── 009.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 010.CONV_2D.tflite
│ │ │ ├── 011.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 012.CONV_2D.tflite
│ │ │ ├── 013.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 014.CONV_2D.tflite
│ │ │ ├── 019.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 022.CONV_2D.tflite
│ │ │ ├── 025.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 027.AVERAGE_POOL_2D.tflite
│ │ │ ├── 029.RESHAPE.tflite
│ │ │ └── 030.SOFTMAX.tflite
│ │ ├── mobilenet_v1_1.0_224_quant
│ │ │ ├── 000.CONV_2D.tflite
│ │ │ ├── 001.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 002.CONV_2D.tflite
│ │ │ ├── 003.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 004.CONV_2D.tflite
│ │ │ ├── 005.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 006.CONV_2D.tflite
│ │ │ ├── 007.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 008.CONV_2D.tflite
│ │ │ ├── 009.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 013.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 025.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 027.AVERAGE_POOL_2D.tflite
│ │ │ ├── 029.RESHAPE.tflite
│ │ │ └── 030.SOFTMAX.tflite
│ │ └── mobilenet_v2_1.0_224_quant
│ │ │ ├── 000.CONV_2D.tflite
│ │ │ ├── 001.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 002.CONV_2D.tflite
│ │ │ ├── 003.CONV_2D.tflite
│ │ │ ├── 004.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 005.CONV_2D.tflite
│ │ │ ├── 008.CONV_2D.tflite
│ │ │ ├── 009.ADD.tflite
│ │ │ ├── 012.CONV_2D.tflite
│ │ │ ├── 015.CONV_2D.tflite
│ │ │ ├── 016.ADD.tflite
│ │ │ ├── 020.ADD.tflite
│ │ │ ├── 021.CONV_2D.tflite
│ │ │ ├── 022.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 023.CONV_2D.tflite
│ │ │ ├── 027.ADD.tflite
│ │ │ ├── 031.ADD.tflite
│ │ │ ├── 032.CONV_2D.tflite
│ │ │ ├── 033.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 034.CONV_2D.tflite
│ │ │ ├── 035.ADD.tflite
│ │ │ ├── 038.CONV_2D.tflite
│ │ │ ├── 040.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 042.ADD.tflite
│ │ │ ├── 045.CONV_2D.tflite
│ │ │ ├── 046.ADD.tflite
│ │ │ ├── 047.CONV_2D.tflite
│ │ │ ├── 049.CONV_2D.tflite
│ │ │ ├── 053.ADD.tflite
│ │ │ ├── 054.CONV_2D.tflite
│ │ │ ├── 056.CONV_2D.tflite
│ │ │ ├── 057.ADD.tflite
│ │ │ ├── 059.DEPTHWISE_CONV_2D.tflite
│ │ │ ├── 062.AVERAGE_POOL_2D.tflite
│ │ │ └── 064.RESHAPE.tflite
│ ├── tflite
│ │ ├── CMakeLists.txt
│ │ ├── tflite_parser.cpp
│ │ └── tflite_parser.h
│ └── util
│ │ ├── CMakeLists.txt
│ │ ├── buffer_util.h
│ │ ├── error_util.cpp
│ │ ├── error_util.h
│ │ ├── file_util.h
│ │ ├── hannk_log.h
│ │ ├── hannk_log_stderr.cpp
│ │ ├── hannk_log_tflite.cpp
│ │ ├── model_runner.cpp
│ │ ├── model_runner.h
│ │ └── small_vector.h
├── harris
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── filter.cpp
│ └── harris_generator.cpp
├── hexagon_benchmarks
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── adb_run_on_device.sh
│ ├── conv3x3_generator.cpp
│ ├── dilate3x3_generator.cpp
│ ├── gaussian5x5_generator.cpp
│ ├── median3x3_generator.cpp
│ ├── process.cpp
│ ├── process.h
│ └── sobel_generator.cpp
├── hexagon_dma
│ ├── Makefile
│ ├── mock_dma_implementation.cpp
│ ├── pipeline_raw_linear_interleaved_basic.cpp
│ ├── pipeline_yuv_linear_basic.cpp
│ ├── process_raw_linear_interleaved_basic.cpp
│ └── process_yuv_linear_basic.cpp
├── hist
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── filter.cpp
│ └── hist_generator.cpp
├── iir_blur
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── filter.cpp
│ └── iir_blur_generator.cpp
├── images
│ ├── bayer_raw.png
│ ├── bayer_small.png
│ ├── gray.png
│ ├── gray_small.pgm
│ ├── gray_small.png
│ ├── low_res_in.png
│ ├── matrix_3200.mat
│ ├── matrix_7000.mat
│ ├── rgb.png
│ ├── rgb_small.png
│ ├── rgb_small16.png
│ └── rgba.png
├── interpolate
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── filter.cpp
│ └── interpolate_generator.cpp
├── lens_blur
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── lens_blur_generator.cpp
│ └── process.cpp
├── linear_algebra
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── benchmarks
│ │ ├── CMakeLists.txt
│ │ ├── cblas_benchmarks.cpp
│ │ ├── clock.h
│ │ ├── eigen_benchmarks.cpp
│ │ ├── halide_benchmarks.cpp
│ │ └── macros.h
│ ├── include
│ │ └── cblas.h
│ ├── src
│ │ ├── CMakeLists.txt
│ │ ├── blas_l1_generators.cpp
│ │ ├── blas_l2_generators.cpp
│ │ ├── blas_l3_generators.cpp
│ │ ├── halide_blas.cpp
│ │ └── halide_blas.h
│ └── tests
│ │ ├── CMakeLists.txt
│ │ └── test_halide_blas.cpp
├── linear_blur
│ ├── linear_blur_generator.cpp
│ ├── linear_to_srgb_generator.cpp
│ ├── run_linear_blur.cpp
│ ├── simple_blur_generator.cpp
│ └── srgb_to_linear_generator.cpp
├── local_laplacian
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── local_laplacian_generator.cpp
│ ├── process.cpp
│ └── viz.sh
├── max_filter
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── filter.cpp
│ └── max_filter_generator.cpp
├── nl_means
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── nl_means_generator.cpp
│ └── process.cpp
├── onnx
│ ├── Makefile
│ ├── benchmarking_utils.h
│ ├── common_types.h
│ ├── denormal_disabler.h
│ ├── halide_as_onnx_backend.py
│ ├── halide_as_onnx_backend_test.py
│ ├── model.cpp
│ ├── model.py
│ ├── model_test.py
│ ├── onnx_converter.cc
│ ├── onnx_converter.h
│ ├── onnx_converter_generator.cc
│ ├── onnx_converter_generator_test.cc
│ ├── onnx_converter_test.cc
│ └── test_model_proto.txt
├── resize
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── resize.cpp
│ └── resize_generator.cpp
├── resnet_50
│ ├── Makefile
│ ├── Resnet50Generator.cpp
│ ├── load_weights.py
│ ├── process.cpp
│ └── validate_resnet50_output.py
├── simd_op_check
│ ├── Makefile
│ └── driver.cpp
├── stencil_chain
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── process.cpp
│ └── stencil_chain_generator.cpp
├── support
│ ├── Makefile.inc
│ └── viz_auto.sh
├── unsharp
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── filter.cpp
│ └── unsharp_generator.cpp
└── wavelet
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── README.md
│ ├── daubechies_constants.h
│ ├── daubechies_x_generator.cpp
│ ├── haar_x_generator.cpp
│ ├── inverse_daubechies_x_generator.cpp
│ ├── inverse_haar_x_generator.cpp
│ └── wavelet.cpp
├── cmake
├── BundleStatic.cmake
├── CheckFilesExist.cmake
├── FindHalide_LLVM.cmake
├── FindHalide_WebGPU.cmake
├── FindHexagonSDK.cmake
├── FindNodeJS.cmake
├── FindV8.cmake
├── HalideFeatures.cmake
├── HalideGeneratorHelpers.cmake
├── HalidePackageConfigHelpers.cmake
├── HalideTargetHelpers.cmake
├── HalideTestHelpers.cmake
├── MutexCopy.ps1
├── TargetExportScript.cmake
├── WipeStandardFlags.cmake
├── dependencies.cmake
├── toolchain.linux-aarch64.cmake
├── toolchain.linux-arm32.cmake
├── toolchain.linux-i386.cmake
├── toolchain.linux-x64-asan.cmake
├── toolchain.linux-x64-fuzzer.cmake
└── vcpkg
│ ├── llvm
│ ├── portfile.cmake
│ └── vcpkg.json
│ └── python3
│ ├── portfile.cmake
│ └── vcpkg.json
├── dependencies
├── README.md
├── spirv
│ ├── LICENSE
│ ├── include
│ │ └── spirv
│ │ │ └── unified1
│ │ │ ├── GLSL.std.450.h
│ │ │ └── spirv.h
│ └── share
│ │ └── cmake
│ │ └── SPIRV-Headers
│ │ ├── SPIRV-HeadersConfig.cmake
│ │ ├── SPIRV-HeadersConfigVersion.cmake
│ │ └── SPIRV-HeadersTargets.cmake
├── update-spirv.sh
├── update-vulkan.sh
└── vulkan
│ ├── LICENSE.md
│ ├── include
│ ├── vk_video
│ │ ├── vulkan_video_codec_av1std.h
│ │ ├── vulkan_video_codec_av1std_decode.h
│ │ ├── vulkan_video_codec_h264std.h
│ │ ├── vulkan_video_codec_h264std_decode.h
│ │ ├── vulkan_video_codec_h264std_encode.h
│ │ ├── vulkan_video_codec_h265std.h
│ │ ├── vulkan_video_codec_h265std_decode.h
│ │ ├── vulkan_video_codec_h265std_encode.h
│ │ └── vulkan_video_codecs_common.h
│ └── vulkan
│ │ ├── vk_icd.h
│ │ ├── vk_layer.h
│ │ ├── vk_platform.h
│ │ ├── vulkan.h
│ │ ├── vulkan_android.h
│ │ ├── vulkan_beta.h
│ │ ├── vulkan_core.h
│ │ ├── vulkan_directfb.h
│ │ ├── vulkan_fuchsia.h
│ │ ├── vulkan_ggp.h
│ │ ├── vulkan_ios.h
│ │ ├── vulkan_macos.h
│ │ ├── vulkan_metal.h
│ │ ├── vulkan_screen.h
│ │ ├── vulkan_vi.h
│ │ ├── vulkan_wayland.h
│ │ ├── vulkan_win32.h
│ │ ├── vulkan_xcb.h
│ │ ├── vulkan_xlib.h
│ │ └── vulkan_xlib_xrandr.h
│ └── share
│ └── cmake
│ └── VulkanHeaders
│ ├── VulkanHeadersConfig.cmake
│ └── VulkanHeadersConfigVersion.cmake
├── doc
├── BuildingHalideWithCMake.md
├── CMakeLists.txt
├── CodeStyleCMake.md
├── FuzzTesting.md
├── HalideCMakePackage.md
├── Hexagon.md
├── Python.md
├── RunGen.md
├── Testing.md
├── Vulkan.md
├── WebAssembly.md
└── WebGPU.md
├── packaging
├── CMakeLists.txt
├── common
│ ├── Description.txt
│ ├── HalideConfig.cmake
│ ├── HalideHelpersConfig.cmake
│ └── Welcome.txt
├── pip
│ ├── CMakeLists.txt
│ ├── README.md
│ └── TrampolineConfig.cmake.in
├── tgz
│ ├── config.cmake
│ └── package.sh
└── zip
│ └── package.bat
├── pyproject.toml
├── python_bindings
├── CMakeLists.txt
├── apps
│ ├── CMakeLists.txt
│ ├── bilateral_grid_app.py
│ ├── bilateral_grid_generator.py
│ ├── blur_app.py
│ ├── blur_generator.py
│ ├── interpolate_app.py
│ ├── interpolate_generator.py
│ ├── local_laplacian_app.py
│ └── local_laplacian_generator.py
├── cmake
│ └── AddPythonTest.cmake
├── packaging
│ ├── CMakeLists.txt
│ └── Halide_PythonConfig.cmake.in
├── src
│ ├── CMakeLists.txt
│ └── halide
│ │ ├── CMakeLists.txt
│ │ ├── __init__.py
│ │ ├── _generator_helpers.py
│ │ ├── halide_
│ │ ├── PyArgument.cpp
│ │ ├── PyArgument.h
│ │ ├── PyBinaryOperators.h
│ │ ├── PyBoundaryConditions.cpp
│ │ ├── PyBoundaryConditions.h
│ │ ├── PyBuffer.cpp
│ │ ├── PyBuffer.h
│ │ ├── PyCallable.cpp
│ │ ├── PyCallable.h
│ │ ├── PyConciseCasts.cpp
│ │ ├── PyConciseCasts.h
│ │ ├── PyDerivative.cpp
│ │ ├── PyDerivative.h
│ │ ├── PyEnums.cpp
│ │ ├── PyEnums.h
│ │ ├── PyError.cpp
│ │ ├── PyError.h
│ │ ├── PyExpr.cpp
│ │ ├── PyExpr.h
│ │ ├── PyExternFuncArgument.cpp
│ │ ├── PyExternFuncArgument.h
│ │ ├── PyFunc.cpp
│ │ ├── PyFunc.h
│ │ ├── PyFuncRef.cpp
│ │ ├── PyFuncRef.h
│ │ ├── PyGenerator.cpp
│ │ ├── PyGenerator.h
│ │ ├── PyHalide.cpp
│ │ ├── PyHalide.h
│ │ ├── PyIROperator.cpp
│ │ ├── PyIROperator.h
│ │ ├── PyImageParam.cpp
│ │ ├── PyImageParam.h
│ │ ├── PyInlineReductions.cpp
│ │ ├── PyInlineReductions.h
│ │ ├── PyLambda.cpp
│ │ ├── PyLambda.h
│ │ ├── PyLoopLevel.cpp
│ │ ├── PyLoopLevel.h
│ │ ├── PyModule.cpp
│ │ ├── PyModule.h
│ │ ├── PyParam.cpp
│ │ ├── PyParam.h
│ │ ├── PyParameter.cpp
│ │ ├── PyParameter.h
│ │ ├── PyPipeline.cpp
│ │ ├── PyPipeline.h
│ │ ├── PyRDom.cpp
│ │ ├── PyRDom.h
│ │ ├── PyScheduleMethods.h
│ │ ├── PyStage.cpp
│ │ ├── PyStage.h
│ │ ├── PyTarget.cpp
│ │ ├── PyTarget.h
│ │ ├── PyTuple.cpp
│ │ ├── PyTuple.h
│ │ ├── PyType.cpp
│ │ ├── PyType.h
│ │ ├── PyVar.cpp
│ │ ├── PyVar.h
│ │ ├── PyVarOrRVar.cpp
│ │ └── PyVarOrRVar.h
│ │ └── imageio.py
├── stub
│ ├── CMakeLists.txt
│ └── PyStubImpl.cpp
├── test
│ ├── CMakeLists.txt
│ ├── correctness
│ │ ├── CMakeLists.txt
│ │ ├── addconstant_test.py
│ │ ├── atomics.py
│ │ ├── autodiff.py
│ │ ├── basics.py
│ │ ├── bit_test.py
│ │ ├── boundary_conditions.py
│ │ ├── buffer.py
│ │ ├── callable.py
│ │ ├── compile_to.py
│ │ ├── division.py
│ │ ├── extern.py
│ │ ├── float_precision_test.py
│ │ ├── iroperator.py
│ │ ├── multi_method_module_test.py
│ │ ├── multipass_constraints.py
│ │ ├── negate_test.py
│ │ ├── pystub.py
│ │ ├── rdom.py
│ │ ├── realize_warnings.py
│ │ ├── target.py
│ │ ├── the_sort_function.c
│ │ ├── tuple_select.py
│ │ ├── type.py
│ │ ├── user_context_test.py
│ │ └── var.py
│ └── generators
│ │ ├── CMakeLists.txt
│ │ ├── addconstantcpp_generator.cpp
│ │ ├── addconstantpy_generator.py
│ │ ├── bitcpp_generator.cpp
│ │ ├── bitpy_generator.py
│ │ ├── complexcpp_generator.cpp
│ │ ├── complexpy_generator.py
│ │ ├── simplecpp_generator.cpp
│ │ ├── simplepy_generator.py
│ │ └── user_context_generator.cpp
└── tutorial
│ ├── CMakeLists.txt
│ ├── lesson_01_basics.py
│ ├── lesson_02_input_image.py
│ ├── lesson_03_debugging_1.py
│ ├── lesson_04_debugging_2.py
│ ├── lesson_05_scheduling_1.py
│ ├── lesson_06_realizing_over_shifted_domains.py
│ ├── lesson_07_multi_stage_pipelines.py
│ ├── lesson_08_scheduling_2.py
│ ├── lesson_09_update_definitions.py
│ ├── lesson_10_aot_compilation_generate.py
│ ├── lesson_10_aot_compilation_run.py
│ ├── lesson_11_cross_compilation.py
│ ├── lesson_12_using_the_gpu.py
│ ├── lesson_13_tuples.py
│ └── lesson_14_types.py
├── requirements.txt
├── run-clang-format.sh
├── run-clang-tidy.sh
├── src
├── AbstractGenerator.cpp
├── AbstractGenerator.h
├── AddAtomicMutex.cpp
├── AddAtomicMutex.h
├── AddImageChecks.cpp
├── AddImageChecks.h
├── AddParameterChecks.cpp
├── AddParameterChecks.h
├── AddSplitFactorChecks.cpp
├── AddSplitFactorChecks.h
├── AlignLoads.cpp
├── AlignLoads.h
├── AllocationBoundsInference.cpp
├── AllocationBoundsInference.h
├── ApplySplit.cpp
├── ApplySplit.h
├── Argument.cpp
├── Argument.h
├── AssociativeOpsTable.cpp
├── AssociativeOpsTable.h
├── Associativity.cpp
├── Associativity.h
├── AsyncProducers.cpp
├── AsyncProducers.h
├── AutoScheduleUtils.cpp
├── AutoScheduleUtils.h
├── BoundConstantExtentLoops.cpp
├── BoundConstantExtentLoops.h
├── BoundSmallAllocations.cpp
├── BoundSmallAllocations.h
├── BoundaryConditions.cpp
├── BoundaryConditions.h
├── Bounds.cpp
├── Bounds.h
├── BoundsInference.cpp
├── BoundsInference.h
├── Buffer.cpp
├── Buffer.h
├── CMakeLists.txt
├── CPlusPlusMangle.cpp
├── CPlusPlusMangle.h
├── CSE.cpp
├── CSE.h
├── Callable.cpp
├── Callable.h
├── CanonicalizeGPUVars.cpp
├── CanonicalizeGPUVars.h
├── ClampUnsafeAccesses.cpp
├── ClampUnsafeAccesses.h
├── Closure.cpp
├── Closure.h
├── CodeGen_ARM.cpp
├── CodeGen_C.cpp
├── CodeGen_C.h
├── CodeGen_C_prologue.template.cpp
├── CodeGen_C_vectors.template.cpp
├── CodeGen_D3D12Compute_Dev.cpp
├── CodeGen_D3D12Compute_Dev.h
├── CodeGen_GPU_Dev.cpp
├── CodeGen_GPU_Dev.h
├── CodeGen_Hexagon.cpp
├── CodeGen_Internal.cpp
├── CodeGen_Internal.h
├── CodeGen_LLVM.cpp
├── CodeGen_LLVM.h
├── CodeGen_Metal_Dev.cpp
├── CodeGen_Metal_Dev.h
├── CodeGen_OpenCL_Dev.cpp
├── CodeGen_OpenCL_Dev.h
├── CodeGen_PTX_Dev.cpp
├── CodeGen_PTX_Dev.h
├── CodeGen_Posix.cpp
├── CodeGen_Posix.h
├── CodeGen_PowerPC.cpp
├── CodeGen_PyTorch.cpp
├── CodeGen_PyTorch.h
├── CodeGen_RISCV.cpp
├── CodeGen_Targets.h
├── CodeGen_Vulkan_Dev.cpp
├── CodeGen_Vulkan_Dev.h
├── CodeGen_WebAssembly.cpp
├── CodeGen_WebGPU_Dev.cpp
├── CodeGen_WebGPU_Dev.h
├── CodeGen_X86.cpp
├── CompilerLogger.cpp
├── CompilerLogger.h
├── ConciseCasts.h
├── ConstantBounds.cpp
├── ConstantBounds.h
├── ConstantInterval.cpp
├── ConstantInterval.h
├── Debug.cpp
├── Debug.h
├── DebugArguments.cpp
├── DebugArguments.h
├── DebugToFile.cpp
├── DebugToFile.h
├── Definition.cpp
├── Definition.h
├── Deinterleave.cpp
├── Deinterleave.h
├── Derivative.cpp
├── Derivative.h
├── DerivativeUtils.cpp
├── DerivativeUtils.h
├── Deserialization.cpp
├── Deserialization.h
├── DeviceAPI.h
├── DeviceArgument.cpp
├── DeviceArgument.h
├── DeviceInterface.cpp
├── DeviceInterface.h
├── Dimension.cpp
├── Dimension.h
├── DistributeShifts.cpp
├── DistributeShifts.h
├── EarlyFree.cpp
├── EarlyFree.h
├── Elf.cpp
├── Elf.h
├── EliminateBoolVectors.cpp
├── EliminateBoolVectors.h
├── EmulateFloat16Math.cpp
├── EmulateFloat16Math.h
├── Error.cpp
├── Error.h
├── Expr.cpp
├── Expr.h
├── ExprUsesVar.h
├── Extern.h
├── ExternFuncArgument.h
├── ExtractTileOperations.cpp
├── ExtractTileOperations.h
├── FastIntegerDivide.cpp
├── FastIntegerDivide.h
├── FindCalls.cpp
├── FindCalls.h
├── FindIntrinsics.cpp
├── FindIntrinsics.h
├── FlattenNestedRamps.cpp
├── FlattenNestedRamps.h
├── Float16.cpp
├── Float16.h
├── Func.cpp
├── Func.h
├── Function.cpp
├── Function.h
├── FunctionPtr.h
├── FuseGPUThreadLoops.cpp
├── FuseGPUThreadLoops.h
├── FuzzFloatStores.cpp
├── FuzzFloatStores.h
├── Generator.cpp
├── Generator.h
├── HexagonAlignment.h
├── HexagonOffload.cpp
├── HexagonOffload.h
├── HexagonOptimize.cpp
├── HexagonOptimize.h
├── IR.cpp
├── IR.h
├── IREquality.cpp
├── IREquality.h
├── IRMatch.cpp
├── IRMatch.h
├── IRMutator.cpp
├── IRMutator.h
├── IROperator.cpp
├── IROperator.h
├── IRPrinter.cpp
├── IRPrinter.h
├── IRVisitor.cpp
├── IRVisitor.h
├── ImageParam.cpp
├── ImageParam.h
├── InferArguments.cpp
├── InferArguments.h
├── InjectHostDevBufferCopies.cpp
├── InjectHostDevBufferCopies.h
├── Inline.cpp
├── Inline.h
├── InlineReductions.cpp
├── InlineReductions.h
├── IntegerDivisionTable.cpp
├── IntegerDivisionTable.h
├── Interval.cpp
├── Interval.h
├── IntrusivePtr.h
├── JITModule.cpp
├── JITModule.h
├── LICM.cpp
├── LICM.h
├── LLVM_Headers.h
├── LLVM_Output.cpp
├── LLVM_Output.h
├── LLVM_Runtime_Linker.cpp
├── LLVM_Runtime_Linker.h
├── Lambda.cpp
├── Lambda.h
├── Lerp.cpp
├── Lerp.h
├── LoopCarry.cpp
├── LoopCarry.h
├── LoopPartitioningDirective.h
├── Lower.cpp
├── Lower.h
├── LowerParallelTasks.cpp
├── LowerParallelTasks.h
├── LowerWarpShuffles.cpp
├── LowerWarpShuffles.h
├── MainPage.h
├── Memoization.cpp
├── Memoization.h
├── Module.cpp
├── Module.h
├── ModulusRemainder.cpp
├── ModulusRemainder.h
├── Monotonic.cpp
├── Monotonic.h
├── ObjectInstanceRegistry.cpp
├── ObjectInstanceRegistry.h
├── OffloadGPULoops.cpp
├── OffloadGPULoops.h
├── OptimizeShuffles.cpp
├── OptimizeShuffles.h
├── OutputImageParam.cpp
├── OutputImageParam.h
├── ParallelRVar.cpp
├── ParallelRVar.h
├── Param.h
├── Parameter.cpp
├── Parameter.h
├── PartitionLoops.cpp
├── PartitionLoops.h
├── Pipeline.cpp
├── Pipeline.h
├── Prefetch.cpp
├── Prefetch.h
├── PrefetchDirective.h
├── PrintLoopNest.cpp
├── PrintLoopNest.h
├── Profiling.cpp
├── Profiling.h
├── PurifyIndexMath.cpp
├── PurifyIndexMath.h
├── PythonExtensionGen.cpp
├── PythonExtensionGen.h
├── Qualify.cpp
├── Qualify.h
├── RDom.cpp
├── RDom.h
├── Random.cpp
├── Random.h
├── Realization.cpp
├── Realization.h
├── RealizationOrder.cpp
├── RealizationOrder.h
├── RebaseLoopsToZero.cpp
├── RebaseLoopsToZero.h
├── Reduction.cpp
├── Reduction.h
├── RegionCosts.cpp
├── RegionCosts.h
├── RemoveDeadAllocations.cpp
├── RemoveDeadAllocations.h
├── RemoveExternLoops.cpp
├── RemoveExternLoops.h
├── RemoveUndef.cpp
├── RemoveUndef.h
├── Schedule.cpp
├── Schedule.h
├── ScheduleFunctions.cpp
├── ScheduleFunctions.h
├── Scope.h
├── SelectGPUAPI.cpp
├── SelectGPUAPI.h
├── Serialization.cpp
├── Serialization.h
├── Simplify.cpp
├── Simplify.h
├── SimplifyCorrelatedDifferences.cpp
├── SimplifyCorrelatedDifferences.h
├── SimplifySpecializations.cpp
├── SimplifySpecializations.h
├── Simplify_Add.cpp
├── Simplify_And.cpp
├── Simplify_Call.cpp
├── Simplify_Cast.cpp
├── Simplify_Div.cpp
├── Simplify_EQ.cpp
├── Simplify_Exprs.cpp
├── Simplify_Internal.h
├── Simplify_LT.cpp
├── Simplify_Let.cpp
├── Simplify_Max.cpp
├── Simplify_Min.cpp
├── Simplify_Mod.cpp
├── Simplify_Mul.cpp
├── Simplify_Not.cpp
├── Simplify_Or.cpp
├── Simplify_Reinterpret.cpp
├── Simplify_Select.cpp
├── Simplify_Shuffle.cpp
├── Simplify_Stmts.cpp
├── Simplify_Sub.cpp
├── SkipStages.cpp
├── SkipStages.h
├── SlidingWindow.cpp
├── SlidingWindow.h
├── Solve.cpp
├── Solve.h
├── SpirvIR.cpp
├── SpirvIR.h
├── SplitTuples.cpp
├── SplitTuples.h
├── StageStridedLoads.cpp
├── StageStridedLoads.h
├── StmtToHTML.cpp
├── StmtToHTML.h
├── StorageFlattening.cpp
├── StorageFlattening.h
├── StorageFolding.cpp
├── StorageFolding.h
├── StrictifyFloat.cpp
├── StrictifyFloat.h
├── StripAsserts.cpp
├── StripAsserts.h
├── Substitute.cpp
├── Substitute.h
├── Target.cpp
├── Target.h
├── TargetQueryOps.cpp
├── TargetQueryOps.h
├── Tracing.cpp
├── Tracing.h
├── TrimNoOps.cpp
├── TrimNoOps.h
├── Tuple.cpp
├── Tuple.h
├── Type.cpp
├── Type.h
├── UnifyDuplicateLets.cpp
├── UnifyDuplicateLets.h
├── UniquifyVariableNames.cpp
├── UniquifyVariableNames.h
├── UnpackBuffers.cpp
├── UnpackBuffers.h
├── UnrollLoops.cpp
├── UnrollLoops.h
├── UnsafePromises.cpp
├── UnsafePromises.h
├── Util.cpp
├── Util.h
├── Var.cpp
├── Var.h
├── VectorizeLoops.cpp
├── VectorizeLoops.h
├── WasmExecutor.cpp
├── WasmExecutor.h
├── WrapCalls.cpp
├── WrapCalls.h
├── autoschedulers
│ ├── CMakeLists.txt
│ ├── adams2019
│ │ ├── AutoSchedule.cpp
│ │ ├── AutoSchedule.h
│ │ ├── CMakeLists.txt
│ │ ├── Cache.cpp
│ │ ├── Cache.h
│ │ ├── CostModel.h
│ │ ├── DefaultCostModel.cpp
│ │ ├── DefaultCostModel.h
│ │ ├── Featurization.h
│ │ ├── FunctionDAG.cpp
│ │ ├── FunctionDAG.h
│ │ ├── LoopNest.cpp
│ │ ├── LoopNest.h
│ │ ├── Makefile
│ │ ├── NetworkSize.h
│ │ ├── State.cpp
│ │ ├── State.h
│ │ ├── Timer.h
│ │ ├── Weights.cpp
│ │ ├── Weights.h
│ │ ├── adams2019_autotune_loop.sh
│ │ ├── baseline.weights
│ │ ├── cost_model_generator.cpp
│ │ ├── cost_model_schedule.h
│ │ ├── retrain_cost_model.cpp
│ │ ├── test_function_dag.cpp
│ │ └── weightsdir_to_weightsfile.cpp
│ ├── anderson2021
│ │ ├── AutoSchedule.cpp
│ │ ├── AutoSchedule.h
│ │ ├── CMakeLists.txt
│ │ ├── CostModel.h
│ │ ├── DefaultCostModel.cpp
│ │ ├── DefaultCostModel.h
│ │ ├── Featurization.h
│ │ ├── FunctionDAG.cpp
│ │ ├── FunctionDAG.h
│ │ ├── GPULoopInfo.cpp
│ │ ├── GPULoopInfo.h
│ │ ├── GPUMemInfo.h
│ │ ├── LoopNest.cpp
│ │ ├── LoopNest.h
│ │ ├── LoopNestParser.h
│ │ ├── Makefile
│ │ ├── NetworkSize.h
│ │ ├── SearchSpace.cpp
│ │ ├── SearchSpace.h
│ │ ├── SearchSpaceOptions.h
│ │ ├── State.cpp
│ │ ├── State.h
│ │ ├── Statistics.h
│ │ ├── ThreadInfo.h
│ │ ├── Tiling.cpp
│ │ ├── Tiling.h
│ │ ├── Weights.cpp
│ │ ├── Weights.h
│ │ ├── anderson2021_autotune_loop.sh
│ │ ├── baseline.weights
│ │ ├── check_weights.cpp
│ │ ├── cost_model_generator.cpp
│ │ ├── cost_model_schedule.h
│ │ ├── generate_data.sh
│ │ ├── retrain_cost_model.cpp
│ │ ├── scripts
│ │ │ ├── average_times.sh
│ │ │ ├── predict_all.sh
│ │ │ └── utils.sh
│ │ ├── test
│ │ │ ├── bounds.cpp
│ │ │ ├── parser.cpp
│ │ │ ├── state.cpp
│ │ │ ├── storage_strides.cpp
│ │ │ ├── test.h
│ │ │ ├── thread_info.cpp
│ │ │ └── tiling.cpp
│ │ ├── test_function_dag.cpp
│ │ ├── weights
│ │ │ ├── README.md
│ │ │ ├── bgu.weights
│ │ │ ├── bilateral_grid.weights
│ │ │ ├── camera_pipe.weights
│ │ │ ├── conv_layer.weights
│ │ │ ├── cuda_mat_mul.weights
│ │ │ ├── depthwise_separable_conv.weights
│ │ │ ├── gpu.weights
│ │ │ ├── harris.weights
│ │ │ ├── hist.weights
│ │ │ ├── iir_blur.weights
│ │ │ ├── interpolate.weights
│ │ │ ├── lens_blur.weights
│ │ │ ├── local_laplacian.weights
│ │ │ ├── max_filter.weights
│ │ │ ├── nl_means.weights
│ │ │ ├── stencil_chain.weights
│ │ │ └── unsharp.weights
│ │ └── weightsdir_to_weightsfile.cpp
│ ├── common
│ │ ├── ASLog.cpp
│ │ ├── ASLog.h
│ │ ├── CMakeLists.txt
│ │ ├── Errors.h
│ │ ├── HalidePlugin.h
│ │ ├── Makefile
│ │ ├── ParamParser.h
│ │ ├── PerfectHashMap.h
│ │ ├── cmdline.h
│ │ ├── featurization_to_sample.cpp
│ │ ├── get_host_target.cpp
│ │ └── test_perfect_hash_map.cpp
│ ├── li2018
│ │ ├── CMakeLists.txt
│ │ ├── GradientAutoscheduler.cpp
│ │ ├── Makefile
│ │ └── README.md
│ └── mullapudi2016
│ │ ├── AutoSchedule.cpp
│ │ ├── CMakeLists.txt
│ │ └── Makefile
├── exported_symbols.ldscript
├── exported_symbols.osx
├── halide_ir.fbs
├── irvisualizer
│ ├── generate_palettes.py
│ ├── html_template_StmtToHTML.css
│ ├── html_template_StmtToHTML.js
│ └── html_template_StmtToHTML_dependencies.html
└── runtime
│ ├── .clang-tidy
│ ├── CMakeLists.txt
│ ├── HalideBuffer.h
│ ├── HalidePyTorchCudaHelpers.h
│ ├── HalidePyTorchHelpers.h
│ ├── HalideRuntime.h
│ ├── HalideRuntimeCuda.h
│ ├── HalideRuntimeD3D12Compute.h
│ ├── HalideRuntimeHexagonDma.h
│ ├── HalideRuntimeHexagonHost.h
│ ├── HalideRuntimeMetal.h
│ ├── HalideRuntimeOpenCL.h
│ ├── HalideRuntimeQurt.h
│ ├── HalideRuntimeVulkan.h
│ ├── HalideRuntimeWebGPU.h
│ ├── aarch64.ll
│ ├── aarch64_cpu_features.cpp
│ ├── alignment_128.cpp
│ ├── alignment_32.cpp
│ ├── alignment_64.cpp
│ ├── allocation_cache.cpp
│ ├── android_clock.cpp
│ ├── android_host_cpu_count.cpp
│ ├── android_io.cpp
│ ├── android_ioctl.h
│ ├── arm.ll
│ ├── arm_cpu_features.cpp
│ ├── arm_no_neon.ll
│ ├── cache.cpp
│ ├── can_use_target.cpp
│ ├── cl_functions.h
│ ├── constants.h
│ ├── cpu_features.h
│ ├── cuda.cpp
│ ├── cuda_functions.h
│ ├── d3d12compute.cpp
│ ├── destructors.cpp
│ ├── device_buffer_utils.h
│ ├── device_interface.cpp
│ ├── device_interface.h
│ ├── errors.cpp
│ ├── fake_get_symbol.cpp
│ ├── fake_thread_pool.cpp
│ ├── float16_t.cpp
│ ├── fopen.cpp
│ ├── fopen_lfs.cpp
│ ├── force_include_types.cpp
│ ├── fuchsia_clock.cpp
│ ├── fuchsia_host_cpu_count.cpp
│ ├── fuchsia_yield.cpp
│ ├── gpu_context_common.h
│ ├── gpu_device_selection.cpp
│ ├── halide_buffer_t.cpp
│ ├── hashmap.h
│ ├── hexagon_cache_allocator.cpp
│ ├── hexagon_cpu_features.cpp
│ ├── hexagon_dma.cpp
│ ├── hexagon_dma_pool.cpp
│ ├── hexagon_dma_pool.h
│ ├── hexagon_host.cpp
│ ├── hexagon_remote
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── Makefile
│ ├── android
│ │ ├── CMakeLists.txt
│ │ ├── host_malloc.cpp
│ │ ├── host_shim.cpp
│ │ └── libadsprpc_shim.cpp
│ ├── bin
│ │ ├── arm-32-android
│ │ │ └── libhalide_hexagon_host.so
│ │ ├── arm-64-android
│ │ │ └── libhalide_hexagon_host.so
│ │ ├── host
│ │ │ └── libhalide_hexagon_host.so
│ │ ├── src
│ │ │ ├── halide_hexagon_remote.h
│ │ │ ├── halide_hexagon_remote_skel.c
│ │ │ └── halide_hexagon_remote_stub.c
│ │ └── v65
│ │ │ ├── hexagon_sim_remote
│ │ │ ├── libhalide_hexagon_remote_skel.so
│ │ │ └── libsim_qurt.a
│ ├── halide_hexagon_remote.idl
│ ├── instruction_encodings.txt
│ ├── qurt
│ │ ├── CMakeLists.txt
│ │ ├── c11_stubs.cpp
│ │ ├── halide_remote.cpp
│ │ ├── known_symbols.cpp
│ │ ├── known_symbols.h
│ │ ├── log.cpp
│ │ ├── log.h
│ │ ├── nearbyint.cpp
│ │ ├── sim_qurt.cpp
│ │ ├── sim_qurt_vtcm.cpp
│ │ └── sim_remote.cpp
│ ├── sim_host.cpp
│ └── sim_protocol.h
│ ├── hvx_128.ll
│ ├── internal
│ ├── block_allocator.h
│ ├── block_storage.h
│ ├── linked_list.h
│ ├── memory_arena.h
│ ├── memory_resources.h
│ ├── pointer_table.h
│ ├── region_allocator.h
│ ├── string_storage.h
│ └── string_table.h
│ ├── ios_io.cpp
│ ├── linux_aarch64_cpu_features.cpp
│ ├── linux_arm_cpu_features.cpp
│ ├── linux_clock.cpp
│ ├── linux_host_cpu_count.cpp
│ ├── linux_yield.cpp
│ ├── metal.cpp
│ ├── metal_objc_arm.cpp
│ ├── metal_objc_platform_dependent.cpp
│ ├── metal_objc_platform_dependent.h
│ ├── metal_objc_x86.cpp
│ ├── mini_cl.h
│ ├── mini_cuda.h
│ ├── mini_d3d12.h
│ ├── mini_hexagon_dma.h
│ ├── mini_qurt.h
│ ├── mini_qurt_vtcm.h
│ ├── mini_webgpu.h
│ ├── module_aot_ref_count.cpp
│ ├── module_jit_ref_count.cpp
│ ├── msan.cpp
│ ├── msan_stubs.cpp
│ ├── nvidia_libdevice_bitcode
│ ├── libdevice.compute_20.10.bc
│ ├── libdevice.compute_30.10.bc
│ └── libdevice.compute_35.10.bc
│ ├── objc_support.h
│ ├── opencl.cpp
│ ├── osx_aarch64_cpu_features.cpp
│ ├── osx_arm_cpu_features.cpp
│ ├── osx_clock.cpp
│ ├── osx_get_symbol.cpp
│ ├── osx_host_cpu_count.cpp
│ ├── osx_yield.cpp
│ ├── posix_aligned_alloc.cpp
│ ├── posix_allocator.cpp
│ ├── posix_clock.cpp
│ ├── posix_error_handler.cpp
│ ├── posix_get_symbol.cpp
│ ├── posix_io.cpp
│ ├── posix_math.ll
│ ├── posix_print.cpp
│ ├── posix_threads.cpp
│ ├── posix_threads_tsan.cpp
│ ├── posix_timer_profiler.cpp
│ ├── posix_timeval.h
│ ├── powerpc.ll
│ ├── powerpc_cpu_features.cpp
│ ├── prefetch.cpp
│ ├── printer.h
│ ├── profiler.cpp
│ ├── profiler_common.cpp
│ ├── profiler_inlined.cpp
│ ├── pseudostack.cpp
│ ├── ptx_dev.ll
│ ├── qurt_allocator.cpp
│ ├── qurt_hvx.cpp
│ ├── qurt_hvx_vtcm.cpp
│ ├── qurt_threads.cpp
│ ├── qurt_threads_tsan.cpp
│ ├── qurt_yield.cpp
│ ├── riscv_cpu_features.cpp
│ ├── runtime_api.cpp
│ ├── runtime_atomics.h
│ ├── runtime_internal.h
│ ├── scoped_mutex_lock.h
│ ├── scoped_spin_lock.h
│ ├── synchronization_common.h
│ ├── thread_pool_common.h
│ ├── timer_profiler.cpp
│ ├── to_string.cpp
│ ├── trace_helper.cpp
│ ├── tracing.cpp
│ ├── vulkan.cpp
│ ├── vulkan_context.h
│ ├── vulkan_extensions.h
│ ├── vulkan_functions.h
│ ├── vulkan_interface.h
│ ├── vulkan_internal.h
│ ├── vulkan_memory.h
│ ├── vulkan_resources.h
│ ├── wasm_cpu_features.cpp
│ ├── wasm_math.ll
│ ├── webgpu.cpp
│ ├── webgpu_dawn.cpp
│ ├── webgpu_emscripten.cpp
│ ├── win32_math.ll
│ ├── windows_aarch64_cpu_features_arm.cpp
│ ├── windows_clock.cpp
│ ├── windows_cuda.cpp
│ ├── windows_d3d12compute_arm.cpp
│ ├── windows_d3d12compute_x86.cpp
│ ├── windows_get_symbol.cpp
│ ├── windows_io.cpp
│ ├── windows_opencl.cpp
│ ├── windows_profiler.cpp
│ ├── windows_threads.cpp
│ ├── windows_threads_tsan.cpp
│ ├── windows_vulkan.cpp
│ ├── windows_yield.cpp
│ ├── write_debug_image.cpp
│ ├── x86.ll
│ ├── x86_amx.ll
│ ├── x86_avx.ll
│ ├── x86_avx2.ll
│ ├── x86_avx512.ll
│ ├── x86_cpu_features.cpp
│ └── x86_sse41.ll
├── test
├── CMakeLists.txt
├── autoschedulers
│ ├── CMakeLists.txt
│ ├── adams2019
│ │ ├── CMakeLists.txt
│ │ ├── demo_generator.cpp
│ │ ├── included_schedule_file.schedule.h
│ │ ├── included_schedule_file_generator.cpp
│ │ └── test.cpp
│ ├── anderson2021
│ │ ├── CMakeLists.txt
│ │ ├── demo_generator.cpp
│ │ ├── included_schedule_file.schedule.h
│ │ ├── included_schedule_file_generator.cpp
│ │ └── test.cpp
│ ├── li2018
│ │ ├── CMakeLists.txt
│ │ ├── demo_generator.cpp
│ │ ├── test.cpp
│ │ └── test.py
│ └── mullapudi2016
│ │ ├── CMakeLists.txt
│ │ ├── cost_function.cpp
│ │ ├── data_dependent.cpp
│ │ ├── extern.cpp
│ │ ├── fibonacci.cpp
│ │ ├── histogram.cpp
│ │ ├── large_window.cpp
│ │ ├── mat_mul.cpp
│ │ ├── max_filter.cpp
│ │ ├── multi_output.cpp
│ │ ├── overlap.cpp
│ │ ├── param.cpp
│ │ ├── reorder.cpp
│ │ ├── small_pure_update.cpp
│ │ ├── tile_vs_inline.cpp
│ │ ├── unused_func.cpp
│ │ └── vectorize_var_in_update.cpp
├── common
│ ├── check_call_graphs.h
│ ├── expect_abort.cpp
│ ├── expect_failure.sh
│ ├── gpu_context.h
│ ├── gpu_object_lifetime_tracker.h
│ ├── halide_test_dirs.h
│ ├── terminate_handler.cpp
│ └── test_sharding.h
├── correctness
│ ├── CMakeLists.txt
│ ├── align_bounds.cpp
│ ├── argmax.cpp
│ ├── assertion_failure_in_parallel_for.cpp
│ ├── async.cpp
│ ├── async_copy_chain.cpp
│ ├── async_device_copy.cpp
│ ├── async_order.cpp
│ ├── atomic_tuples.cpp
│ ├── atomics.cpp
│ ├── autodiff.cpp
│ ├── bad_likely.cpp
│ ├── bit_counting.cpp
│ ├── bitwise_ops.cpp
│ ├── bool_compute_root_vectorize.cpp
│ ├── bool_predicate_cast.cpp
│ ├── bound.cpp
│ ├── bound_small_allocations.cpp
│ ├── bound_storage.cpp
│ ├── boundary_conditions.cpp
│ ├── bounds.cpp
│ ├── bounds_inference.cpp
│ ├── bounds_inference_chunk.cpp
│ ├── bounds_inference_complex.cpp
│ ├── bounds_inference_outer_split.cpp
│ ├── bounds_of_abs.cpp
│ ├── bounds_of_cast.cpp
│ ├── bounds_of_func.cpp
│ ├── bounds_of_monotonic_math.cpp
│ ├── bounds_of_multiply.cpp
│ ├── bounds_of_split.cpp
│ ├── bounds_query.cpp
│ ├── bounds_query_respects_specialize_fail.cpp
│ ├── buffer_t.cpp
│ ├── c_function.cpp
│ ├── callable.cpp
│ ├── callable_errors.cpp
│ ├── callable_generator.cpp
│ ├── callable_typed.cpp
│ ├── cascaded_filters.cpp
│ ├── cast.cpp
│ ├── cast_handle.cpp
│ ├── chunk.cpp
│ ├── chunk_sharing.cpp
│ ├── circular_reference_leak.cpp
│ ├── code_explosion.cpp
│ ├── compare_vars.cpp
│ ├── compile_to.cpp
│ ├── compile_to_bitcode.cpp
│ ├── compile_to_lowered_stmt.cpp
│ ├── compile_to_multitarget.cpp
│ ├── compute_at_reordered_update_stage.cpp
│ ├── compute_at_split_rvar.cpp
│ ├── compute_inside_guard.cpp
│ ├── compute_outermost.cpp
│ ├── compute_with.cpp
│ ├── compute_with_in.cpp
│ ├── compute_with_inlined.cpp
│ ├── computed_index.cpp
│ ├── concat.cpp
│ ├── constant_expr.cpp
│ ├── constant_interval.cpp
│ ├── constant_type.cpp
│ ├── constraints.cpp
│ ├── convolution.cpp
│ ├── convolution_multiple_kernels.cpp
│ ├── cross_compilation.cpp
│ ├── cse_name_collision.cpp
│ ├── cse_nan.cpp
│ ├── cuda_8_bit_dot_product.cpp
│ ├── custom_allocator.cpp
│ ├── custom_auto_scheduler.cpp
│ ├── custom_cuda_context.cpp
│ ├── custom_error_reporter.cpp
│ ├── custom_jit_context.cpp
│ ├── custom_lowering_pass.cpp
│ ├── dead_realization_in_specialization.cpp
│ ├── debug_to_file.cpp
│ ├── debug_to_file_multiple_outputs.cpp
│ ├── debug_to_file_reorder.cpp
│ ├── deferred_loop_level.cpp
│ ├── deinterleave4.cpp
│ ├── device_buffer_copies_with_profile.cpp
│ ├── device_buffer_copy.cpp
│ ├── device_copy_at_inner_loop.cpp
│ ├── device_crop.cpp
│ ├── device_slice.cpp
│ ├── dilate3x3.cpp
│ ├── div_by_zero.cpp
│ ├── div_round_to_zero.cpp
│ ├── dynamic_allocation_in_gpu_kernel.cpp
│ ├── dynamic_reduction_bounds.cpp
│ ├── early_out.cpp
│ ├── embed_bitcode.cpp
│ ├── erf.cpp
│ ├── exception.cpp
│ ├── explicit_inline_reductions.cpp
│ ├── extern_bounds_inference.cpp
│ ├── extern_consumer.cpp
│ ├── extern_consumer_tiled.cpp
│ ├── extern_error.cpp
│ ├── extern_output_expansion.cpp
│ ├── extern_partial.cpp
│ ├── extern_producer.cpp
│ ├── extern_reorder_storage.cpp
│ ├── extern_sort.cpp
│ ├── extern_stage.cpp
│ ├── extern_stage_on_device.cpp
│ ├── extract_concat_bits.cpp
│ ├── failed_unroll.cpp
│ ├── fast_trigonometric.cpp
│ ├── fibonacci.cpp
│ ├── fit_function.cpp
│ ├── float16_t.cpp
│ ├── float16_t_comparison.cpp
│ ├── float16_t_constants.cpp
│ ├── float16_t_image_type.cpp
│ ├── float16_t_neon_op_check.cpp
│ ├── for_each_element.cpp
│ ├── force_onto_stack.cpp
│ ├── func_clone.cpp
│ ├── func_lifetime.cpp
│ ├── func_lifetime_2.cpp
│ ├── func_wrapper.cpp
│ ├── fuse.cpp
│ ├── fuse_gpu_threads.cpp
│ ├── fused_where_inner_extent_is_zero.cpp
│ ├── fuzz_float_stores.cpp
│ ├── fuzz_schedule.cpp
│ ├── fuzz_simplify.cpp
│ ├── gameoflife.cpp
│ ├── gather.cpp
│ ├── gpu_alloc_group_profiling.cpp
│ ├── gpu_allocation_cache.cpp
│ ├── gpu_arg_types.cpp
│ ├── gpu_assertion_in_kernel.cpp
│ ├── gpu_bounds_inference_failure.cpp
│ ├── gpu_condition_lifting.cpp
│ ├── gpu_cpu_simultaneous_read.cpp
│ ├── gpu_data_flows.cpp
│ ├── gpu_different_blocks_threads_dimensions.cpp
│ ├── gpu_dynamic_shared.cpp
│ ├── gpu_f16_intrinsics.cpp
│ ├── gpu_free_sync.cpp
│ ├── gpu_give_input_buffers_device_allocations.cpp
│ ├── gpu_jit_explicit_copy_to_device.cpp
│ ├── gpu_large_alloc.cpp
│ ├── gpu_many_kernels.cpp
│ ├── gpu_metal_completion_handler_error_check.cpp
│ ├── gpu_mixed_dimensionality.cpp
│ ├── gpu_mixed_shared_mem_types.cpp
│ ├── gpu_multi_device.cpp
│ ├── gpu_multi_kernel.cpp
│ ├── gpu_non_contiguous_copy.cpp
│ ├── gpu_non_monotonic_shared_mem_size.cpp
│ ├── gpu_object_lifetime_1.cpp
│ ├── gpu_object_lifetime_2.cpp
│ ├── gpu_object_lifetime_3.cpp
│ ├── gpu_param_allocation.cpp
│ ├── gpu_reuse_shared_memory.cpp
│ ├── gpu_specialize.cpp
│ ├── gpu_store_in_register_with_no_lanes_loop.cpp
│ ├── gpu_sum_scan.cpp
│ ├── gpu_texture.cpp
│ ├── gpu_thread_barrier.cpp
│ ├── gpu_transpose.cpp
│ ├── gpu_vectorize.cpp
│ ├── gpu_vectorized_shared_memory.cpp
│ ├── growing_stack.cpp
│ ├── half_native_interleave.cpp
│ ├── halide_buffer.cpp
│ ├── handle.cpp
│ ├── heap_cleanup.cpp
│ ├── hello_gpu.cpp
│ ├── hexagon_scatter.cpp
│ ├── histogram.cpp
│ ├── histogram_equalize.cpp
│ ├── hoist_loop_invariant_if_statements.cpp
│ ├── hoist_storage.cpp
│ ├── host_alignment.cpp
│ ├── image_io.cpp
│ ├── image_of_lists.cpp
│ ├── image_wrapper.cpp
│ ├── implicit_args.cpp
│ ├── implicit_args_tests.cpp
│ ├── in_place.cpp
│ ├── indexing_access_undef.cpp
│ ├── infer_arguments.cpp
│ ├── inline_reduction.cpp
│ ├── inlined_generator.cpp
│ ├── input_image_bounds_check.cpp
│ ├── input_larger_than_two_gigs.cpp
│ ├── integer_powers.cpp
│ ├── interleave.cpp
│ ├── interleave_rgb.cpp
│ ├── interleave_x.cpp
│ ├── interpreter.cpp
│ ├── interval.cpp
│ ├── intrinsics.cpp
│ ├── invalid_gpu_loop_nests.cpp
│ ├── inverse.cpp
│ ├── isnan.cpp
│ ├── issue_3926.cpp
│ ├── iterate_over_circle.cpp
│ ├── lambda.cpp
│ ├── lazy_convolution.cpp
│ ├── leak_device_memory.cpp
│ ├── left_shift_negative.cpp
│ ├── legal_race_condition.cpp
│ ├── lerp.cpp
│ ├── let_in_rdom_bound.cpp
│ ├── likely.cpp
│ ├── load_library.cpp
│ ├── logical.cpp
│ ├── loop_carry.cpp
│ ├── loop_invariant_extern_calls.cpp
│ ├── loop_level_generator_param.cpp
│ ├── lossless_cast.cpp
│ ├── lots_of_dimensions.cpp
│ ├── lots_of_loop_invariants.cpp
│ ├── low_bit_depth_noise.cpp
│ ├── make_struct.cpp
│ ├── many_dimensions.cpp
│ ├── many_small_extern_stages.cpp
│ ├── many_updates.cpp
│ ├── math.cpp
│ ├── median3x3.cpp
│ ├── memoize.cpp
│ ├── memoize_cloned.cpp
│ ├── min_extent.cpp
│ ├── mod.cpp
│ ├── mul_div_mod.cpp
│ ├── multi_output_pipeline_with_bad_sizes.cpp
│ ├── multi_pass_reduction.cpp
│ ├── multi_splits_with_diff_tail_strategies.cpp
│ ├── multi_way_select.cpp
│ ├── multipass_constraints.cpp
│ ├── multiple_outputs.cpp
│ ├── multiple_outputs_extern.cpp
│ ├── multiple_scatter.cpp
│ ├── mux.cpp
│ ├── named_updates.cpp
│ ├── narrow_predicates.cpp
│ ├── negative_split_factors.cpp
│ ├── nested_shiftinwards.cpp
│ ├── nested_tail_strategies.cpp
│ ├── newtons_method.cpp
│ ├── non_nesting_extern_bounds_query.cpp
│ ├── non_vector_aligned_embeded_buffer.cpp
│ ├── obscure_image_references.cpp
│ ├── oddly_sized_output.cpp
│ ├── out_constraint.cpp
│ ├── out_of_memory.cpp
│ ├── output_larger_than_two_gigs.cpp
│ ├── parallel.cpp
│ ├── parallel_alloc.cpp
│ ├── parallel_fork.cpp
│ ├── parallel_gpu_nested.cpp
│ ├── parallel_nested.cpp
│ ├── parallel_nested_1.cpp
│ ├── parallel_reductions.cpp
│ ├── parallel_rvar.cpp
│ ├── parallel_scatter.cpp
│ ├── param.cpp
│ ├── parameter_constraints.cpp
│ ├── partial_application.cpp
│ ├── partial_realization.cpp
│ ├── partition_loops.cpp
│ ├── partition_loops_bug.cpp
│ ├── partition_max_filter.cpp
│ ├── pipeline_set_jit_externs_func.cpp
│ ├── plain_c_includes.c
│ ├── popc_clz_ctz_bounds.cpp
│ ├── predicated_store_load.cpp
│ ├── prefetch.cpp
│ ├── print.cpp
│ ├── print_loop_nest.cpp
│ ├── process_some_tiles.cpp
│ ├── pseudostack_shares_slots.cpp
│ ├── python_extension_gen.cpp
│ ├── pytorch.cpp
│ ├── random.cpp
│ ├── realize_condition_depends_on_tuple.cpp
│ ├── realize_larger_than_two_gigs.cpp
│ ├── realize_over_shifted_domain.cpp
│ ├── recursive_box_filters.cpp
│ ├── reduction_chain.cpp
│ ├── reduction_non_rectangular.cpp
│ ├── reduction_predicate_racing.cpp
│ ├── reduction_schedule.cpp
│ ├── register_shuffle.cpp
│ ├── reorder_rvars.cpp
│ ├── reorder_storage.cpp
│ ├── require.cpp
│ ├── reschedule.cpp
│ ├── respect_input_constraint_in_bounds_inference.cpp
│ ├── reuse_stack_alloc.cpp
│ ├── rfactor.cpp
│ ├── ring_buffer.cpp
│ ├── round.cpp
│ ├── saturating_casts.cpp
│ ├── scatter.cpp
│ ├── set_custom_trace.cpp
│ ├── shadowed_bound.cpp
│ ├── shared_self_references.cpp
│ ├── shift_by_unsigned_negated.cpp
│ ├── shifted_image.cpp
│ ├── side_effects.cpp
│ ├── simd_op_check.h
│ ├── simd_op_check_arm.cpp
│ ├── simd_op_check_hvx.cpp
│ ├── simd_op_check_powerpc.cpp
│ ├── simd_op_check_riscv.cpp
│ ├── simd_op_check_sve2.cpp
│ ├── simd_op_check_wasm.cpp
│ ├── simd_op_check_x86.cpp
│ ├── simplified_away_embedded_image.cpp
│ ├── simplify.cpp
│ ├── skip_stages.cpp
│ ├── skip_stages_external_array_functions.cpp
│ ├── skip_stages_memoize.cpp
│ ├── sliding_backwards.cpp
│ ├── sliding_over_guard_with_if.cpp
│ ├── sliding_reduction.cpp
│ ├── sliding_window.cpp
│ ├── sort_exprs.cpp
│ ├── specialize.cpp
│ ├── specialize_to_gpu.cpp
│ ├── specialize_trim_condition.cpp
│ ├── split_by_non_factor.cpp
│ ├── split_fuse_rvar.cpp
│ ├── split_reuse_inner_name_bug.cpp
│ ├── split_store_compute.cpp
│ ├── stable_realization_order.cpp
│ ├── stack_allocations.cpp
│ ├── stage_strided_loads.cpp
│ ├── stencil_chain_in_update_definitions.cpp
│ ├── stmt_to_html.cpp
│ ├── storage_folding.cpp
│ ├── store_in.cpp
│ ├── stream_compaction.cpp
│ ├── strict_float.cpp
│ ├── strict_float_bounds.cpp
│ ├── strided_load.cpp
│ ├── target.cpp
│ ├── target_query.cpp
│ ├── thread_safety.cpp
│ ├── tiled_matmul.cpp
│ ├── tracing.cpp
│ ├── tracing_bounds.cpp
│ ├── tracing_broadcast.cpp
│ ├── tracing_stack.cpp
│ ├── transitive_bounds.cpp
│ ├── trim_no_ops.cpp
│ ├── truncated_pyramid.cpp
│ ├── tuple_partial_update.cpp
│ ├── tuple_reduction.cpp
│ ├── tuple_select.cpp
│ ├── tuple_undef.cpp
│ ├── tuple_update_ops.cpp
│ ├── tuple_vector_reduce.cpp
│ ├── two_vector_args.cpp
│ ├── typed_func.cpp
│ ├── undef.cpp
│ ├── uninitialized_read.cpp
│ ├── unique_func_image.cpp
│ ├── unroll_dynamic_loop.cpp
│ ├── unroll_huge_mux.cpp
│ ├── unroll_loop_with_implied_constant_bounds.cpp
│ ├── unrolled_reduction.cpp
│ ├── unsafe_dedup_lets.cpp
│ ├── unsafe_promises.cpp
│ ├── unused_func.cpp
│ ├── update_chunk.cpp
│ ├── vector_bounds_inference.cpp
│ ├── vector_cast.cpp
│ ├── vector_extern.cpp
│ ├── vector_math.cpp
│ ├── vector_print_bug.cpp
│ ├── vector_reductions.cpp
│ ├── vector_shuffle.cpp
│ ├── vector_tile.cpp
│ ├── vectorize_guard_with_if.cpp
│ ├── vectorize_mixed_widths.cpp
│ ├── vectorize_nested.cpp
│ ├── vectorize_varying_allocation_size.cpp
│ ├── vectorized_assert.cpp
│ ├── vectorized_gpu_allocation.cpp
│ ├── vectorized_guard_with_if_tail.cpp
│ ├── vectorized_initialization.cpp
│ ├── vectorized_load_from_vectorized_allocation.cpp
│ ├── vectorized_reduction_bug.cpp
│ ├── widening_lerp.cpp
│ └── widening_reduction.cpp
├── error
│ ├── CMakeLists.txt
│ ├── ambiguous_inline_reductions.cpp
│ ├── async_require_fail.cpp
│ ├── atomics_gpu_8_bit.cpp
│ ├── atomics_gpu_mutex.cpp
│ ├── atomics_self_reference.cpp
│ ├── auto_schedule_no_parallel.cpp
│ ├── auto_schedule_no_reorder.cpp
│ ├── autodiff_unbounded.cpp
│ ├── bad_async_producer.cpp
│ ├── bad_async_producer_2.cpp
│ ├── bad_bound.cpp
│ ├── bad_bound_storage.cpp
│ ├── bad_compute_at.cpp
│ ├── bad_compute_with.cpp
│ ├── bad_compute_with_invalid_specialization.cpp
│ ├── bad_compute_with_parent_func_not_used.cpp
│ ├── bad_const_cast.cpp
│ ├── bad_device_api.cpp
│ ├── bad_dimensions.cpp
│ ├── bad_extern_split.cpp
│ ├── bad_fold.cpp
│ ├── bad_hoist_storage.cpp
│ ├── bad_host_alignment.cpp
│ ├── bad_partition_always.cpp
│ ├── bad_prefetch.cpp
│ ├── bad_reorder.cpp
│ ├── bad_reorder_storage.cpp
│ ├── bad_ring_buffer.cpp
│ ├── bad_rvar_order.cpp
│ ├── bad_schedule.cpp
│ ├── bad_store_at.cpp
│ ├── broken_promise.cpp
│ ├── buffer_larger_than_two_gigs.cpp
│ ├── callable_bad_arguments.cpp
│ ├── callable_bad_values_passed.cpp
│ ├── callable_typed_bad_arguments.cpp
│ ├── callable_typed_bad_arguments_buffer_dims.cpp
│ ├── callable_typed_bad_arguments_buffer_type.cpp
│ ├── clamp_out_of_range.cpp
│ ├── compute_with_crossing_edges1.cpp
│ ├── compute_with_crossing_edges2.cpp
│ ├── compute_with_fuse_in_specialization.cpp
│ ├── constrain_wrong_output_buffer.cpp
│ ├── constraint_uses_non_param.cpp
│ ├── define_after_realize.cpp
│ ├── define_after_use.cpp
│ ├── device_dirty_with_no_device_support.cpp
│ ├── device_target_mismatch.cpp
│ ├── dupe_param_name.cpp
│ ├── expanding_reduction.cpp
│ ├── extern_func_self_argument.cpp
│ ├── five_d_gpu_buffer.cpp
│ ├── float_arg.cpp
│ ├── forward_on_undefined_buffer.cpp
│ ├── func_expr_dim_mismatch.cpp
│ ├── func_expr_type_mismatch.cpp
│ ├── func_expr_update_type_mismatch.cpp
│ ├── func_extern_dim_mismatch.cpp
│ ├── func_extern_type_mismatch.cpp
│ ├── func_tuple_dim_mismatch.cpp
│ ├── func_tuple_types_mismatch.cpp
│ ├── func_tuple_update_types_mismatch.cpp
│ ├── fuse_vectorized_var_with_rvar.cpp
│ ├── hoist_storage_without_compute_at.cpp
│ ├── implicit_args.cpp
│ ├── impossible_constraints.cpp
│ ├── incomplete_target.cpp
│ ├── init_def_should_be_all_vars.cpp
│ ├── inspect_loop_level.cpp
│ ├── lerp_float_weight_out_of_range.cpp
│ ├── lerp_mismatch.cpp
│ ├── lerp_signed_weight.cpp
│ ├── memoize_different_compute_store.cpp
│ ├── memoize_redefine_eviction_key.cpp
│ ├── metal_threads_too_large.cpp
│ ├── metal_vector_too_large.cpp
│ ├── missing_args.cpp
│ ├── no_default_device.cpp
│ ├── nonexistent_update_stage.cpp
│ ├── null_host_field.cpp
│ ├── overflow_during_constant_folding.cpp
│ ├── pointer_arithmetic.cpp
│ ├── predicate_loads_used_in_inner_splits.cpp
│ ├── race_condition.cpp
│ ├── rdom_undefined.cpp
│ ├── rdom_where_races.cpp
│ ├── realization_with_too_many_outputs.cpp
│ ├── realize_constantly_larger_than_two_gigs.cpp
│ ├── reduction_bounds.cpp
│ ├── reduction_type_mismatch.cpp
│ ├── require_fail.cpp
│ ├── reuse_var_in_schedule.cpp
│ ├── reused_args.cpp
│ ├── rfactor_after_var_and_rvar_fusion.cpp
│ ├── rfactor_fused_var_and_rvar.cpp
│ ├── rfactor_inner_dim_non_commutative.cpp
│ ├── round_up_and_blend_race.cpp
│ ├── run_with_large_stack_throws.cpp
│ ├── shift_inwards_and_blend_race.cpp
│ ├── specialize_fail.cpp
│ ├── split_inner_wrong_tail_strategy.cpp
│ ├── split_non_innermost_predicated.cpp
│ ├── split_same_var_names.cpp
│ ├── store_at_without_compute_at.cpp
│ ├── thread_id_outside_block_id.cpp
│ ├── too_many_args.cpp
│ ├── treat_rvar_as_var.cpp
│ ├── tuple_arg_select_undef.cpp
│ ├── tuple_output_bounds_check.cpp
│ ├── tuple_realization_to_buffer.cpp
│ ├── tuple_val_select_undef.cpp
│ ├── unbounded_input.cpp
│ ├── unbounded_output.cpp
│ ├── undefined_func_compile.cpp
│ ├── undefined_func_realize.cpp
│ ├── undefined_loop_level.cpp
│ ├── undefined_pipeline_compile.cpp
│ ├── undefined_pipeline_realize.cpp
│ ├── undefined_rdom_dimension.cpp
│ ├── uninitialized_param.cpp
│ ├── uninitialized_param_2.cpp
│ ├── unknown_target.cpp
│ ├── vector_tile.cpp
│ ├── vectorize_dynamic.cpp
│ ├── vectorize_too_little.cpp
│ ├── vectorize_too_much.cpp
│ ├── vectorized_extern.cpp
│ ├── wrap_custom_after_shared.cpp
│ ├── wrap_frozen.cpp
│ ├── wrapper_never_used.cpp
│ ├── wrong_dimensionality_extern_stage.cpp
│ └── wrong_type.cpp
├── failing_with_issue
│ ├── 3292_async_specialize.cpp
│ ├── 3293_storage_folding_async.cpp
│ ├── 3357_vectorize_pred.cpp
│ └── CMakeLists.txt
├── fuzz
│ ├── CMakeLists.txt
│ ├── bounds.cpp
│ ├── cse.cpp
│ └── fuzz_helpers.h
├── generator
│ ├── CMakeLists.txt
│ ├── abstractgeneratortest_aottest.cpp
│ ├── abstractgeneratortest_generator.cpp
│ ├── acquire_release_aottest.cpp
│ ├── acquire_release_generator.cpp
│ ├── alias_aottest.cpp
│ ├── alias_generator.cpp
│ ├── all_type_names_aottest.cpp
│ ├── all_type_names_generator.cpp
│ ├── argvcall_aottest.cpp
│ ├── argvcall_generator.cpp
│ ├── async_parallel_aottest.cpp
│ ├── async_parallel_generator.cpp
│ ├── autograd_aottest.cpp
│ ├── autograd_generator.cpp
│ ├── bit_operations_aottest.cpp
│ ├── bit_operations_generator.cpp
│ ├── blur2x2_aottest.cpp
│ ├── blur2x2_generator.cpp
│ ├── buffer_copy_aottest.cpp
│ ├── buffer_copy_generator.cpp
│ ├── can_use_target_aottest.cpp
│ ├── can_use_target_generator.cpp
│ ├── cleanup_on_error_aottest.cpp
│ ├── cleanup_on_error_generator.cpp
│ ├── configure_aottest.cpp
│ ├── configure_generator.cpp
│ ├── configure_jittest.cpp
│ ├── cxx_mangling_aottest.cpp
│ ├── cxx_mangling_define_extern_aottest.cpp
│ ├── cxx_mangling_define_extern_externs.cpp
│ ├── cxx_mangling_define_extern_generator.cpp
│ ├── cxx_mangling_externs.cpp
│ ├── cxx_mangling_generator.cpp
│ ├── define_extern_opencl_aottest.cpp
│ ├── define_extern_opencl_generator.cpp
│ ├── embed_image_aottest.cpp
│ ├── embed_image_generator.cpp
│ ├── error_codes_aottest.cpp
│ ├── error_codes_generator.cpp
│ ├── example_aottest.cpp
│ ├── example_generator.cpp
│ ├── example_jittest.cpp
│ ├── extern_output_aottest.cpp
│ ├── extern_output_generator.cpp
│ ├── float16_t_aottest.cpp
│ ├── float16_t_generator.cpp
│ ├── gpu_multi_context_threaded_aottest.cpp
│ ├── gpu_multi_context_threaded_generator.cpp
│ ├── gpu_object_lifetime_aottest.cpp
│ ├── gpu_object_lifetime_generator.cpp
│ ├── gpu_only_aottest.cpp
│ ├── gpu_only_generator.cpp
│ ├── gpu_texture_aottest.cpp
│ ├── gpu_texture_generator.cpp
│ ├── image_from_array_aottest.cpp
│ ├── image_from_array_generator.cpp
│ ├── mandelbrot_aottest.cpp
│ ├── mandelbrot_generator.cpp
│ ├── memory_profiler_mandelbrot_aottest.cpp
│ ├── memory_profiler_mandelbrot_generator.cpp
│ ├── metadata_tester_aottest.cpp
│ ├── metadata_tester_generator.cpp
│ ├── metal_completion_handler_override_aottest.cpp
│ ├── metal_completion_handler_override_generator.cpp
│ ├── msan_aottest.cpp
│ ├── msan_generator.cpp
│ ├── multitarget_aottest.cpp
│ ├── multitarget_generator.cpp
│ ├── nested_externs_aottest.cpp
│ ├── nested_externs_generator.cpp
│ ├── opencl_runtime_aottest.cpp
│ ├── opencl_runtime_generator.cpp
│ ├── output_assign_aottest.cpp
│ ├── output_assign_generator.cpp
│ ├── pyramid_aottest.cpp
│ ├── pyramid_generator.cpp
│ ├── rdom_input_aottest.cpp
│ ├── rdom_input_generator.cpp
│ ├── registration_test.cpp
│ ├── rungen_test.cpp
│ ├── sanitizercoverage_aottest.cpp
│ ├── sanitizercoverage_generator.cpp
│ ├── shuffler_aottest.cpp
│ ├── shuffler_generator.cpp
│ ├── string_param_aottest.cpp
│ ├── string_param_generator.cpp
│ ├── stubtest_aottest.cpp
│ ├── stubtest_generator.cpp
│ ├── stubtest_jittest.cpp
│ ├── stubuser_aottest.cpp
│ ├── stubuser_generator.cpp
│ ├── templated_aottest.cpp
│ ├── templated_generator.cpp
│ ├── tiled_blur_aottest.cpp
│ ├── tiled_blur_generator.cpp
│ ├── user_context_aottest.cpp
│ ├── user_context_generator.cpp
│ ├── user_context_insanity_aottest.cpp
│ ├── user_context_insanity_generator.cpp
│ ├── variable_num_threads_aottest.cpp
│ └── variable_num_threads_generator.cpp
├── integration
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── aot
│ │ ├── CMakeLists.txt
│ │ └── add.cpp
│ ├── jit
│ │ ├── CMakeLists.txt
│ │ └── main.cpp
│ └── xc
│ │ ├── CMakeLists.txt
│ │ └── add.cpp
├── internal.cpp
├── performance
│ ├── CMakeLists.txt
│ ├── async_gpu.cpp
│ ├── blend_tail_strategies.cpp
│ ├── block_transpose.cpp
│ ├── boundary_conditions.cpp
│ ├── clamped_vector_load.cpp
│ ├── const_division.cpp
│ ├── fan_in.cpp
│ ├── fast_inverse.cpp
│ ├── fast_pow.cpp
│ ├── fast_sine_cosine.cpp
│ ├── gpu_half_throughput.cpp
│ ├── inner_loop_parallel.cpp
│ ├── jit_stress.cpp
│ ├── lots_of_inputs.cpp
│ ├── lots_of_small_allocations.cpp
│ ├── matrix_multiplication.cpp
│ ├── memcpy.cpp
│ ├── memory_profiler.cpp
│ ├── nested_vectorization_gemm.cpp
│ ├── packed_planar_fusion.cpp
│ ├── parallel_performance.cpp
│ ├── parallel_scenarios.cpp
│ ├── profiler.cpp
│ ├── realize_overhead.cpp
│ ├── rfactor.cpp
│ ├── rgb_interleaved.cpp
│ ├── sort.cpp
│ ├── stack_vs_heap.cpp
│ ├── thread_safe_jit_callable.cpp
│ ├── tiled_matmul.cpp
│ ├── vectorize.cpp
│ └── wrap.cpp
├── runtime
│ ├── CMakeLists.txt
│ ├── block_allocator.cpp
│ ├── block_storage.cpp
│ ├── common.cpp
│ ├── common.h
│ ├── linked_list.cpp
│ ├── memory_arena.cpp
│ ├── string_storage.cpp
│ └── string_table.cpp
└── warning
│ ├── CMakeLists.txt
│ ├── emulated_float16.cpp
│ ├── hidden_pure_definition.cpp
│ ├── require_const_false.cpp
│ ├── sliding_vectors.cpp
│ └── unscheduled_update_def.cpp
├── tools
├── CMakeLists.txt
├── GenGen.cpp
├── RunGen.h
├── RunGenMain.cpp
├── binary2cpp.cpp
├── build_halide_h.cpp
├── find_inverse.cpp
├── halide_benchmark.h
├── halide_config.make.tpl
├── halide_image.h
├── halide_image_info.h
├── halide_image_io.h
├── halide_malloc_trace.h
├── halide_thread_pool.h
├── halide_trace_config.h
├── launch_wasm_test.js
├── lldbhalide.py
├── makelib.sh
└── regexp_replace.cpp
├── tutorial
├── .clang-format
├── .gitignore
├── CMakeLists.txt
├── clock.h
├── figures
│ ├── generate_figures_17.sh
│ ├── generate_figures_18.sh
│ ├── generate_figures_19.sh
│ ├── generate_figures_5.sh
│ ├── generate_figures_8.sh
│ ├── generate_figures_9.sh
│ ├── generate_output_snippets.sh
│ ├── lesson_02_input.jpg
│ ├── lesson_02_output.jpg
│ ├── lesson_05_col_major.gif
│ ├── lesson_05_fast.mp4
│ ├── lesson_05_parallel_tiles.gif
│ ├── lesson_05_row_major.gif
│ ├── lesson_05_split_7_by_3.gif
│ ├── lesson_05_tiled.gif
│ ├── lesson_05_vectors.gif
│ ├── lesson_08_compute_root.gif
│ ├── lesson_08_compute_y.gif
│ ├── lesson_08_mixed.mp4
│ ├── lesson_08_store_root_compute_x.gif
│ ├── lesson_08_store_root_compute_y.gif
│ ├── lesson_08_tile.gif
│ ├── lesson_09_compute_at_multiple_updates.mp4
│ ├── lesson_09_compute_at_pure.gif
│ ├── lesson_09_compute_at_pure_and_update.gif
│ ├── lesson_09_compute_at_rvar.gif
│ ├── lesson_09_compute_at_update.gif
│ ├── lesson_09_inline_reduction.gif
│ ├── lesson_09_update.gif
│ ├── lesson_09_update_rdom.mp4
│ ├── lesson_09_update_schedule.mp4
│ ├── lesson_17_rdom_calls_in_predicate.mp4
│ ├── lesson_17_rdom_circular.mp4
│ ├── lesson_17_rdom_triangular.mp4
│ ├── lesson_18_hist_manual_par.mp4
│ ├── lesson_18_hist_rfactor_par.mp4
│ ├── lesson_18_hist_rfactor_tile.mp4
│ ├── lesson_18_hist_rfactor_vec.mp4
│ ├── lesson_18_hist_serial.mp4
│ ├── lesson_19_group_updates.mp4
│ ├── lesson_19_transpose.mp4
│ ├── lesson_19_wrapper_global.mp4
│ ├── lesson_19_wrapper_local.mp4
│ ├── lesson_19_wrapper_unique.mp4
│ └── lesson_19_wrapper_vary_schedule.mp4
├── images
│ ├── gray.png
│ └── rgb.png
├── lesson_01_basics.cpp
├── lesson_02_input_image.cpp
├── lesson_03_debugging_1.cpp
├── lesson_04_debugging_2.cpp
├── lesson_05_scheduling_1.cpp
├── lesson_06_realizing_over_shifted_domains.cpp
├── lesson_07_multi_stage_pipelines.cpp
├── lesson_08_scheduling_2.cpp
├── lesson_09_update_definitions.cpp
├── lesson_10_aot_compilation_generate.cpp
├── lesson_10_aot_compilation_run.cpp
├── lesson_11_cross_compilation.cpp
├── lesson_12_using_the_gpu.cpp
├── lesson_13_tuples.cpp
├── lesson_14_types.cpp
├── lesson_15_generators.cpp
├── lesson_15_generators_usage.sh
├── lesson_16_rgb_generate.cpp
├── lesson_16_rgb_run.cpp
├── lesson_17_predicated_rdom.cpp
├── lesson_18_parallel_associative_reductions.cpp
├── lesson_19_wrapper_funcs.cpp
├── lesson_20_cloning_funcs.cpp
├── lesson_21_auto_scheduler_generate.cpp
├── lesson_21_auto_scheduler_run.cpp
├── lesson_22_jit_performance.cpp
├── lesson_23_serialization.cpp
├── lesson_24_async.cpp
└── todo.txt
├── util
├── CMakeLists.txt
├── Halide-VS2017.natvis
├── Halide.natvis
├── HalideTraceDump.cpp
├── HalideTraceUtils.cpp
├── HalideTraceUtils.h
├── HalideTraceViz.cpp
└── inconsolata.h
└── vcpkg.json
/.clang-format-ignore:
--------------------------------------------------------------------------------
1 | # .clang-format-ignore
2 | ./bin
3 | ./build
4 | ./cmake_build
5 | ./cmake_build_static
6 | ./cmake_build_shared
7 | ./distrib
8 | ./doc
9 | ./include
10 | ./lib
11 | # Our tutorials have special formatting: skip them
12 | ./tutorial
13 | # hexagon_remote/bin/src is also special
14 | ./src/runtime/hexagon_remote/bin/src
15 | # mini_webgpu.h is copied from upstream with some local mods
16 | ./src/runtime/mini_webgpu.h
17 | ./dependencies/spirv
18 | ./dependencies/vulkan
19 | *.fbs.h
20 |
--------------------------------------------------------------------------------
/.git_archival.txt:
--------------------------------------------------------------------------------
1 | node: 8bf7827bf08d655f0c842d4fe7271d5bf65600f9
2 | node-date: 2025-05-29T18:51:05+02:00
3 | describe-name: v20.0.0.dev0-64-g8bf7827bf08d
4 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set the default behavior, in case people don't have core.autocrlf set.
2 | * text=auto
3 |
4 | # Explicitly declare text files you want to always be normalized and converted
5 | # to native line endings on checkout.
6 | *.cpp text
7 | *.c text
8 | *.h text
9 |
10 | # Denote all files that are truly binary and should not be modified.
11 | *.png binary
12 | *.jpg binary
13 | *.tiff binary
14 |
15 | # Freeze version information in git archives
16 | .git_archival.txt export-subst
17 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/.gitmodules
--------------------------------------------------------------------------------
/.lldbinit:
--------------------------------------------------------------------------------
1 | command script import ./tools/lldbhalide.py
2 |
--------------------------------------------------------------------------------
/apps/HelloAndroid/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle/**
2 | gen/**
3 | gradle_build/**
4 | HelloAndroid.iml
5 | local.properties
6 | obj/**
7 | proguard-project.txt
8 | project.properties
9 |
--------------------------------------------------------------------------------
/apps/HelloAndroid/build-gradle.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Gradle needs to know where the NDK is.
4 | # The easiest way is to set the ANDROID_NDK_HOME environment variable.
5 | # Otherwise, set ndk.dir in local.properties (even though the file itself says
6 | # that it's only used by ant).
7 | # However, if you run "android update" (say, via build.sh), this variable will
8 | # be clobbered.
9 | ./gradlew build && adb install -r gradle_build/outputs/apk/HelloAndroid-debug.apk && adb shell am start com.example.hellohalide/com.example.hellohalide.CameraActivity
10 |
--------------------------------------------------------------------------------
/apps/HelloAndroid/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroid/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/apps/HelloAndroid/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Jan 05 14:23:44 PST 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-bin.zip
7 |
--------------------------------------------------------------------------------
/apps/HelloAndroid/jni/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH := $(call my-dir)
2 |
3 | include $(CLEAR_VARS)
4 |
5 | LOCAL_MODULE := HelloAndroid
6 | LOCAL_ARM_MODE := arm
7 | LOCAL_SRC_FILES := hello_wrapper.cpp
8 | LOCAL_LDFLAGS := -L$(LOCAL_PATH)/../jni
9 | LOCAL_LDLIBS := -lm -llog -landroid $(LOCAL_PATH)/../bin/$(TARGET_ARCH_ABI)/hello.a
10 | LOCAL_STATIC_LIBRARIES := android_native_app_glue
11 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../include $(LOCAL_PATH)/../../../build/include $(LOCAL_PATH)/../bin/$(TARGET_ARCH_ABI)/
12 |
13 | include $(BUILD_SHARED_LIBRARY)
14 |
15 | $(call import-module,android/native_app_glue)
16 |
--------------------------------------------------------------------------------
/apps/HelloAndroid/jni/Application.mk:
--------------------------------------------------------------------------------
1 | APP_ABI := armeabi armeabi-v7a arm64-v8a x86_64 x86
2 | APP_PLATFORM := android-17
3 | APP_STL := gnustl_static
4 | APP_CPPFLAGS := -std=c++17
5 |
--------------------------------------------------------------------------------
/apps/HelloAndroid/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroid/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/apps/HelloAndroid/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroid/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/apps/HelloAndroid/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroid/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/apps/HelloAndroid/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroid/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/apps/HelloAndroid/res/layout/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/apps/HelloAndroid/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | HelloHalide
4 |
5 |
--------------------------------------------------------------------------------
/apps/HelloAndroid/src/com/example/hellohalide/FrameHandler.java:
--------------------------------------------------------------------------------
1 | package com.example.hellohalide;
2 |
3 | import android.hardware.Camera;
4 | import android.util.Log;
5 |
6 | public class FrameHandler implements Camera.PreviewCallback {
7 | private static final String TAG = "FrameHandler";
8 |
9 | public void onPreviewFrame(byte[] data, Camera camera) {
10 | Log.d(TAG, "Got a frame!");
11 | }
12 | }
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle/**
2 | gen/**
3 | gradle_build/**
4 | *.iml
5 | local.properties
6 | obj/**
7 | proguard-project.txt
8 | project.properties
9 |
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/build-gradle.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Gradle needs to know where the NDK is.
4 | # The easiest way is to set the ANDROID_NDK_HOME environment variable.
5 | # Otherwise, set ndk.dir in local.properties (even though the file itself says
6 | # that it's only used by ant).
7 | # However, if you run "android update" (say, via build.sh), this variable will
8 | # be clobbered.
9 | ./gradlew build && adb install -r gradle_build/outputs/apk/HelloAndroidCamera2-debug.apk && adb shell am start com.example.helloandroidcamera2/com.example.helloandroidcamera2.CameraActivity
10 |
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroidCamera2/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Jul 15 16:34:43 PDT 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-all.zip
7 |
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/jni/Application.mk:
--------------------------------------------------------------------------------
1 | APP_ABI := armeabi armeabi-v7a arm64-v8a x86_64 x86
2 | APP_PLATFORM := android-21
3 | APP_STL := c++_static
4 | APP_CPPFLAGS := -std=c++17 -fno-rtti -fexceptions
5 |
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroidCamera2/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroidCamera2/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroidCamera2/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/HelloAndroidCamera2/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/res/layout/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/apps/HelloAndroidCamera2/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | HelloHalideCamera2
4 | Toggle Edge Detector
5 |
6 |
--------------------------------------------------------------------------------
/apps/HelloBaremetal/.gitignore:
--------------------------------------------------------------------------------
1 | !enable_neon.s
2 |
--------------------------------------------------------------------------------
/apps/HelloBaremetal/cmake-external_project/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eo pipefail
3 |
4 | # Prerequisite :
5 | # Halide is installed system-wide in your host machine or discoverable via CMAKE_PREFIX_PATH
6 |
7 | cd "$(dirname ${BASH_SOURCE[0]})"
8 | readonly TOOLCHAIN_FILE="${PWD}/../cmake/toolchain.noos-arm32-sample.cmake"
9 |
10 | rm -rf build
11 |
12 | cmake -S . -B build \
13 | -DCMAKE_TOOLCHAIN_FILE="${TOOLCHAIN_FILE}"
14 |
15 | cmake --build build/
16 |
--------------------------------------------------------------------------------
/apps/HelloBaremetal/cmake-external_project/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname ${BASH_SOURCE[0]})"
4 | ../run_baremetal.sh build/bin/add_filter ../../images/gray_small.pgm 16 build/out.pgm
5 |
--------------------------------------------------------------------------------
/apps/HelloBaremetal/cmake-super_build/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -eo pipefail
3 |
4 | # Prerequisite :
5 | # Halide is installed system-wide in your host machine or discoverable via CMAKE_PREFIX_PATH
6 |
7 | cd "$(dirname ${BASH_SOURCE[0]})"
8 | readonly TOOLCHAIN_FILE="${PWD}/../cmake/toolchain.noos-arm32-sample.cmake"
9 |
10 | rm -rf build
11 |
12 | cmake -S . -B build \
13 | -DAPP_TOOLCHAIN_FILE="${TOOLCHAIN_FILE}"
14 |
15 | cmake --build build/
16 |
--------------------------------------------------------------------------------
/apps/HelloBaremetal/cmake-super_build/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname ${BASH_SOURCE[0]})"
4 | ../run_baremetal.sh build/bin/add_filter ../../images/gray_small.pgm 16 build/out.pgm
5 |
--------------------------------------------------------------------------------
/apps/HelloBaremetal/cmake-twice/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd "$(dirname ${BASH_SOURCE[0]})"
4 | ../run_baremetal.sh build-target/add_filter ../../images/gray_small.pgm 16 build-target/out.pgm
5 |
--------------------------------------------------------------------------------
/apps/HelloBaremetal/enable_neon.s:
--------------------------------------------------------------------------------
1 | .global _enable_neon
2 | _enable_neon:
3 | MRC p15,0,r0,c1,c0,2 // Read CP Access register
4 | ORR r0,r0,#0x00f00000 // Enable full access to NEON/VFP by enabling access to Coprocessors 10 and 11
5 | MCR p15,0,r0,c1,c0,2 // Write CP Access register
6 | ISB
7 | MOV r0,#0x40000000 // Switch on the VFP and NEON hardware
8 | VMSR FPEXC,r0 // Set EN bit in FPEXC
9 |
10 | // Jump to C runtime, you may need to change the label name
11 | // depending on the boot up sequence and what runtime you linked.
12 | BL _mainCRTStartup
13 |
--------------------------------------------------------------------------------
/apps/HelloPyTorch/setup.cfg:
--------------------------------------------------------------------------------
1 | # Workaround for OSX Homebrew Python issue;
2 | # see https://stackoverflow.com/questions/24257803/distutilsoptionerror-must-supply-either-home-or-prefix-exec-prefix-not-both
3 |
4 | [install]
5 | prefix=
6 |
--------------------------------------------------------------------------------
/apps/HelloWasm/.gitignore:
--------------------------------------------------------------------------------
1 | js/*
2 | build/
3 | bin/
4 |
--------------------------------------------------------------------------------
/apps/HelloiOS/HelloiOS/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface AppDelegate : UIResponder
4 |
5 | @property(strong, nonatomic) UIWindow *window;
6 |
7 | @end
8 |
--------------------------------------------------------------------------------
/apps/HelloiOS/HelloiOS/HalideViewController.h:
--------------------------------------------------------------------------------
1 | #ifndef HelloiOS_HalideViewController_h
2 | #define HelloiOS_HalideViewController_h
3 |
4 | #import "HalideView.h"
5 | #import
6 |
7 | @interface HalideViewController : UIViewController
8 |
9 | @property HalideView *halide_view;
10 |
11 | - (void)viewWillAppear:(BOOL)animated;
12 |
13 | @end
14 |
15 | #endif
--------------------------------------------------------------------------------
/apps/HelloiOS/HelloiOS/HelloiOS-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #import
8 |
9 | #ifndef __IPHONE_3_0
10 | #warning "This project uses features only available in iOS SDK 3.0 and later."
11 | #endif
12 |
13 | #ifdef __OBJC__
14 | #import
15 | #import
16 | #endif
17 |
--------------------------------------------------------------------------------
/apps/HelloiOS/HelloiOS/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/apps/HelloiOS/HelloiOS/main.mm:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | #import "AppDelegate.h"
4 |
5 | int main(int argc, char * argv[])
6 | {
7 | @autoreleasepool {
8 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/apps/bilateral_grid/viz.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | echo HL_AVCONV is ${HL_AVCONV}
3 | export HL_TRACE_FILE=/dev/stdout
4 | export HL_NUMTHREADS=4
5 | rm -f $1/bilateral_grid.mp4
6 | set -euo pipefail
7 | make $1/filter_viz && \
8 | $1/filter_viz ../images/gray_small.png $1/out_small.png 0.2 0 | \
9 | ../../bin/HalideTraceViz --size 1920 1080 | \
10 | ${HL_AVCONV} -f rawvideo -pix_fmt bgr32 -s 1920x1080 -i /dev/stdin -c:v h264 $1/bilateral_grid.mp4
11 | #mplayer -demuxer rawvideo -rawvideo w=1920:h=1080:format=rgba:fps=30 -idle -fixed-vo -
12 |
--------------------------------------------------------------------------------
/apps/hannk/.gitignore:
--------------------------------------------------------------------------------
1 | build*/
2 | bin/
3 | emsdk
4 |
--------------------------------------------------------------------------------
/apps/hannk/delegate/exported_symbols.ldscript:
--------------------------------------------------------------------------------
1 | {
2 | global: tflite_plugin_create_delegate; tflite_plugin_destroy_delegate;
3 | local: *;
4 | };
5 |
6 |
--------------------------------------------------------------------------------
/apps/hannk/delegate/exported_symbols.osx:
--------------------------------------------------------------------------------
1 | _tflite_plugin_create_delegate
2 | _tflite_plugin_destroy_delegate
3 |
--------------------------------------------------------------------------------
/apps/hannk/halide/constants.h:
--------------------------------------------------------------------------------
1 | #ifndef HANNK_CONSTANTS_H
2 | #define HANNK_CONSTANTS_H
3 |
4 | namespace hannk {
5 |
6 | // After subtracing the zero point, we have 9 bits. We can shift
7 | // up by a further 6 bits to 15 bits total to get more precision
8 | // for the later operations.
9 | constexpr int add_input_shift = 6;
10 | constexpr int add_output_shift = 16;
11 |
12 | constexpr int mul_input_shift = 6;
13 |
14 | constexpr int softmax_input_shift = 6;
15 |
16 | } // namespace hannk
17 |
18 | #endif // HANNK_CONSTANTS_H
19 |
--------------------------------------------------------------------------------
/apps/hannk/interpreter/stubs.cpp:
--------------------------------------------------------------------------------
1 | // Implementations for required Halide runtime symbols for Hexagon.
2 |
3 | #include
4 |
5 | extern "C" {
6 |
7 | void halide_print(void *user_context, const char *str) {
8 | printf("%s", str);
9 | }
10 |
11 | void halide_error(void *user_context, const char *msg) {
12 | halide_print(user_context, msg);
13 | }
14 |
15 | void halide_profiler_report(void *user_context) {
16 | }
17 |
18 | void halide_profiler_reset() {
19 | }
20 |
21 | } // extern "C"
22 |
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v2_224_quant/000.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v2_224_quant/000.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/000.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/000.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/001.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/001.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/002.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/002.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/003.MAX_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/003.MAX_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/004.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/004.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/006.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/006.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/008.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/008.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/009.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/009.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/013.MAX_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/013.MAX_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/015.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/015.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/016.AVERAGE_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/016.AVERAGE_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/024.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/024.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/044.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/044.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/045.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/045.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/049.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/049.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/052.MAX_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/052.MAX_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/054.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/054.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/057.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/057.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/069.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/069.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/081.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/081.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/093.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/093.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/105.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/105.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/117.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/117.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/118.AVERAGE_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/118.AVERAGE_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/129.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/129.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/140.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/140.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/141.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/141.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/142.MAX_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/142.MAX_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/149.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/149.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/178.AVERAGE_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/178.AVERAGE_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/189.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/189.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/191.CONCATENATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/191.CONCATENATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/192.AVERAGE_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/192.AVERAGE_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/inception_v4_299_quant/194.SOFTMAX.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/inception_v4_299_quant/194.SOFTMAX.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/L2_NORMALIZATION.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/L2_NORMALIZATION.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/LOGISTIC.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/LOGISTIC.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/MUL.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/MUL.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/SPACE_TO_DEPTH.2.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/SPACE_TO_DEPTH.2.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/SPACE_TO_DEPTH.4.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/SPACE_TO_DEPTH.4.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/SPLIT.1_1_1.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/SPLIT.1_1_1.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/SPLIT_V.36_5_7.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/SPLIT_V.36_5_7.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/TRANSPOSE.2_0_1.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/TRANSPOSE.2_0_1.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/bad_broadcast_add.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/bad_broadcast_add.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/bad_broadcast_mul.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/bad_broadcast_mul.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/bad_broadcast_sub.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/bad_broadcast_sub.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/misc/bad_fully_connected.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/misc/bad_fully_connected.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/000.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/000.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/001.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/001.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/002.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/002.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/003.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/003.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/004.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/004.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/005.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/005.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/006.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/006.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/007.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/007.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/008.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/008.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/009.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/009.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/010.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/010.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/011.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/011.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/012.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/012.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/013.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/013.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/014.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/014.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/019.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/019.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/022.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/022.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/025.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/025.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/027.AVERAGE_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/027.AVERAGE_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/029.RESHAPE.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/029.RESHAPE.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_0.25_128_quant/030.SOFTMAX.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_0.25_128_quant/030.SOFTMAX.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/000.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/000.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/001.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/001.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/002.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/002.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/003.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/003.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/004.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/004.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/005.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/005.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/006.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/006.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/007.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/007.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/008.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/008.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/009.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/009.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/013.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/013.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/025.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/025.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/027.AVERAGE_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/027.AVERAGE_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/029.RESHAPE.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/029.RESHAPE.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v1_1.0_224_quant/030.SOFTMAX.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v1_1.0_224_quant/030.SOFTMAX.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/000.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/000.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/001.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/001.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/002.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/002.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/003.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/003.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/004.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/004.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/005.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/005.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/008.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/008.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/009.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/009.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/012.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/012.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/015.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/015.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/016.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/016.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/020.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/020.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/021.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/021.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/022.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/022.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/023.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/023.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/027.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/027.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/031.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/031.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/032.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/032.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/033.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/033.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/034.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/034.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/035.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/035.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/038.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/038.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/040.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/040.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/042.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/042.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/045.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/045.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/046.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/046.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/047.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/047.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/049.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/049.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/053.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/053.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/054.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/054.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/056.CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/056.CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/057.ADD.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/057.ADD.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/059.DEPTHWISE_CONV_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/059.DEPTHWISE_CONV_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/062.AVERAGE_POOL_2D.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/062.AVERAGE_POOL_2D.tflite
--------------------------------------------------------------------------------
/apps/hannk/test/mobilenet_v2_1.0_224_quant/064.RESHAPE.tflite:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/hannk/test/mobilenet_v2_1.0_224_quant/064.RESHAPE.tflite
--------------------------------------------------------------------------------
/apps/images/bayer_raw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/bayer_raw.png
--------------------------------------------------------------------------------
/apps/images/bayer_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/bayer_small.png
--------------------------------------------------------------------------------
/apps/images/gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/gray.png
--------------------------------------------------------------------------------
/apps/images/gray_small.pgm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/gray_small.pgm
--------------------------------------------------------------------------------
/apps/images/gray_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/gray_small.png
--------------------------------------------------------------------------------
/apps/images/low_res_in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/low_res_in.png
--------------------------------------------------------------------------------
/apps/images/matrix_3200.mat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/matrix_3200.mat
--------------------------------------------------------------------------------
/apps/images/matrix_7000.mat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/matrix_7000.mat
--------------------------------------------------------------------------------
/apps/images/rgb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/rgb.png
--------------------------------------------------------------------------------
/apps/images/rgb_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/rgb_small.png
--------------------------------------------------------------------------------
/apps/images/rgb_small16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/rgb_small16.png
--------------------------------------------------------------------------------
/apps/images/rgba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/halide/Halide/8bf7827bf08d655f0c842d4fe7271d5bf65600f9/apps/images/rgba.png
--------------------------------------------------------------------------------
/apps/linear_algebra/.gitignore:
--------------------------------------------------------------------------------
1 | src/kernels/*
2 |
--------------------------------------------------------------------------------
/apps/linear_algebra/tests/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_executable(test_halide_blas test_halide_blas.cpp)
2 | target_link_libraries(test_halide_blas PRIVATE BLAS::BLAS halide_blas)
3 | target_include_directories(test_halide_blas PRIVATE "${linear_algebra_SOURCE_DIR}/include")
4 |
5 | add_test(NAME test_halide_blas COMMAND test_halide_blas)
6 | set_tests_properties(test_halide_blas PROPERTIES
7 | LABELS linear_algebra
8 | PASS_REGULAR_EXPRESSION "Success!"
9 | FAIL_REGULAR_EXPRESSION "FAILED"
10 | SKIP_REGULAR_EXPRESSION "\\[SKIP\\]")
11 |
--------------------------------------------------------------------------------
/apps/local_laplacian/viz.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | export HL_TRACE_FILE=/dev/stdout
3 | export HL_NUM_THREADS=4
4 | rm -f $1/local_laplacian.mp4
5 | set -euo pipefail
6 | make $1/process_viz && \
7 | ./$1/process_viz ../images/rgb_small.png 4 1 1 0 ./$1/out_small.png | \
8 | ../../bin/HalideTraceViz \
9 | --size 1920 1080 --timestep 3000 | \
10 | ${HL_AVCONV} -f rawvideo -pix_fmt bgr32 -s 1920x1080 -i /dev/stdin -c:v h264 ./$1/local_laplacian.mp4
11 | #mplayer -demuxer rawvideo -rawvideo w=1920:h=1080:format=rgba:fps=30 -idle -fixed-vo -
12 |
--------------------------------------------------------------------------------
/apps/onnx/common_types.h:
--------------------------------------------------------------------------------
1 | #ifndef COMMON_TYPES_H_
2 | #define COMMON_TYPES_H_
3 |
4 | #include "Halide.h"
5 | #include "onnx_converter.h"
6 |
7 | struct HalideModel {
8 | std::shared_ptr model;
9 | std::shared_ptr rep;
10 | std::vector input_names;
11 | std::unordered_map input_types;
12 | std::vector output_names;
13 | std::vector output_types;
14 | };
15 |
16 | #endif
17 |
--------------------------------------------------------------------------------
/apps/support/viz_auto.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # $1 = filter cmd to run, including args
4 | # $2 = HalideTraceViz executable
5 | # $3 = path to output mp4
6 |
7 | set -euo pipefail
8 |
9 | rm -rf "$3"
10 |
11 | # Use a named pipe for the $1 -> HTV pipe, just in case
12 | # the exe in $1 writes any random output to stdout.
13 | PIPE=/tmp/halide_viz_auto_pipe
14 | rm -rf $PIPE
15 | mkfifo $PIPE
16 |
17 | HL_TRACE_FILE=${PIPE} HL_NUMTHREADS=8 $1 &
18 |
19 | $2 --auto_layout --ignore_tags 0<${PIPE} | \
20 | ${HL_AVCONV} -y -f rawvideo -pix_fmt bgr32 -s 1920x1080 -i /dev/stdin -c:v h264 "$3"
21 |
--------------------------------------------------------------------------------
/apps/wavelet/README.md:
--------------------------------------------------------------------------------
1 | wavelet is a trivial app designed to show ahead-of-time Generator usage (with
2 | both Make and CMake), as opposed to using direct calls to (e.g.)
3 | Func::compile_to_file().
4 |
--------------------------------------------------------------------------------
/apps/wavelet/daubechies_constants.h:
--------------------------------------------------------------------------------
1 | #ifndef DAUBECHIES_CONSTANTS_H_
2 | #define DAUBECHIES_CONSTANTS_H_
3 |
4 | const float D0 = 0.4829629131445341f;
5 | const float D1 = 0.83651630373780772f;
6 | const float D2 = 0.22414386804201339f;
7 | const float D3 = -0.12940952255126034f;
8 |
9 | #endif // DAUBECHIES_CONSTANTS_H_
10 |
--------------------------------------------------------------------------------
/cmake/CheckFilesExist.cmake:
--------------------------------------------------------------------------------
1 | function(check_files_exist FAILED)
2 | set(${FAILED} FALSE PARENT_SCOPE)
3 | foreach (F IN LISTS ARGN)
4 | if (NOT EXISTS ${F})
5 | message(STATUS "File not found: ${F}")
6 | set(${FAILED} TRUE PARENT_SCOPE)
7 | endif ()
8 | endforeach ()
9 | endfunction()
10 |
11 | if (CMAKE_SCRIPT_MODE_FILE)
12 | check_files_exist(FAILED ${FILES_TO_CHECK})
13 | if (FAILED)
14 | message(FATAL_ERROR "One or more files weren't found")
15 | endif ()
16 | endif ()
17 |
--------------------------------------------------------------------------------
/cmake/FindV8.cmake:
--------------------------------------------------------------------------------
1 | find_path(V8_INCLUDE_DIR v8.h)
2 |
3 | find_library(
4 | V8_LIBRARY
5 | NAMES v8_monolith
6 | PATH_SUFFIXES
7 | out.gn/x64.release.sample/obj
8 | )
9 |
10 | include(FindPackageHandleStandardArgs)
11 | find_package_handle_standard_args(
12 | V8
13 | REQUIRED_VARS V8_LIBRARY V8_INCLUDE_DIR
14 | HANDLE_COMPONENTS
15 | )
16 |
17 | if (V8_FOUND AND NOT TARGET V8::V8)
18 | add_library(V8::V8 UNKNOWN IMPORTED)
19 | set_target_properties(V8::V8 PROPERTIES IMPORTED_LOCATION "${V8_LIBRARY}")
20 | target_include_directories(V8::V8 INTERFACE "${V8_INCLUDE_DIR}")
21 | endif ()
22 |
--------------------------------------------------------------------------------
/cmake/vcpkg/llvm/portfile.cmake:
--------------------------------------------------------------------------------
1 | # This instructs vcpkg to do nothing, which causes find_package
2 | # to search the system for LLVM, rather than the vcpkg trees.
3 | set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
4 |
--------------------------------------------------------------------------------
/cmake/vcpkg/python3/portfile.cmake:
--------------------------------------------------------------------------------
1 | # This instructs vcpkg to do nothing, which causes find_package
2 | # to search the system for Python, rather than the vcpkg trees.
3 | set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
4 |
--------------------------------------------------------------------------------
/dependencies/vulkan/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright 2015-2023 The Khronos Group Inc.
2 |
3 | Files in this repository fall under one of these licenses:
4 |
5 | - `Apache-2.0`
6 | - `MIT`
7 |
8 | Note: With the exception of `parse_dependency.py` the files using `MIT` license
9 | also fall under `Apache-2.0`. Example:
10 |
11 | ```
12 | SPDX-License-Identifier: Apache-2.0 OR MIT
13 | ```
14 |
15 | Full license text of these licenses is available at:
16 |
17 | * Apache-2.0: https://opensource.org/licenses/Apache-2.0
18 | * MIT: https://opensource.org/licenses/MIT
19 |
--------------------------------------------------------------------------------
/packaging/common/HalideHelpersConfig.cmake:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.28)
2 | @PACKAGE_INIT@
3 |
4 | set(Halide_HOST_TARGET @Halide_HOST_TARGET@)
5 |
6 | include(${CMAKE_CURRENT_LIST_DIR}/Halide-Interfaces.cmake)
7 | include(${CMAKE_CURRENT_LIST_DIR}/HalideTargetHelpers.cmake)
8 | include(${CMAKE_CURRENT_LIST_DIR}/HalideGeneratorHelpers.cmake)
9 | include(${CMAKE_CURRENT_LIST_DIR}/TargetExportScript.cmake)
10 |
11 | check_required_components(${CMAKE_FIND_PACKAGE_NAME})
12 |
--------------------------------------------------------------------------------
/packaging/common/Welcome.txt:
--------------------------------------------------------------------------------
1 | Welcome to the Halide installer.
2 |
3 | This program will guide you through the installation of the Halide libraries,
4 | autoschedulers, development files, and documentation.
5 |
--------------------------------------------------------------------------------
/packaging/pip/TrampolineConfig.cmake.in:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.28)
2 |
3 | include(CMakeFindDependencyMacro)
4 | find_dependency(Python 3)
5 |
6 | include("${Python_SITEARCH}/halide/@INSTALL_DIR@/@PACKAGE@Config.cmake")
7 |
--------------------------------------------------------------------------------
/python_bindings/packaging/Halide_PythonConfig.cmake.in:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.28)
2 | @PACKAGE_INIT@
3 |
4 | include(CMakeFindDependencyMacro)
5 | find_dependency(Python 3 COMPONENTS Interpreter Development.Module)
6 |
7 | include("${CMAKE_CURRENT_LIST_DIR}/Halide_Python-targets.cmake")
8 |
9 | check_required_components(${CMAKE_FIND_PACKAGE_NAME})
10 |
--------------------------------------------------------------------------------
/python_bindings/src/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | add_subdirectory(halide)
2 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyArgument.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYARGUMENT_H
2 | #define HALIDE_PYTHON_BINDINGS_PYARGUMENT_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_argument(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYARGUMENT_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyBoundaryConditions.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYBOUNDARYCONDITIONS_H
2 | #define HALIDE_PYTHON_BINDINGS_PYBOUNDARYCONDITIONS_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_boundary_conditions(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYBOUNDARYCONDITIONS_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyCallable.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYCALLABLE_H
2 | #define HALIDE_PYTHON_BINDINGS_PYCALLABLE_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_callable(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYCALLABLE_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyConciseCasts.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYCONCISECASTS_H
2 | #define HALIDE_PYTHON_BINDINGS_PYCONCISECASTS_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_concise_casts(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYCONCISECASTS_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyDerivative.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYDERIVATIVE_H
2 | #define HALIDE_PYTHON_BINDINGS_PYDERIVATIVE_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_derivative(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYDERIVATIVE_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyEnums.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYENUMS_H
2 | #define HALIDE_PYTHON_BINDINGS_PYENUMS_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_enums(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYENUMS_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyError.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYERROR_H
2 | #define HALIDE_PYTHON_BINDINGS_PYERROR_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_error(py::module &m);
10 |
11 | struct PyJITUserContext : public JITUserContext {
12 | PyJITUserContext();
13 | };
14 |
15 | } // namespace PythonBindings
16 | } // namespace Halide
17 |
18 | #endif // HALIDE_PYTHON_BINDINGS_PYERROR_H
19 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyExpr.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYEXPR_H
2 | #define HALIDE_PYTHON_BINDINGS_PYEXPR_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_expr(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYEXPR_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyExternFuncArgument.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYEXTERNFUNCARGUMENT_H
2 | #define HALIDE_PYTHON_BINDINGS_PYEXTERNFUNCARGUMENT_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_extern_func_argument(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYEXTERNFUNCARGUMENT_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyFunc.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYFUNC_H
2 | #define HALIDE_PYTHON_BINDINGS_PYFUNC_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_func(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYFUNC_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyFuncRef.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYFUNC_REF_H
2 | #define HALIDE_PYTHON_BINDINGS_PYFUNC_REF_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_func_ref(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYFUNC_REF_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyGenerator.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYGENERATOR_H
2 | #define HALIDE_PYTHON_BINDINGS_PYGENERATOR_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_generator(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYGENERATOR_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyIROperator.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYIROPERATOR_H
2 | #define HALIDE_PYTHON_BINDINGS_PYIROPERATOR_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_operators(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYIROPERATOR_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyImageParam.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYIMAGEPARAM_H
2 | #define HALIDE_PYTHON_BINDINGS_PYIMAGEPARAM_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_image_param(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYIMAGEPARAM_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyInlineReductions.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYINLINEREDUCTIONS_H
2 | #define HALIDE_PYTHON_BINDINGS_PYINLINEREDUCTIONS_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_inline_reductions(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYINLINEREDUCTIONS_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyLambda.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYLAMBDA_H
2 | #define HALIDE_PYTHON_BINDINGS_PYLAMBDA_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_lambda(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYLAMBDA_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyLoopLevel.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYLOOPLEVEL_H
2 | #define HALIDE_PYTHON_BINDINGS_PYLOOPLEVEL_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_loop_level(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYLOOPLEVEL_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyModule.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYMODULE_H
2 | #define HALIDE_PYTHON_BINDINGS_PYMODULE_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_module(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYMODULE_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyParam.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYPARAM_H
2 | #define HALIDE_PYTHON_BINDINGS_PYPARAM_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_param(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYPARAM_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyParameter.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYPARAMETER_H
2 | #define HALIDE_PYTHON_BINDINGS_PYPARAMETER_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_parameter(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYPARAMETER_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyPipeline.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYPIPELINE_H
2 | #define HALIDE_PYTHON_BINDINGS_PYPIPELINE_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_pipeline(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYPIPELINE_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyRDom.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYRDOM_H
2 | #define HALIDE_PYTHON_BINDINGS_PYRDOM_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_rdom(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYRDOM_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyStage.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYSTAGE_H
2 | #define HALIDE_PYTHON_BINDINGS_PYSTAGE_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_stage(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYFUNC_STAGE_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyTarget.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYTARGET_H
2 | #define HALIDE_PYTHON_BINDINGS_PYTARGET_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_target(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYTARGET_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyVar.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYVAR_H
2 | #define HALIDE_PYTHON_BINDINGS_PYVAR_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_var(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYVAR_H
15 |
--------------------------------------------------------------------------------
/python_bindings/src/halide/halide_/PyVarOrRVar.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_PYTHON_BINDINGS_PYFUNC_VARORRVAR_H
2 | #define HALIDE_PYTHON_BINDINGS_PYFUNC_VARORRVAR_H
3 |
4 | #include "PyHalide.h"
5 |
6 | namespace Halide {
7 | namespace PythonBindings {
8 |
9 | void define_var_or_rvar(py::module &m);
10 |
11 | } // namespace PythonBindings
12 | } // namespace Halide
13 |
14 | #endif // HALIDE_PYTHON_BINDINGS_PYFUNC_VARORRVAR_H
15 |
--------------------------------------------------------------------------------
/python_bindings/test/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | if (Halide_TARGET MATCHES "wasm")
2 | message(WARNING "Python tests are skipped under WASM.")
3 | return()
4 | endif ()
5 |
6 | if (NOT WITH_AUTOSCHEDULERS)
7 | message(WARNING "Python tests are skipped without autoschedulers")
8 | return()
9 | endif ()
10 |
11 | add_subdirectory(correctness)
12 | add_subdirectory(generators)
13 |
--------------------------------------------------------------------------------
/python_bindings/test/correctness/atomics.py:
--------------------------------------------------------------------------------
1 | import halide as hl
2 |
3 |
4 | def test_atomics():
5 | x = hl.Var("x")
6 | im = hl.Func("im")
7 | f = hl.Func("f")
8 | im[x] = (x * x) % 5
9 | r = hl.RDom([(0, 100)])
10 | f[x] = 0
11 | f[hl.Expr(im[r])] += 1
12 | f.compute_root().update().atomic().parallel(r)
13 | b = f.realize([5])
14 |
15 | ref = [0, 0, 0, 0, 0]
16 | for i in range(100):
17 | idx = (i * i) % 5
18 | ref[idx] += 1
19 | for i in range(5):
20 | assert b[i] == ref[i]
21 |
22 |
23 | if __name__ == "__main__":
24 | test_atomics()
25 |
--------------------------------------------------------------------------------
/python_bindings/test/correctness/user_context_test.py:
--------------------------------------------------------------------------------
1 | import array
2 | from user_context import user_context
3 |
4 |
5 | def test():
6 | output = bytearray("\0\0\0\0", "ascii")
7 | user_context(None, ord("q"), output)
8 | assert output == bytearray("qqqq", "ascii")
9 |
10 |
11 | if __name__ == "__main__":
12 | test()
13 |
--------------------------------------------------------------------------------
/python_bindings/test/generators/bitcpp_generator.cpp:
--------------------------------------------------------------------------------
1 | #include "Halide.h"
2 |
3 | using namespace Halide;
4 |
5 | class BitGenerator : public Halide::Generator {
6 | public:
7 | Input> bit_input{"input_uint1"};
8 | Input bit_constant{"constant_uint1"};
9 | Output> bit_output{"output_uint1"};
10 |
11 | Var x, y, z;
12 |
13 | void generate() {
14 | bit_output(x) = bit_input(x) | bit_constant;
15 | }
16 |
17 | void schedule() {
18 | }
19 | };
20 |
21 | HALIDE_REGISTER_GENERATOR(BitGenerator, bitcpp)
22 |
--------------------------------------------------------------------------------
/python_bindings/test/generators/bitpy_generator.py:
--------------------------------------------------------------------------------
1 | import halide as hl
2 |
3 | x = hl.Var("x")
4 | y = hl.Var("y")
5 |
6 |
7 | @hl.generator(name="bitpy")
8 | class BitGenerator:
9 | # We can use `bool` as an alias for `hl.Bool()` if we like
10 | bit_input = hl.InputBuffer(bool, 1)
11 | bit_constant = hl.InputScalar(bool)
12 |
13 | bit_output = hl.OutputBuffer(hl.Bool(), 1)
14 |
15 | def generate(self):
16 | g = self
17 | g.bit_output[x] = g.bit_input[x] | g.bit_constant
18 |
19 |
20 | if __name__ == "__main__":
21 | hl.main()
22 |
--------------------------------------------------------------------------------
/python_bindings/test/generators/user_context_generator.cpp:
--------------------------------------------------------------------------------
1 | #include "Halide.h"
2 |
3 | using namespace Halide;
4 |
5 | class UserContextGenerator : public Halide::Generator {
6 | public:
7 | Input constant{"constant"};
8 | Output> output{"output"};
9 |
10 | Var x;
11 |
12 | void generate() {
13 | output(x) = constant;
14 | }
15 |
16 | void schedule() {
17 | }
18 | };
19 |
20 | HALIDE_REGISTER_GENERATOR(UserContextGenerator, user_context)
21 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | build
2 | cmake>=3.28
3 | imageio
4 | ninja
5 | numpy
6 | pillow
7 | pybind11==2.11.1
8 | scikit-build-core==0.10.5
9 | scipy
10 | setuptools>=43
11 | tbump==6.11.0
12 | wheel
13 |
--------------------------------------------------------------------------------
/src/AsyncProducers.h:
--------------------------------------------------------------------------------
1 | #ifndef HALIDE_ASYNC_PRODUCERS_H
2 | #define HALIDE_ASYNC_PRODUCERS_H
3 |
4 | /** \file
5 | * Defines the lowering pass that injects task parallelism for producers that are scheduled as async.
6 | */
7 | #include