Skip to content

Change default to JIT without fma#2076

Open
lgritz wants to merge 1 commit intoAcademySoftwareFoundation:mainfrom
lgritz:lg-fma
Open

Change default to JIT without fma#2076
lgritz wants to merge 1 commit intoAcademySoftwareFoundation:mainfrom
lgritz:lg-fma

Conversation

@lgritz
Copy link
Collaborator

@lgritz lgritz commented Feb 13, 2026

The ShadingSystem option "llvm_jit_fma" seems to advertise that it switches between no fused multiply-add (the default, 0), versus allowing fma to be generated in the JIT.

The underlying LLVM option is actually a 3-way switch about how to utilize fused ops: Strict (no fused ops), Standard (allow fma but not other fused ops), or Fast (allow other fused ops when it will speed things up). Aside: "standard" is really confusing, as one might think it means original standard IEEE 754 definitions that lacked fma.

These are not the same! We were using llvm_jit_fma to switch between Standard and Fast, but upon closer examination, we now believe that it should control a switch between Strict and Standard, and Strict should be the default.

This seems to directly change the pesky render-microfacet test, which has always seemed to have an unusual sensitivity to the specific processor. Hopefully, users will find that across the board, it leads to their renderers having fewer minor pixel differences from one platform to another.

The ShadingSystem option "llvm_jit_fma" seems to advertise that it
switches between no fused multiply-add (the default, 0), versus
allowing fma to be generated in the JIT.

The underlying LLVM option is actually a 3-way switch about how to
utilized fused ops: Strict (no fused ops), Standard (allow fma but not
other fused ops), or Fast (allow other fused ops when it will speed
things up). Aside: "standard" is really confusing, as one might think
it means original standard IEEE 754 definitions that lacked fma.

These are not the same! We were using llvm_jit_fma to switch between
Standard and Fast, but upon closer examination, we now believe that it
should control a switch between Strict and Standard, and Strict should
be the default.

This seems to directly change the pesky render-microfacet test, which
has always seemed to have an unusual sensitivity to the specific
processor. Hopefully, users will find that across the board, it leads
to their renderers having fewer minor pixel differences from one
platform to another.

Signed-off-by: Larry Gritz <lg@larrygritz.com>
@lgritz lgritz requested a review from ThiagoIze February 13, 2026 21:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant