I do that anyway; AND I use ASMMREL ON.
My point is that the IF structure generates the following:
CLI 0(r1),c'*'
JNE not_true
J <iteration_loop>
Not_true ds 0h
With an ITERATE_IF structure, you would get
CLI 0(R1),c'*'
JE <iteration_loop>
With the IF structure, given the normal ratio of comment to "real" data, you
will have a very high percentage of pipeline flush due to incorrect branch
prediction.
-----Original Message-----
From: IBM Mainframe Assembler List [mailto:[email protected]] On
Behalf Of Dougie Lawson
Sent: 15 May 2017 08:21
To: [email protected]
Subject: Re: Structured programminng macros
Hi Pieter,
What happens if you assemble with IEABRCX DEFINE & IEABRCX ENABLE rather than
trying to re-write the branches yourself?
Regards, Dougie
On 14 May 2017 at 21:17, Pieter Wiid <[email protected]> wrote:
> Has anybody tried to make the HLASM toolkit's SPM's work with compare
> and jump / compare and branch instructions?
>
> e.g.
> DO INF
> JAS R14,some_function
> DOEXIT CIJNE,R15,0
> :
> :
> ENDDO
>
> And another idea: have an ITERATE_IF similar to DOEXIT. I.e. if test
> condition is true, jump to iteration point.
> At first glance, I thought to jump to the top of the loop, but things
> like BCT / JCT, and DO WHILE/UNTIL loops means that the ITERATE would
> have to branch to the end of the loop.
>
> Example:
> DO INF
> GET INFILE
> ITERATE_IF CLI,0(R1),EQ,c'*'
> <process non-comment>
> ENDDO
>
> At the moment, I would have to code
> IF CLI,0(R1),EQ,c'*'
> ITERATE
> ENDIF
>
> The latter would generate "bad" branches (pipeline-flushing) most of
> the time, assuming you would have less comment cards than non-comment.
>
> Pieter
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
>
--
http://twitter.com/DougieLawson