Author: nemanjai Date: Wed Oct 26 14:27:11 2016 New Revision: 285229 URL: http://llvm.org/viewvc/llvm-project?rev=285229&view=rev Log: [PowerPC] Implement vector_insert_exp builtins - clang portion
This patch corresponds to review https://reviews.llvm.org/D25956. Committing on behalf of Zaara Syeda. Modified: cfe/trunk/include/clang/Basic/BuiltinsPPC.def cfe/trunk/lib/Headers/altivec.h cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c Modified: cfe/trunk/include/clang/Basic/BuiltinsPPC.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/BuiltinsPPC.def?rev=285229&r1=285228&r2=285229&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/BuiltinsPPC.def (original) +++ cfe/trunk/include/clang/Basic/BuiltinsPPC.def Wed Oct 26 14:27:11 2016 @@ -362,6 +362,9 @@ BUILTIN(__builtin_vsx_xvcpsgnsp, "V4fV4f BUILTIN(__builtin_vsx_xvabssp, "V4fV4f", "") BUILTIN(__builtin_vsx_xvabsdp, "V2dV2d", "") +BUILTIN(__builtin_vsx_xviexpdp, "V2dV2ULLiV2ULLi", "") +BUILTIN(__builtin_vsx_xviexpsp, "V4fV4UiV4Ui", "") + // HTM builtins BUILTIN(__builtin_tbegin, "UiUIi", "") BUILTIN(__builtin_tend, "UiUIi", "") Modified: cfe/trunk/lib/Headers/altivec.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/altivec.h?rev=285229&r1=285228&r2=285229&view=diff ============================================================================== --- cfe/trunk/lib/Headers/altivec.h (original) +++ cfe/trunk/lib/Headers/altivec.h Wed Oct 26 14:27:11 2016 @@ -2497,6 +2497,26 @@ vec_first_mismatch_or_eos_index(vector u return __res[0] >> 5; } +static __inline__ vector double __ATTRS_o_ai +vec_insert_exp(vector double __a, vector unsigned long long __b) { + return __builtin_vsx_xviexpdp((vector unsigned long long)__a,__b); +} + +static __inline__ vector double __ATTRS_o_ai +vec_insert_exp(vector unsigned long long __a, vector unsigned long long __b) { + return __builtin_vsx_xviexpdp(__a,__b); +} + +static __inline__ vector float __ATTRS_o_ai +vec_insert_exp(vector float __a, vector unsigned int __b) { + return __builtin_vsx_xviexpsp((vector unsigned int)__a,__b); +} + +static __inline__ vector float __ATTRS_o_ai +vec_insert_exp(vector unsigned int __a, vector unsigned int __b) { + return __builtin_vsx_xviexpsp(__a,__b); +} + #endif /* vec_cpsgn */ Modified: cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c?rev=285229&r1=285228&r2=285229&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c (original) +++ cfe/trunk/test/CodeGen/builtins-ppc-p9vector.c Wed Oct 26 14:27:11 2016 @@ -698,3 +698,31 @@ vector unsigned short test54(void) { // CHECK-NEXT: ret <8 x i16> return vec_popcnt (vusa); } +vector double test55(void) { +// CHECK-BE: @llvm.ppc.vsx.xviexpdp(<2 x i64> %{{.+}}, <2 x i64> +// CHECK-BE-NEXT: ret <2 x double> +// CHECK: @llvm.ppc.vsx.xviexpdp(<2 x i64> %{{.+}}, <2 x i64> +// CHECK-NEXT: ret <2 x double> + return vec_insert_exp (vda,vulb); +} +vector double test56(void) { +// CHECK-BE: @llvm.ppc.vsx.xviexpdp(<2 x i64> %{{.+}}, <2 x i64> +// CHECK-BE-NEXT: ret <2 x double> +// CHECK: @llvm.ppc.vsx.xviexpdp(<2 x i64> %{{.+}}, <2 x i64> +// CHECK-NEXT: ret <2 x double> + return vec_insert_exp (vula, vulb); +} +vector float test57(void) { +// CHECK-BE: @llvm.ppc.vsx.xviexpsp(<4 x i32> %{{.+}}, <4 x i32> +// CHECK-BE-NEXT: ret <4 x float> +// CHECK: @llvm.ppc.vsx.xviexpsp(<4 x i32> %{{.+}}, <4 x i32> +// CHECK-NEXT: ret <4 x float> + return vec_insert_exp (vfa,vuib); +} +vector float test58(void) { +// CHECK-BE: @llvm.ppc.vsx.xviexpsp(<4 x i32> %{{.+}}, <4 x i32> +// CHECK-BE-NEXT: ret <4 x float> +// CHECK: @llvm.ppc.vsx.xviexpsp(<4 x i32> %{{.+}}, <4 x i32> +// CHECK-NEXT: ret <4 x float> + return vec_insert_exp (vuia,vuib); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits