RFR(s): PPC64: Use andis instead of lis/and
Lindenmaier, Goetz
goetz.lindenmaier at sap.com
Tue Nov 29 15:54:35 UTC 2016
Hi Igor,
change looks good, thanks!
Best regards,
Goetz
> -----Original Message-----
> From: ppc-aix-port-dev [mailto:ppc-aix-port-dev-bounces at openjdk.java.net] On
> Behalf Of Igor Henrique Soares Nunes
> Sent: Freitag, 25. November 2016 16:33
> To: Doerr, Martin <martin.doerr at sap.com>; Bruno Alexandre Rosa
> <bruno.rosa at eldorado.org.br>; hotspot-compiler-dev at openjdk.java.net; ppc-
> aix-port-dev at openjdk.java.net
> Subject: RE: RFR(s): PPC64: Use andis instead of lis/and
>
>
> Hi Martin,
>
> Thanks for your review.
>
> In order to fix what you suggested, in spite of casting the immediate value to
> short, it is now casting to unsigned short.
>
> https://igorsnunes.github.io/openjdk/webrev/8170328-01/
>
> Best regards,
> Igor
>
> Ps: Sorry for not using the bug number in the RFR.
>
> -----Original Message-----
> From: Doerr, Martin [mailto:martin.doerr at sap.com]
> Sent: sexta-feira, 25 de novembro de 2016 08:29
> To: Bruno Alexandre Rosa <bruno.rosa at eldorado.org.br>; Igor Henrique Soares
> Nunes <igor.nunes at eldorado.org.br>; hotspot-compiler-dev at openjdk.java.net;
> ppc-aix-port-dev at openjdk.java.net
> Subject: RE: RFR(s): PPC64: Use andis instead of lis/and
>
> Hi Bruno,
>
> thank you very much for providing the webrev.
>
> Please note that andis needs an unsigned 16 bit immediate (unlike addis).
> The type conversion is wrong: (int)((short)...
> Zero extend is needed instead of sign extend.
> Using the operand immIhi16 should be ok in this case because we don't care
> about the high 32 bit of the register.
>
> Besides that, the change looks good to me.
>
> Please use the bug number for RFR's in the future:
> RFR(S): 8170328 PPC64: Use andis instead of lis/and
>
> Thanks and best regards,
> Martin
>
>
> -----Original Message-----
> From: ppc-aix-port-dev [mailto:ppc-aix-port-dev-bounces at openjdk.java.net] On
> Behalf Of Bruno Alexandre Rosa
> Sent: Donnerstag, 24. November 2016 21:53
> To: Igor Henrique Soares Nunes <igor.nunes at eldorado.org.br>; hotspot-
> compiler-dev at openjdk.java.net; ppc-aix-port-dev at openjdk.java.net
> Subject: RE: RFR(s): PPC64: Use andis instead of lis/and
>
> Igor forgot to post the web-rev, so I'm posting it here for him:
>
> https://igorsnunes.github.io/openjdk/webrev/8170328/
>
> Regards,
> Bruno Rosa
>
> -----Original Message-----
> From: ppc-aix-port-dev [mailto:ppc-aix-port-dev-bounces at openjdk.java.net] On
> Behalf Of Igor Henrique Soares Nunes
> Sent: quinta-feira, 24 de novembro de 2016 18:36
> To: hotspot-compiler-dev at openjdk.java.net; ppc-aix-port-
> dev at openjdk.java.net
> Subject: RFR(s): PPC64: Use andis instead of lis/and
>
> Hi all,
>
> The following rev solves an improvement suggested by Gustavo Romero
> (http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2016-
> October/024664.html):
>
> https://bugs.openjdk.java.net/browse/JDK-8170328
>
> The issue is:
>
> Use andis. in place of following sequence.
>
> 845 1.2e-04 : 3fff6027e134: lis r18,7
> 36054 0.0052 : 3fff6027e138: and r18,r17,r18
>
> This patch resulted in small improvements in the Opto Assembly dumped code.
> See the explanation below:
>
> Situation 1.1)
>
> 03c B3: # B7 B4 <- B2 Freq: 0.899982 03c LIS R15, #133955584.hi
> 040 AND R14, R3, R15
> 044 CMPW CCR6, R14, R15
> 048 Beq CCR6, B7 P=0.100000 C=-1.000000
>
> Situation 1.2)
>
> 03c B3: # B7 B4 <- B2 Freq: 0.899982
> 03c ANDIS R15, R3, #133955584.hi
> 040 LIS R17, #133955584.hi
> 044 CMPW CCR5, R15, R17
> 048 Beq CCR5, B7 P=0.100000 C=-1.000000
>
> Situation 2.1)
>
> 370 B91: # B392 B92 <- B90 Freq: 0.000197734
> 370 LIS R14, #251658240.hi
> 374 AND R15, R3, R14
> 378 LIS R17, #16777216.hi
> 37c CMPW CCR5, R15, R17
> 380 Beq CCR5, B392 P=0.100000 C=-1.000000
>
> Situation 2.2)
>
> 370 B91: # B392 B92 <- B90 Freq: 0.000197734
> 370 ANDIS R15, R3, #251658240.hi
> 374 LIS R14, #16777216.hi
> 378 CMPW CCR6, R15, R14
> 37c Beq CCR6, B392 P=0.100000 C=-1.000000
>
> In situations 1.1 and 2.1 the patch is not applied. In 1.2 and 2.2 the patch is
> applied.
>
> Comparing 2.1 and 2.2 some performance gain is seen, as one less instruction
> is needed.
>
> Comparing 1.1 and 1.2, no performance gain is seen. In 1.1 the value loaded in
> R15 is used in AND and CMPW (no reload).
> In 1.2, the ANDIS operation is executed first, so that, no register reuse is made.
>
> Att.,
>
> Igor Nunes
More information about the ppc-aix-port-dev
mailing list