Your code requires 2 scratch registers. The following uses just 1
scratch register and does not require literal storage:

  LA R0,3
  NR R0,R15
  LTR R0,R0
  BNZ BAD_RC

(I still have to use code that works on boxes without the jump
instructions.)

Tony Thigpen


-----Original Message -----
 From: McKown, John
 Sent: 08/27/2012 11:34 AM
Destroys the contents of R15, so I guess I would load R15 into, say, R0 and do the OR 
operation on R0. However, I'm on a z9 and will likely never be on anything more advanced. 
So I'll need to load the mask into another register, say R1. That would either require an 
L R1,variable or literal (=X'FFFFFFFC'), or do an: AHI R1,X'04' followed by an LCR R1,R1. 
I don't know which of those is "better". I guess the Load would be more easily 
understood by even a novice.

         LR      R0,R15
         L       R1,=A(-4)
         OR      R0,R1
         CR      R0,R1
         JNE     BAD_RC

--
John McKown
Systems Engineer IV
IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010
(817) 255-3225 phone *
john.mck...@healthmarkets.com * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or 
proprietary information. If you are not the intended recipient, please contact 
the sender by reply e-mail and destroy all copies of the original message. 
HealthMarkets(r) is the brand name for products underwritten and issued by the 
insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance 
Company(r), Mid-West National Life Insurance Company of TennesseeSM and The 
MEGA Life and Health Insurance Company.SM


-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-
l...@listserv.uga.edu] On Behalf Of John Gilmore
Sent: Monday, August 27, 2012 10:20 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: which instructions should I use?

Register contents that are a multiple of 4 are all of the form

xxxxx...xx00

Inclusive ORing such a value with the mask

11111...1100

and testing the result for equality with this same mask then yields a
simple, low-overhead test for a multiple-of-four value.

--jg

On 8/27/12, McKown, John <john.mck...@healthmarkets.com> wrote:
Thanks for the technique. I'm not sure that I like the NILL
instruction at
this point. It could change an "invalid" (as in "not planned for") RC
into a
"valid" RC. Looks like maybe I could use TMLL to just test. (TMLL
R15,X'000C')

--
John McKown
Systems Engineer IV
IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010
(817) 255-3225 phone *
john.mck...@healthmarkets.com * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential
or
proprietary information. If you are not the intended recipient,
please
contact the sender by reply e-mail and destroy all copies of the
original
message. HealthMarkets(r) is the brand name for products underwritten
and
issued by the insurance subsidiaries of HealthMarkets, Inc. -The
Chesapeake
Life Insurance Company(r), Mid-West National Life Insurance Company
of
TennesseeSM and The MEGA Life and Health Insurance Company.SM


-----Original Message-----
From: IBM Mainframe Assembler List [mailto:ASSEMBLER-
l...@listserv.uga.edu] On Behalf Of Martin Truebner
Sent: Monday, August 27, 2012 8:15 AM
To: ASSEMBLER-LIST@LISTSERV.UGA.EDU
Subject: Re: which instructions should I use?

John,

you still need base+displacement .... desire for an index
register;

They come in most cases when there is space in the nibbles for it.
But
for the case you cited there is no need to cover code in
"procedure division" with a base. (Dynamic storage and literalpool
do have a base!) -Here is how:

         CALL PROGRAM,(PARM1,PARM2),VL
         CHI  R15,=Y(MAXENTRIES)
         JH   INVALID_RC
         L    R15,=A(RC0,RC4,RC8,RCC)(R15)
         BR   R15

Your addon (check for a valid rc) could also be done with this

         NILL R15,X'000C'

as a result you only have valid combinations left over (Yes I
cheated
and added an entry for C).

--
Martin

Pi_cap_CPU - all you ever need around MWLC/SCRT/CMT in z/VSE
more at http://www.picapcpu.de



Reply via email to