[llvm] [NVVM] Add various intrinsic attrs, cleanup and consolidate td (PR #153436)
Durgadoss R via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 14 03:41:41 PDT 2025
================
@@ -903,90 +914,79 @@ let TargetPrefix = "nvvm" in {
}
}
-//
-// Sad
-//
- let IntrProperties = [IntrNoMem, IntrSpeculatable] in {
- foreach sign = ["", "u"] in {
- def int_nvvm_sad_ # sign # s : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty]>;
+ //
+ // Sad - Sum of Absolute Differences
+ //
+ foreach sign = ["", "u"] in {
+ def int_nvvm_sad_ # sign # s : NVVMBuiltin,
+ PureIntrinsic<[llvm_i16_ty], [llvm_i16_ty, llvm_i16_ty, llvm_i16_ty]>;
- def int_nvvm_sad_ # sign # i : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty]>;
+ def int_nvvm_sad_ # sign # i : NVVMBuiltin,
+ PureIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty]>;
- def int_nvvm_sad_ # sign # ll : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty, llvm_i64_ty]>;
- }
+ def int_nvvm_sad_ # sign # ll : NVVMBuiltin,
+ PureIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty, llvm_i64_ty]>;
}
-//
-// Floor Ceil
-//
- let IntrProperties = [IntrNoMem, IntrSpeculatable] in {
- foreach op = ["floor", "ceil"] in {
- foreach ftz = ["", "_ftz"] in
- def int_nvvm_ # op # ftz # _f : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty]>;
- def int_nvvm_ # op # _d : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty]>;
- }
+ //
+ // Floor Ceil
+ //
+ foreach op = ["floor", "ceil"] in {
+ foreach ftz = ["", "_ftz"] in
+ def int_nvvm_ # op # ftz # _f : NVVMBuiltin,
+ PureIntrinsic<[llvm_float_ty], [llvm_float_ty]>;
+ def int_nvvm_ # op # _d : NVVMBuiltin,
+ PureIntrinsic<[llvm_double_ty], [llvm_double_ty]>;
}
-//
-// Abs
-//
+ //
+ // Abs
+ //
foreach ftz = ["", "_ftz"] in
def int_nvvm_fabs # ftz :
- DefaultAttrsIntrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>],
- [IntrNoMem, IntrSpeculatable]>;
+ PureIntrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]>;
-//
-// Abs, Neg bf16, bf16x2
-//
+ //
+ // Neg bf16, bf16x2
+ //
def int_nvvm_neg_bf16 : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_bfloat_ty], [llvm_bfloat_ty], [IntrNoMem]>;
+ PureIntrinsic<[llvm_bfloat_ty], [llvm_bfloat_ty]>;
def int_nvvm_neg_bf16x2 : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_v2bf16_ty], [llvm_v2bf16_ty], [IntrNoMem]>;
+ PureIntrinsic<[llvm_v2bf16_ty], [llvm_v2bf16_ty]>;
-//
-// Round
-//
- let IntrProperties = [IntrNoMem, IntrSpeculatable] in {
- foreach ftz = ["", "_ftz"] in
- def int_nvvm_round # ftz # _f : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty]>;
+ //
+ // Round
+ //
+ foreach ftz = ["", "_ftz"] in
+ def int_nvvm_round # ftz # _f : NVVMBuiltin,
+ PureIntrinsic<[llvm_float_ty], [llvm_float_ty]>;
- def int_nvvm_round_d : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty]>;
- }
+ def int_nvvm_round_d : NVVMBuiltin,
+ PureIntrinsic<[llvm_double_ty], [llvm_double_ty]>;
-//
-// Trunc
-//
- let IntrProperties = [IntrNoMem, IntrSpeculatable] in {
- foreach ftz = ["", "_ftz"] in
- def int_nvvm_trunc # ftz # _f : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty]>;
+ //
+ // Trunc
+ //
+ foreach ftz = ["", "_ftz"] in
+ def int_nvvm_trunc # ftz # _f : NVVMBuiltin,
+ PureIntrinsic<[llvm_float_ty], [llvm_float_ty]>;
- def int_nvvm_trunc_d : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty]>;
- }
+ def int_nvvm_trunc_d : NVVMBuiltin,
+ PureIntrinsic<[llvm_double_ty], [llvm_double_ty]>;
-//
-// Saturate
-//
- let IntrProperties = [IntrNoMem, IntrSpeculatable] in {
- foreach ftz = ["", "_ftz"] in
- def int_nvvm_saturate # ftz # _f : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty]>;
+ //
+ // Saturate
+ //
+ foreach ftz = ["", "_ftz"] in
+ def int_nvvm_saturate # ftz # _f : NVVMBuiltin,
+ PureIntrinsic<[llvm_float_ty], [llvm_float_ty]>;
- def int_nvvm_saturate_d : NVVMBuiltin,
- DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty]>;
- }
+ def int_nvvm_saturate_d : NVVMBuiltin,
+ PureIntrinsic<[llvm_double_ty], [llvm_double_ty]>;
-//
-// Exp2 Log2
-//
+ //
+ // Exp2 Log2
+ //
let IntrProperties = [IntrNoMem] in {
----------------
durga4github wrote:
so, we do not want them to be speculatable due to the `approx` nature?
https://github.com/llvm/llvm-project/pull/153436
More information about the llvm-commits
mailing list