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 > >