llvm-project/llvm
wenhu1024 8dee421bf2
[VENTUS][fix] modify rounding mode, functions, instructions to follow OpenCL2.0 conversions specifications (#183)
This commit ensures strict compliance with OpenCL 2.0 floating-point
conversion specifications:

* **RISCVISelLowering.cpp**:
  - Map FRINT to RNE (round-to-nearest-even) instead of DYN (dynamic)
  - Add proper FRM save/restore for vector floating-point operations

* **VentusInstrInfoV.td**:
  - Enable VFCVT_RTZ_* instructions for truncation-based conversions
  - Use RTZ (round-to-zero) mode for fp-to-int conversions to match
    OpenCL spec
  - Replace dynamic rounding with explicit RTZ for integer conversions

* **gen_convert.py**:
  - Improve saturation handling in type conversions
  - Add proper edge case handling for integer source saturation
  - Distinguish between integer and float source conversion logic

* **Test Updates**:
  - Update float.ll to expect RTZ instructions for fp-to-int conversions
  - Add fround.ll test cases for ceil/floor/rint operations

These changes ensure that Ventus GPGPU backend produces OpenCL 2.0 compliant
floating-point conversion behavior, particularly for rounding modes and
saturation handling.
2025-07-05 17:34:04 +08:00
..
benchmarks
bindings
cmake
docs
examples
include [Ventus][fix] fix barrier builtins support (#176) 2025-06-18 02:14:40 +08:00
lib [VENTUS][fix] modify rounding mode, functions, instructions to follow OpenCL2.0 conversions specifications (#183) 2025-07-05 17:34:04 +08:00
projects
resources
runtimes
test [VENTUS][fix] modify rounding mode, functions, instructions to follow OpenCL2.0 conversions specifications (#183) 2025-07-05 17:34:04 +08:00
tools [VENTUS][Printf] Add opencl printf pass 2025-02-12 11:01:04 +08:00
unittests
utils
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.