I see in platform_macros.h #elif defined(_POWER) || defined(__powerpc64__) || defined(__PPC64__) #define GOOGLE_PROTOBUF_ARCH_POWER 1 #define GOOGLE_PROTOBUF_ARCH_64_BIT 1 #elif defined(__PPC__) #define GOOGLE_PROTOBUF_ARCH_PPC 1 #define GOOGLE_PROTOBUF_ARCH_32_BIT 1 #elif defined(__GNUC__)
I know that I want 64 bit, so think that POWER looks better than PPC. However, I am using g++ to build rather than the default AIX xlc compiler (due to xlc++ not being C++11 compliant), which may be a use-case not considered by the code author. #elif defined(_POWER) || defined(__powerpc64__) || defined(__PPC64__) #define GOOGLE_PROTOBUF_ARCH_POWER 1 #define GOOGLE_PROTOBUF_ARCH_64_BIT 1 #elif defined(__PPC__) #define GOOGLE_PROTOBUF_ARCH_PPC 1 #define GOOGLE_PROTOBUF_ARCH_32_BIT 1 #elif defined(__GNUC__) On Mon, Nov 14, 2016 at 6:01 PM, Adam Cozzette <[email protected]> wrote: > Thanks, Bob. I tried to reach out to one of the authors of that code but I > have not heard back yet. I wonder if the problem may actually be that the > assembly code is correct but that we're choosing the wrong architecture. > I'm not at all familiar with AIX, but just from reading about it on its > Wikipedia entry <https://en.wikipedia.org/wiki/IBM_AIX> it sounds like it > supports both the POWER and PowerPC architectures, which are not exactly > the same. For AIX we seem to always choose the POWER implementation but > maybe we should actually be choosing the PPC implementation. Do you have > any thoughts on whether that could be the case in your situation? > > On Thu, Nov 10, 2016 at 1:40 AM, Bob Wilkinson <[email protected]> > wrote: > >> >> >> On Wednesday, 9 November 2016 22:01:59 UTC, Adam Cozzette wrote: >>> >>> Could you try to narrow it down to one file or the other? The >>> atomicops.h header >>> <https://github.com/google/protobuf/blob/ce5160b83b03c29fd27fc9f58370092b321bf2bc/src/google/protobuf/stubs/atomicops.h#L195> >>> pulls >>> in the right atomic operations implementation based on the platform, so >>> with a little debugging it should be possible to see whether it's pulling >>> the _power.h implementation or the _ppc_gcc.h implementation for your build. >>> >> >> From the expanded .s file (generated by the -S option to g++) >> >> # 214 "./google/protobuf/stubs/atomicops_internals_power.h" 1 >> 1: lwz 9, 0(3) >> cmpw 9, 9 >> bne- 1b >> isync >> >> So it is using the _power.h implementation >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Protocol Buffers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/protobuf. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
