Search Issue Tracker

By Design

Votes

1

Found in [Package]

1.8.4

Issue ID

BUR-2410

Regression

No

SLEEF Calls are not automatically vectorized when FloatMode.Deterministic is used

Package: Burst

-

Reproduction steps:

1. Open the attached “ASDQWE” project

2. Open the “Asset/Scenes/SampleScene.unity” Scene

3. Open the Burst Inspector (Jobs > Burst > Open Inspector…)

4. Observe the “Sin128Floats” and “SinDeterministic128Floats” methods

Expected result: The methods are vectorized

Actual result: The “SinDeterministic128Floats” method is not vectorized while “Sin128Floats” is

Reproducible with: 1.7.4 (2021.3.27f1), 1.8.3(2021.3.27f1), 1.8.4 (2022.3.1f1, 2023.1.0b21, 2023.2.0a18)

Reproducible on: Intel MacOS 13.4

  1. Resolution Note:

    We've investigated this, and while it may be possible to improve the situation here in the future, it's currently working as-designed, so I'm going to close this bug.

    Currently, vectorization is intentionally disabled when FloatMode.Deterministic is used, because LLVM can use some non-deterministic instructions when vectorizing, specifically on Arm/Neon where it doesn't respect the floating-point control register.

    We may be able to do something here, but it's enough work that we'll need to treat it as a feature request, so I've logged that for us to consider.

Add comment

Log in to post comment