Thread

Commits

  1. Add MSVC support for pg_leftmost_one_pos32() and friends

  2. Add assert checking to pg_leftmost_one_pos32() and friends

  1. bitscan forward/reverse on Windows

    John Naylor <john.naylor@enterprisedb.com> — 2023-01-25T01:42:44Z

    Attached is a quick-and-dirty attempt to add MSVC support for the
    rightmost/leftmost-one-pos functions.
    
    0001 adds asserts to the existing coding.
    0002 adds MSVC support. Tests pass on CI, but it's of course possible that
    there is some bug that prevents hitting the fastpath. I've mostly used
    the platform specific types, so some further cleanup might be needed.
    0003 tries one way to reduce the duplication that arose in 0002. Maybe
    there is a better way.
    
    -- 
    John Naylor
    EDB: http://www.enterprisedb.com
    
  2. Re: bitscan forward/reverse on Windows

    John Naylor <john.naylor@enterprisedb.com> — 2023-02-08T08:14:08Z

    I wrote:
    > Attached is a quick-and-dirty attempt to add MSVC support for the
    rightmost/leftmost-one-pos functions.
    >
    > 0001 adds asserts to the existing coding.
    > 0002 adds MSVC support. Tests pass on CI, but it's of course possible
    that there is some bug that prevents hitting the fastpath. I've mostly used
    the platform specific types, so some further cleanup might be needed.
    
    I've cleaned these up and verified on godbolt.org that they work as
    intended and still pass CI. I kept the Windows types as does other Winows
    code in the tree, but used bool instead of unsigned char because it's used
    like a boolean.
    
    0003 is separate because I'm not quite sure how detailed to comment the
    #ifdef maze. Could be left out.
    0004 simplifies AllocSetFreeIndex() in the course of supporting MSVC. The
    output is identical to HEAD in non-assert builds using gcc.
    
    0002 through 0004 could be squashed together.
    
    This plugs a hole in our platform-specific intrinsic support and is fairly
    straightforward. Review welcome, but if there is none I intend to commit in
    a week or two.
    
    --
    John Naylor
    EDB: http://www.enterprisedb.com
    
  3. Re: bitscan forward/reverse on Windows

    John Naylor <john.naylor@enterprisedb.com> — 2023-02-20T08:30:33Z

    On Wed, Feb 8, 2023 at 3:14 PM John Naylor <john.naylor@enterprisedb.com>
    wrote:
    > > 0001 adds asserts to the existing coding.
    > > 0002 adds MSVC support. Tests pass on CI, but it's of course possible
    that there is some bug that prevents hitting the fastpath. I've mostly used
    the platform specific types, so some further cleanup might be needed.
    >
    > I've cleaned these up and verified on godbolt.org that they work as
    intended and still pass CI. I kept the Windows types as does other Winows
    code in the tree, but used bool instead of unsigned char because it's used
    like a boolean.
    >
    > 0003 is separate because I'm not quite sure how detailed to comment the
    #ifdef maze. Could be left out.
    > 0004 simplifies AllocSetFreeIndex() in the course of supporting MSVC. The
    output is identical to HEAD in non-assert builds using gcc.
    >
    > 0002 through 0004 could be squashed together.
    >
    > This plugs a hole in our platform-specific intrinsic support and is
    fairly straightforward. Review welcome, but if there is none I intend to
    commit in a week or two.
    
    I've committed 0001 separately, and squashed 0002 and 0004, deciding that
    0003 didn't really add to readability.
    
    --
    John Naylor
    EDB: http://www.enterprisedb.com