<html><body><p><font size="2">Andrew Kaylor wrote:</font><br><br><tt>>In general, the current "strict FP" handling stops at instruction</tt><br><tt>>selection. At the MachineIR level we don't currently have a mechanism</tt><br><tt>>to prevent inappropriate optimizations based on floating point</tt><br><tt>>constraints, or indeed to convey such constraints to the backend.</tt><br><tt>>Implicit register use modeling may provide some restriction on some</tt><br><tt>>architectures, but this is definitely lacking for X86 targets. On the</tt><br><tt>>other hand, I'm not aware of any specific current problems, so in many</tt><br><tt>>cases we may "get lucky" and have the correct thing happen by chance.</tt><br><tt>>Obviously that's not a viable long term solution. I have a rough plan</tt><br><tt>>for adding improved register modeling to the X86 backend, which should</tt><br><tt>>take care of instruction scheduling issues, but we'd still need a</tt><br><tt>>mechanism to prevent constant folding optimizations and such.</tt><br><font size="2"><br>Given that Kevin intends to target SystemZ, I'll be happy to work on the SystemZ back-end support for this feature.  I agree that we should be using implicit control register dependencies, which will at least prevent moving floating-point operations across instructions that e.g. change rounding modes.   However, the main property we need to model is that floating-point operations may *trap*.   I guess this can be done using UnmodeledSideEffects, but I'm not quite clear on how to make this dependent on whether or not a "strict" operation is requested (without duplicating all the instruction patterns ...).</font><br><br><font size="2">Once we do use something like UnmodeledSideEffects, I think MachineIR passes should handle everything correctly; in the end, the requirements are not really different from those of other trapping instructions.  B.t.w. I don't think anybody does constant folding on floating-point constants at the MachineIR level anyway ... have you seen this anywhere?</font><br><br><font size="2"><br>Mit freundlichen Gruessen / Best Regards<br><br>Ulrich Weigand<br><br>-- <br>  Dr. Ulrich Weigand | Phone: +49-7031/16-3727<br>  STSM, GNU/Linux compilers and toolchain<br>  IBM Deutschland Research & Development GmbH<br>  Vorsitzende des Aufsichtsrats: Martina Koederitz | Geschäftsführung: Dirk Wittkopp<br>  Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht Stuttgart, HRB 243294</font><BR>
</body></html>