I did mean compile time checking.
I agree the msdn page specifies that support for the popcnt instruction
should be checked before using the corresponding intrinsic.
I did not realize that the behaviour differs here because we are using an
intrinsic, not a builtin like we do for GCC. I agree the compiler should
not try to emulate it, even though it would not break porting compatibility.

Cheers!

Alexandre

On Wed, Apr 25, 2012 at 6:28 PM, Vitaly Repeshko <[email protected]>wrote:

> On Wed, Apr 25, 2012 at 10:18 AM, Alexei Filippov <[email protected]>
> wrote:
> >
> > 2012/4/25 Vitaly Repeshko <[email protected]>
> >>
> >> On Wed, Apr 25, 2012 at 1:24 AM, Alexandre Rames
> >> <[email protected]> wrote:
> >> > Not using the intrinsic shouldn't make any difference here.
> >> >
> >> > But __popcnt is the intrinsic, not the instruction. Shouldn't MS
> >> > compiler
> >> > automatically detect hardware support and use another solution if the
> >> > popcnt
> >> > isn't available.
> >>
> >> Maybe it should, but it's not what the MSDN page says it does. If it
> >> did, this code code would have to check some global flag every time,
> >> which would be more expensive than the operation itself, or require
> >> some patching in runtime.
> >>
> > He probably meant compile time checking.
>
> Compile time checking won't work because this code is compiled only
> once and then used on different platforms, including old ones. E.g.,
> there is no SSE2 build of V8; whether processor supports SSE2 is
> checked in runtime before JIT code is compiled.
>
>
> -- Vitaly
>
> > I used to implement some sse and avx intrinsics in Sun compiler and it
> also
> > does not provide generic implementation (emulation) for instruction
> related
> > intrinsics.
> > Btw their declarations are guarded by corresponding ifdefs in system
> > headers, so you cannot place a call to intrinsic which is not supported
> by
> > the target arch.
> > As for some other intrinsics (not instruction related), e.g. memcpy,
> strlen,
> > compiler provides multiple implementations that make full use of
> available
> > instruction set.
> >
> > Alexei
> >
> >>
> >> -- Vitaly
> >>
> >> >
> >> > On Wed, Apr 25, 2012 at 9:22 AM, Florian Schneider
> >> > <[email protected]>
> >> > wrote:
> >> >>
> >> >> Hm, interesting. I assume that we don't instruct g++ or msvc to
> >> >> generate
> >> >> any fancy SSE4.1 instructions anyway because V8 has to run on old
> >> >> non-SSE
> >> >> hardware - in which case the benefit of using the compiler intrinsics
> >> >> is
> >> >> probably void.
> >> >>
> >> >> Den 24. apr. 2012 19.20 skrev Vitaly Repeshko <[email protected]
> >:
> >> >>
> >> >>> FYI. http://msdn.microsoft.com/en-us/library/bb385231.aspx says "If
> >> >>> you run code that uses this intrinsic on hardware that does not
> >> >>> support the popcnt instruction, the results are unpredictable."
> >> >>>
> >> >>>
> >> >>> -- Vitaly
> >> >>>
> >> >>> On Tue, Apr 24, 2012 at 10:03 AM, Florian Schneider
> >> >>> <[email protected]> wrote:
> >> >>> > You're welcome. The Win32 builder still not happy. I'm not so
> >> >>> > familiar
> >> >>> > with
> >> >>> > our Windows buildbot configuration, so I'm fixing it for now by
> just
> >> >>> > avoiding the problematic compiler intrinsic
> >> >>> > (http://code.google.com/p/v8/source/detail?r=11428) It should not
> >> >>> > make
> >> >>> > a big
> >> >>> > difference, should it?
> >> >>> >
> >> >>> >
> >> >>> >
> >> >>> > Den 24. apr. 2012 18.14 skrev Alexandre Rames
> >> >>> > <[email protected]>:
> >> >>> >
> >> >>> >> Thanks!
> >> >>> >>
> >> >>> >>
> >> >>> >> On Tue, Apr 24, 2012 at 4:36 PM, <[email protected]>
> wrote:
> >> >>> >>>
> >> >>> >>> Thanks. Still LGTM.
> >> >>> >>>
> >> >>> >>> I'll re-land it
> >> >>> >>>
> >> >>> >>> http://codereview.chromium.org/9638018/
> >> >>> >>
> >> >>> >>
> >> >>> >
> >> >>> > --
> >> >>> > v8-dev mailing list
> >> >>> > [email protected]
> >> >>> > http://groups.google.com/group/v8-dev
> >> >>>
> >> >>> --
> >> >>> v8-dev mailing list
> >> >>> [email protected]
> >> >>> http://groups.google.com/group/v8-dev
> >> >>
> >> >>
> >> >
> >> > --
> >> > v8-dev mailing list
> >> > [email protected]
> >> > http://groups.google.com/group/v8-dev
> >
> >
>
> --
> v8-dev mailing list
> [email protected]
> http://groups.google.com/group/v8-dev
>

-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to