[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