@@ -178,6 +178,10 @@ def IntrSpeculatable : IntrinsicProperty;
178178// defined by the hasSideEffects property of the TableGen Instruction class.
179179def IntrHasSideEffects : IntrinsicProperty;
180180
181+ /// This property indicates that the intrinsic represents a floating-point
182+ /// operation, and it may have floating-point operand bundles.
183+ def IntrFPOperation : IntrinsicProperty;
184+
181185//===----------------------------------------------------------------------===//
182186// IIT constants and utils
183187//===----------------------------------------------------------------------===//
@@ -1020,7 +1024,7 @@ def int_experimental_memset_pattern
10201024// FIXME: Add version of these floating point intrinsics which allow non-default
10211025// rounding modes and FP exception handling.
10221026
1023- let IntrProperties = [IntrNoMem, IntrSpeculatable, IntrWillReturn] in {
1027+ let IntrProperties = [IntrNoMem, IntrSpeculatable, IntrWillReturn, IntrFPOperation ] in {
10241028 def int_fma : DefaultAttrsIntrinsic<[llvm_anyfloat_ty],
10251029 [LLVMMatchType<0>, LLVMMatchType<0>,
10261030 LLVMMatchType<0>]>;
@@ -1089,27 +1093,27 @@ let IntrProperties = [IntrNoMem, IntrSpeculatable, IntrWillReturn] in {
10891093
10901094def int_minnum : DefaultAttrsIntrinsic<[llvm_anyfloat_ty],
10911095 [LLVMMatchType<0>, LLVMMatchType<0>],
1092- [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative]
1096+ [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, IntrFPOperation ]
10931097>;
10941098def int_maxnum : DefaultAttrsIntrinsic<[llvm_anyfloat_ty],
10951099 [LLVMMatchType<0>, LLVMMatchType<0>],
1096- [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative]
1100+ [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, IntrFPOperation ]
10971101>;
10981102def int_minimum : DefaultAttrsIntrinsic<[llvm_anyfloat_ty],
10991103 [LLVMMatchType<0>, LLVMMatchType<0>],
1100- [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative]
1104+ [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, IntrFPOperation ]
11011105>;
11021106def int_maximum : DefaultAttrsIntrinsic<[llvm_anyfloat_ty],
11031107 [LLVMMatchType<0>, LLVMMatchType<0>],
1104- [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative]
1108+ [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, IntrFPOperation ]
11051109>;
11061110def int_minimumnum : DefaultAttrsIntrinsic<[llvm_anyfloat_ty],
11071111 [LLVMMatchType<0>, LLVMMatchType<0>],
1108- [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative]
1112+ [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, IntrFPOperation ]
11091113>;
11101114def int_maximumnum : DefaultAttrsIntrinsic<[llvm_anyfloat_ty],
11111115 [LLVMMatchType<0>, LLVMMatchType<0>],
1112- [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative]
1116+ [IntrNoMem, IntrSpeculatable, IntrWillReturn, Commutative, IntrFPOperation ]
11131117>;
11141118
11151119// Internal interface for object size checking
0 commit comments