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.
alive-execappears to parse thedenormal_fpenv(positivezero|positivezero)attribute, but it does not seem to apply the corresponding denormal flushing semantics during execution.For IR program:
The execution result is:
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_flushstill evaluates to#x00000400, and%output_flushevaluates to#x00200000, which suggests that the denormal floating-point environment is not being handled correctly byalive-exec.