On Tue, Jun 6, 2023 at 10:36 PM Uros Bizjak <ubiz...@gmail.com> wrote: > > On Tue, Jun 6, 2023 at 1:42 PM Hongtao Liu <crazy...@gmail.com> wrote: > > > > On Tue, Jun 6, 2023 at 5:11 PM Uros Bizjak <ubiz...@gmail.com> wrote: > > > > > > On Tue, Jun 6, 2023 at 6:33 AM liuhongt via Gcc-patches > > > <gcc-patches@gcc.gnu.org> wrote: > > > > > > > > r14-1145 fold the intrinsics into gimple ABS_EXPR which has UB for > > > > TYPE_MIN, but PABSB will store unsigned result into dst. The patch > > > > uses ABSU_EXPR + VCE instead of ABS_EXPR. > > > > > > > > Also don't fold _mm_abs_{pi8,pi16,pi32} w/o TARGET_64BIT since 64-bit > > > > vector absm2 is guarded with TARGET_MMX_WITH_SSE. > > > > > >This should be !TARGET_MMX_WITH_SSE. TARGET_64BIT is not enough, see > > >the definition of T_M_W_S in i386.h. OTOH, these builtins are > > >available for TARGET_MMX, so I'm not sure if the above check is needed > > >at all. > > BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, > > CODE_FOR_ssse3_absv8qi2, "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, > > UNKNOWN, (int) V8QI_FTYPE_V8QI) > > > > ISA requirement(OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX) will be > > checked by ix86_check_builtin_isa_match which is at the beginning of > > ix86_gimple_fold_builtin. > > Here, we're folding those builtin into gimple ABSU_EXPR, and > > ABSU_EXPR<vector> will be lowered by vec_lower pass when backend > > doesn't support corressponding absm2_optab, that's why i only check > > TARGET_64BIT here. > > > > > Please note that we are using builtins here, so we should not fold to > > > absm2, but to ssse3_absm2, which is also available with TARGET_MMX. > > Yes, that exactly why I checked TARGET_64BIT here, w/ TARGET_64BIT, > > backend suppport absm2_optab which exactly matches ssse3_absm2. > > w/o TARGET_64BIT, the builtin shouldn't folding into gimple ABSU_EXPR, > > but let backend expanded to ssse3_absm2. > > Thanks for the explanation, but for consistency, I'd recommend > checking TARGET_MMX_WITH_SSE (= TARGET_64BIT && TARGET_SSE2) here. The > macro is self-explanatory, while the usage of TARGET_64BIT is not that > descriptive. Sure. > > Uros.
-- BR, Hongtao