|
From: Robert S. <rm...@un...> - 2026-06-09 15:18:14
|
On Di, 2026-06-09 at 01:08 +0100, andy pugh wrote:
> On Mon, 8 Jun 2026 at 11:40, Bertho Stultiens <lc...@va...>
> wrote:
> >
> > I'm not sure I can "see" the problem anymore ;-)
>
> > > (U8)((U32)((U32)((U32)((U32)((U32)((U32)((U32)((S32)(((FLAG)((S32
> > > )((S32)(((FLAG)((S32)
> > > ((S32)(((FLAG)((S32)((S32)(tmp_Switch1_bhzg ? 1 : 0)
>
> I wonder if it matters, or if the compiler loses it all?
>
> I might need to manually strip the casts, compile both and inspect.
> (And if it is actually different, and worse, have words. we pay for
> this)
>
>
Most of the casts just don't make much sense (and are of no
consequence), it just populates a uint8 bitfield with the results of
various comparisons.
the last part (bit 7) reads
(U32)
(
(S32)
(
(
((U32)Var1 == Lv2) ? ((S32)1) : ((S32)0)) * 64)
)
so depending on Var1==Lv2 being nonzero it takes either 0 or 64 as
signed 32bit int, casts that to unsigned 32bit, adds it to the results
of the previous clauses. finally the result is cast to 8 bit and put
into tmp_VectorConcatenate_atij[1].
I guess human would write that differently.
--
Robert Schöftner <rm...@un...>
|