================
@@ -75,6 +75,52 @@ static Value *getMaskVecValue(CodeGenFunction &CGF, Value
*Mask,
return MaskVec;
}
+// Emit rounding for the value X according to the rounding RoundingControl.
+static Value *emitX86Round(CodeGenFunction &CGF, Value *X,
+ unsigned RoundingControl) {
+ unsigned RoundingMask = 0b11;
+ unsigned UseMXCSRBit = 0b1000;
+
+ unsigned RoundingMode = RoundingControl & RoundingMask;
+ bool UseMXCSR = RoundingControl & UseMXCSRBit;
+
+ Intrinsic::ID ID = Intrinsic::not_intrinsic;
+ LLVMContext &Ctx = CGF.CGM.getLLVMContext();
+
+ if (UseMXCSR) {
----------------
stomfaig wrote:
Just to clarify:
- In FPConstrained mode:
- if MXCSR set: use `dynamic`
- if MXCSR not set: use `constraint.floor/ceil/etc.`
- if FPConstrained not set: Ignore MXCSR bit, and return `floor/etc.` based on
the immediate value?
https://github.com/llvm/llvm-project/pull/171227
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits