https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115161

--- Comment #3 from Sergei Trofimovich <slyfox at gcc dot gnu.org> ---
Looking at -O2's bug.cc.265t.optimized tree optimizations come up with unfolded
saturated sub8:

  _12 = __builtin_ia32_psubusb128 ({ -65, 0, 0, 0, -65, 0, 0, 0, -65, 0, 0, 0,
-65, 0, 0, 0 }, { -99, 0, 0, 0, -99, 0, 0, 0, -99, 0, 0, 0, -99, 0, 0, 0 });
  _13 = __builtin_ia32_pminub128 (_12, { 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0,
32, 0, 0, 0 });
  ...


bug.cc.272r.cse1 still has that subtraction:

    5: r119:V16QI=[`*.LC0']
      REG_EQUAL const_vector
    6: r120:V16QI=[`*.LC1']
      REG_EQUAL const_vector
    7: r118:V16QI=us_minus(r119:V16QI,r120:V16QI)

bug.cc.273r.fwprop1 does not anymore:

    3: NOTE_INSN_BASIC_BLOCK 2
    2: NOTE_INSN_FUNCTION_BEG
    9: r122:V16QI=[`*.LC2']
      REG_EQUAL const_vector
   13: r123:V4SI=r122:V16QI#0<<0x17
      REG_EQUAL const_vector
   16: r128:SI=0x5f800000
   15: r127:V4SI=vec_duplicate(r128:SI)

Could it be that constant folder "forgot" to generate anything for unsupported
saturated-sub instead of leaving it as is?

Reply via email to