[Info-vax] VSI OpenVMS Alpha V8.4-2L1 Layered Product Subset Available

John Reagan xyzzy1959 at gmail.com
Tue Jul 11 12:09:58 EDT 2017


On Monday, July 10, 2017 at 6:14:20 PM UTC-4, Stephen Hoffman wrote:
> On 2017-07-10 21:52:29 +0000, John Reagan said:
> 
> > On Monday, July 10, 2017 at 4:02:39 PM UTC-4, Stephen Hoffman wrote:
> >> On 2017-07-10 19:22:38 +0000, John Reagan said:
> >>> Not to nitpick, but to avoid confusion.  The standard build is NOT 
> >>> unoptimized.  The build uses the default of /OPT=LEVEL=4 for all 
> >>> compiles.  However, the default /ARCH value is EV4 (which also sets the 
> >>> default for /OPT=TUNE).  We added /ARCH=EV6 to the compilations.  We 
> >>> did not add/remove/change any /OPT qualifiers.
> >> 
> >> This approach interspersed duplicated architecture-specific instruction 
> >> streams throughout the objects and executables, and the compilers added 
> >>  conditional gates to select the appropriate code.
> > 
> > Uh, that isn't what you get.  /ARCH=EV6 gets pure EV6 only code.
> 
> I was referring to the existing approach used in all OpenVMS Alpha 
> releases prior to 2L2.   To the default /ARCH setting.
> 
With the default of /ARCH=GENERIC (ie, EV4), you don't get any architecture-specific code in the normal cases, just the traditional ugly code 

47FB041D     00C8		MOV	R27, FP
A63D0018     00CC		LDQ	R17, 24(FP)									    ; 000008
A0310000     00D0		LDL	i, EXT_INT				; R1, (R17)
A65D0020     00D4		LDQ	R18, 32(FP)									    ; 000009
2E720000     00D8		LDQ_U	R19, EXT_WORD				; R19, (R18)
4A7202D3     00DC		EXTWL	R19, EXT_WORD, R19			; R19, R18, R19
F240000A     00E0		BLBS	EXT_WORD, L$2				; R18, L$2
47F30401     00E4		MOV	R19, i					; R19, R1
	     00E8	L$3:
48261721     00E8		SLL	i, 48, i				; R1, 48, R1
48261781     00EC		SRA	i, 48, i				; R1, 48, R1
A61D0028     00F0		LDQ	R16, 40(FP)									    ; 000010
2C10FFFF     00F4		LDQ_U	R0, -1(R16)
48100F40     00F8		EXTQH	R0, R16, R0
48071781     00FC		SRA	R0, 56, i				; R0, 56, R1
47E03400     0100		MOV	1, R0										    ; 000011
47F5041D     0104		MOV	R21, FP
6BFA8001     0108		RET	R26
	     010C	L$2:												    ; 000009
2E920001     010C		LDQ_U	R20, EXT_WORD				; R20, 1(R18)
4A920B54     0110		EXTWH	R20, EXT_WORD, R20			; R20, R18, R20
46930401     0114		BIS	R20, R19, i				; R20, R19, R1
C3FFFFF3     0118		BR	L$3


You do see some uses of AMASK to guard things like "trailz()" and the like to enable the use of a specific post-EV4 instruction.  There are a few cases where GEM will generate some AMASK-based code if you do something like:

CC /OPT=TUNE=EV6 without specifying an /ARCH qualifier.  I did find a single use of that in the system but it isn't something you get by default.



More information about the Info-vax mailing list