On Fri, Jul 11, 2025 at 8:12 PM Michael Eager <ea...@eagercon.com> wrote:

> On 7/10/25 4:41 AM, Gopi Kumar Bulusu wrote:
> >
> > namaskaaram
>
> Hi Gopi!
>
> >
> > Please find the patch attached. This addresses regression for MicroBlaze
> > (PR118280)
>
> Neal Frager posted a different patch (or an RFC) to address pr118280 on
> 7/1/25:
> https://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg376017.html
>
> The patches are different.  Is your patch a replacement for Neal's?
> Can you either reconcile the differences or tell me which patch is
> correct or better?
>

This patch overrides the previous one - it works with/without barrel
shifter.


>
> You might also update the PR with this patch and a comment.
> pr118280 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118280
>

Will do.


> > Atomic support enhanced to fix existing atomic_compare_and_swapsi pattern
> > to handle side effects; new patterns atomic_fetch_op and
> atomic_test_and_set
> > added. As MicroBlaze has no QImode test/set instruction, use shift magic
> > to implement atomic_test_and_set. Make -mxl-barrel-shift the default to
> keep
> > the default atomics code tight.
>
> Include the PR which is resolved in the patch comments.
>

It is already there (Subject)


>
> I'm not quite sure what you mean by "keep the default atomics code tight".
>
> Neal suggested making -mxl-barrel-shift default for linux, but not
> default for bare-metal.  This might be better for backward
> compatibility, but depends on whether there are any MB configurations
> which do not include a barrel shifter.  If someone does have a MB config
> without a barrel shifter and tries to recompile after this patch, it's
> possible that invalid code would be silently generated.
>

I will address this and submit a revision-2 patch.

dhanyavaadaaha
gopi


>
> >
> > Files Changed
> >
> > * gcc/config/microblaze/iterators.md: New
> > * microblaze-protos.h/microblaze.cc : Add microblaze_subword_address
> > * gcc/config/microblaze/microblaze.md: constants: Add UNSPECV_CAS_BOOL,
> >    UNSPECV_CAS_MEM, UNSPECV_CAS_VAL, UNSPECV_ATOMIC_FETCH_OP
> >    type: add atomic
> > * gcc/config/microblaze/microblaze.h: TARGET_DEFAULT : Add
> MASK_BARREL_SHIFT
> > * gcc/config/microblaze/sync.md: Add atomic_fetch_<atomic_optab>si
> >    atomic_test_and_set
> >
> > Target Checked
> > microblazeel-amd-linux
> >
> > Testing
> >
> > deja-g++
> >
> >                  === g++ Summary ===
> >
> > # of expected passes            237906
> > # of unexpected failures        4165
> > # of unexpected successes       3
> > # of expected failures          2180
> > # of unresolved testcases       645
> > # of unsupported tests          2658
> >
> >
> > deja-libstdcpp
> >
> >                  === libstdc++ Summary ===
> >
> > # of expected passes            18180
> > # of unexpected failures        311
> > # of expected failures          133
> > # of unresolved testcases       18
> > # of unsupported tests          853
> >
> > Includes Test case 29_atomics/atomic_flag/clear/1.cc (which checks for
> > atomic_test_and_set)
>
> I don't have a baseline to compare these test results with, or test
> results before applying this patch, so the results don't have any
> meaning to me.  Was the test case 29 failing before applying the patch
> and succeeding after?  Were there any other differences?
>
> Neal indicated that patch was tested using buildroot with
> target=microblazeel-buildroot-linux-gnu.  It looks like you have
> target=microblazeel-amd-linux.  How are you running the test suite?
>
>
> --
> Michael Eager
>
>

Reply via email to