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

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.