This intrinsic allows testing for inf, nan, etc. on floating point
values.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D135969
let arguments = (ins LLVM_Type:$in, I1:$is_int_min_poison);
}
+def LLVM_IsFPClass : LLVM_OneResultIntrOp<"is.fpclass", [], [0],
+ [NoSideEffect]> {
+ let arguments = (ins LLVM_Type:$in, I32:$bit);
+}
+
def LLVM_CopySignOp : LLVM_BinarySameArgsIntrinsicOp<"copysign">;
def LLVM_CosOp : LLVM_UnaryIntrinsicOp<"cos">;
def LLVM_ExpOp : LLVM_UnaryIntrinsicOp<"exp">;
llvm.return
}
+// CHECK-LABEL: @fpclass_test
+llvm.func @fpclass_test(%arg0: f32) -> i1 {
+ %checkNan = llvm.mlir.constant(0 : i32) : i32
+ // CHECK: call i1 @llvm.is.fpclass
+ %0 = "llvm.intr.is.fpclass"(%arg0, %checkNan) : (f32, i32) -> i1
+ llvm.return %0 : i1
+}
+
// CHECK-LABEL: @exp_test
llvm.func @exp_test(%arg0: f32, %arg1: vector<8xf32>) {
// CHECK: call float @llvm.exp.f32