@@ -3569,6 +3569,7 @@ let TargetPrefix = "x86" in {
3569
3569
3570
3570
// Gather and Scatter ops
3571
3571
let TargetPrefix = "x86" in {
3572
+ // NOTE: These are deprecated in favor of the versions that take a vXi1 mask.
3572
3573
def int_x86_avx512_gather_dpd_512 : GCCBuiltin<"__builtin_ia32_gathersiv8df">,
3573
3574
Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
3574
3575
llvm_v8i32_ty, llvm_i8_ty, llvm_i32_ty],
@@ -3701,6 +3702,7 @@ let TargetPrefix = "x86" in {
3701
3702
[IntrReadMem, IntrArgMemOnly]>;
3702
3703
3703
3704
// scatter
3705
+ // NOTE: These are deprecated in favor of the versions that take a vXi1 mask.
3704
3706
def int_x86_avx512_scatter_dpd_512 : GCCBuiltin<"__builtin_ia32_scattersiv8df">,
3705
3707
Intrinsic<[], [llvm_ptr_ty, llvm_i8_ty,
3706
3708
llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty],
@@ -3861,7 +3863,7 @@ let TargetPrefix = "x86" in {
3861
3863
llvm_i32_ty, llvm_i32_ty], [IntrArgMemOnly]>;
3862
3864
}
3863
3865
3864
- // AVX512 gather intrinsics that use vXi1 masks.
3866
+ // AVX512 gather/scatter intrinsics that use vXi1 masks.
3865
3867
let TargetPrefix = "x86" in {
3866
3868
def int_x86_avx512_mask_gather_dpd_512 :
3867
3869
Intrinsic<[llvm_v8f64_ty], [llvm_v8f64_ty, llvm_ptr_ty,
@@ -3977,6 +3979,121 @@ let TargetPrefix = "x86" in {
3977
3979
Intrinsic<[llvm_v8i32_ty],
3978
3980
[llvm_v8i32_ty, llvm_ptr_ty, llvm_v8i32_ty, llvm_v8i1_ty, llvm_i32_ty],
3979
3981
[IntrReadMem, IntrArgMemOnly]>;
3982
+
3983
+ def int_x86_avx512_mask_scatter_dpd_512 :
3984
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
3985
+ llvm_v8i32_ty, llvm_v8f64_ty, llvm_i32_ty],
3986
+ [IntrArgMemOnly]>;
3987
+ def int_x86_avx512_mask_scatter_dps_512 :
3988
+ Intrinsic<[], [llvm_ptr_ty, llvm_v16i1_ty,
3989
+ llvm_v16i32_ty, llvm_v16f32_ty, llvm_i32_ty],
3990
+ [IntrArgMemOnly]>;
3991
+ def int_x86_avx512_mask_scatter_qpd_512 :
3992
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
3993
+ llvm_v8i64_ty, llvm_v8f64_ty, llvm_i32_ty],
3994
+ [IntrArgMemOnly]>;
3995
+ def int_x86_avx512_mask_scatter_qps_512 :
3996
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
3997
+ llvm_v8i64_ty, llvm_v8f32_ty, llvm_i32_ty],
3998
+ [IntrArgMemOnly]>;
3999
+
4000
+
4001
+ def int_x86_avx512_mask_scatter_dpq_512 :
4002
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,
4003
+ llvm_v8i32_ty, llvm_v8i64_ty, llvm_i32_ty],
4004
+ [IntrArgMemOnly]>;
4005
+ def int_x86_avx512_mask_scatter_dpi_512 :
4006
+ Intrinsic<[], [llvm_ptr_ty, llvm_v16i1_ty,
4007
+ llvm_v16i32_ty, llvm_v16i32_ty, llvm_i32_ty],
4008
+ [IntrArgMemOnly]>;
4009
+ def int_x86_avx512_mask_scatter_qpq_512 :
4010
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty,llvm_v8i64_ty, llvm_v8i64_ty,
4011
+ llvm_i32_ty],
4012
+ [IntrArgMemOnly]>;
4013
+ def int_x86_avx512_mask_scatter_qpi_512 :
4014
+ Intrinsic<[], [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i64_ty, llvm_v8i32_ty,
4015
+ llvm_i32_ty],
4016
+ [IntrArgMemOnly]>;
4017
+
4018
+ def int_x86_avx512_mask_scatterdiv2_df :
4019
+ Intrinsic<[],
4020
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v2f64_ty, llvm_i32_ty],
4021
+ [IntrArgMemOnly]>;
4022
+
4023
+ def int_x86_avx512_mask_scatterdiv2_di :
4024
+ Intrinsic<[],
4025
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v2i64_ty, llvm_i32_ty],
4026
+ [IntrArgMemOnly]>;
4027
+
4028
+ def int_x86_avx512_mask_scatterdiv4_df :
4029
+ Intrinsic<[],
4030
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4f64_ty, llvm_i32_ty],
4031
+ [IntrArgMemOnly]>;
4032
+
4033
+ def int_x86_avx512_mask_scatterdiv4_di :
4034
+ Intrinsic<[],
4035
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4i64_ty, llvm_i32_ty],
4036
+ [IntrArgMemOnly]>;
4037
+
4038
+ def int_x86_avx512_mask_scatterdiv4_sf :
4039
+ Intrinsic<[],
4040
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v4f32_ty, llvm_i32_ty],
4041
+ [IntrArgMemOnly]>;
4042
+
4043
+ def int_x86_avx512_mask_scatterdiv4_si :
4044
+ Intrinsic<[],
4045
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v2i64_ty, llvm_v4i32_ty, llvm_i32_ty],
4046
+ [IntrArgMemOnly]>;
4047
+
4048
+ def int_x86_avx512_mask_scatterdiv8_sf :
4049
+ Intrinsic<[],
4050
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4f32_ty, llvm_i32_ty],
4051
+ [IntrArgMemOnly]>;
4052
+
4053
+ def int_x86_avx512_mask_scatterdiv8_si :
4054
+ Intrinsic<[],
4055
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i64_ty, llvm_v4i32_ty, llvm_i32_ty],
4056
+ [IntrArgMemOnly]>;
4057
+
4058
+ def int_x86_avx512_mask_scattersiv2_df :
4059
+ Intrinsic<[],
4060
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v4i32_ty, llvm_v2f64_ty, llvm_i32_ty],
4061
+ [IntrArgMemOnly]>;
4062
+
4063
+ def int_x86_avx512_mask_scattersiv2_di :
4064
+ Intrinsic<[],
4065
+ [llvm_ptr_ty, llvm_v2i1_ty, llvm_v4i32_ty, llvm_v2i64_ty, llvm_i32_ty],
4066
+ [IntrArgMemOnly]>;
4067
+
4068
+ def int_x86_avx512_mask_scattersiv4_df :
4069
+ Intrinsic<[],
4070
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4f64_ty, llvm_i32_ty],
4071
+ [IntrArgMemOnly]>;
4072
+
4073
+ def int_x86_avx512_mask_scattersiv4_di :
4074
+ Intrinsic<[],
4075
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4i64_ty, llvm_i32_ty],
4076
+ [IntrArgMemOnly]>;
4077
+
4078
+ def int_x86_avx512_mask_scattersiv4_sf :
4079
+ Intrinsic<[],
4080
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4f32_ty, llvm_i32_ty],
4081
+ [IntrArgMemOnly]>;
4082
+
4083
+ def int_x86_avx512_mask_scattersiv4_si :
4084
+ Intrinsic<[],
4085
+ [llvm_ptr_ty, llvm_v4i1_ty, llvm_v4i32_ty, llvm_v4i32_ty, llvm_i32_ty],
4086
+ [IntrArgMemOnly]>;
4087
+
4088
+ def int_x86_avx512_mask_scattersiv8_sf :
4089
+ Intrinsic<[],
4090
+ [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i32_ty, llvm_v8f32_ty, llvm_i32_ty],
4091
+ [IntrArgMemOnly]>;
4092
+
4093
+ def int_x86_avx512_mask_scattersiv8_si :
4094
+ Intrinsic<[],
4095
+ [llvm_ptr_ty, llvm_v8i1_ty, llvm_v8i32_ty, llvm_v8i32_ty, llvm_i32_ty],
4096
+ [IntrArgMemOnly]>;
3980
4097
}
3981
4098
3982
4099
// AVX-512 conflict detection instruction
0 commit comments