Skip to content

alive-exec does not correctly handle denormal_fpenv(positivezero|positivezero) #1324

Description

@Roticv912

alive-exec appears to parse the denormal_fpenv(positivezero|positivezero) attribute, but it does not seem to apply the corresponding denormal flushing semantics during execution.

For IR program:

define void @main() denormal_fpenv(positivezero|positivezero) {
  %input_flush = fadd float 1.434929627468612680625899e-42, 0.0

  %output_flush = fmul float 5.421010862427522170037264e-20, 5.421010862427522170037264e-20

  ret void
}

The execution result is:

define void @main() denormal-fp-math=positive-zero,positive-zero {
#0:
  %input_flush = fadd float 0x00000400, 0e+00
  %output_flush = fmul float 5.421011e-20, 5.421011e-20
  ret void
}
Executing %#0
%input_flush = #x00000400
%output_flush = #x00200000
Returned false / non-poison=true

With denormal-fp-math=positive-zero,positive-zero, I would expect both input and output denormals to be flushed to positive zero. In this example, %input_flush still evaluates to #x00000400, and %output_flush evaluates to #x00200000, which suggests that the denormal floating-point environment is not being handled correctly by alive-exec.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions