diff mbox

[v2,2/2] powerpc: Fix operand prefixes

Message ID 1461682306-30603-1-git-send-email-gftg@linux.vnet.ibm.com
State New
Headers show

Commit Message

Gabriel F. T. Gomes April 26, 2016, 2:51 p.m. UTC
On Wed, 20 Apr 2016 17:10:56 -0500
Steven Munroe <munroesj@linux.vnet.ibm.com> wrote:

> On Wed, 2016-04-20 at 17:55 -0300, Gabriel F. T. Gomes wrote:
> > The file sysdeps/powerpc/sysdeps.h defines aliases for control register
> > operands.  E.g.: 'cr7' means control register 7.  On the one hand, this
> > increases readability, as it makes it easier for readers to know whether the
> > operand is a control register, a general purpose register or an immediate.  On
> > the other hand, this permits that control register be written as if they were
> > general purpose, and vice-versa, thus reducing the readability of the code.
> >   
> 
> I think you mean condition registers, and there are instructions that
> will correctly update a specific cr# (cmpdi for example). 
> 
> But li and ld are not examples of instructions that do that. 

Indeed, I meant condition register.

This new version should fix it. Thank you!

---8<---
The file sysdeps/powerpc/sysdeps.h defines aliases for condition register
operands.  E.g.: 'cr7' means condition register 7.  On the one hand, this
increases readability, as it makes it easier for readers to know whether the
operand is a condition register, a general purpose register or an immediate.
On the other hand, this permits that condition registers be written as if they
were general purpose, and vice-versa, thus reducing the readability of the
code.

This commit removes some of these unintentional misuses.

The changes have no effect on the final code.  Checked with objdump.

2016-04-18  Gabriel F. T. Gomes  <gftg@linux.vnet.ibm.com>

	* sysdeps/powerpc/powerpc64/power8/strncpy.S: Fix use of condition
	registers specifiers where general purpose registers specifiers should
	have been used.
---
 sysdeps/powerpc/powerpc64/power8/strncpy.S | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Tulio Magno Quites Machado Filho May 3, 2016, 2:24 p.m. UTC | #1
"Gabriel F. T. Gomes" <gftg@linux.vnet.ibm.com> writes:

> The file sysdeps/powerpc/sysdeps.h defines aliases for condition register
> operands.  E.g.: 'cr7' means condition register 7.  On the one hand, this
> increases readability, as it makes it easier for readers to know whether the
> operand is a condition register, a general purpose register or an immediate.
> On the other hand, this permits that condition registers be written as if they
> were general purpose, and vice-versa, thus reducing the readability of the
> code.
>
> This commit removes some of these unintentional misuses.
>
> The changes have no effect on the final code.  Checked with objdump.
>
> 2016-04-18  Gabriel F. T. Gomes  <gftg@linux.vnet.ibm.com>
>
> 	* sysdeps/powerpc/powerpc64/power8/strncpy.S: Fix use of condition
> 	registers specifiers where general purpose registers specifiers should
> 	have been used.

LGTM.
Gabriel F. T. Gomes May 4, 2016, 1:17 p.m. UTC | #2
Thank you.

Pushed as eb3b8a4924502e508d5b353ed75f39826d2c9466.

On Tue, 03 May 2016 11:24:45 -0300
"Tulio Magno Quites Machado Filho" <tuliom@linux.vnet.ibm.com> wrote:

> "Gabriel F. T. Gomes" <gftg@linux.vnet.ibm.com> writes:
> 
> > The file sysdeps/powerpc/sysdeps.h defines aliases for condition register
> > operands.  E.g.: 'cr7' means condition register 7.  On the one hand, this
> > increases readability, as it makes it easier for readers to know whether the
> > operand is a condition register, a general purpose register or an immediate.
> > On the other hand, this permits that condition registers be written as if they
> > were general purpose, and vice-versa, thus reducing the readability of the
> > code.
> >
> > This commit removes some of these unintentional misuses.
> >
> > The changes have no effect on the final code.  Checked with objdump.
> >
> > 2016-04-18  Gabriel F. T. Gomes  <gftg@linux.vnet.ibm.com>
> >
> > 	* sysdeps/powerpc/powerpc64/power8/strncpy.S: Fix use of condition
> > 	registers specifiers where general purpose registers specifiers should
> > 	have been used.  
> 
> LGTM.
>
diff mbox

Patch

diff --git a/sysdeps/powerpc/powerpc64/power8/strncpy.S b/sysdeps/powerpc/powerpc64/power8/strncpy.S
index 0bb3bd4..437edeb 100644
--- a/sysdeps/powerpc/powerpc64/power8/strncpy.S
+++ b/sysdeps/powerpc/powerpc64/power8/strncpy.S
@@ -294,7 +294,7 @@  L(pagecross):
 #endif
 	orc	r9,r7,r9	/* Mask bits that are not part of the
 				   string.  */
-	li	cr7,0
+	li	r7,0
 	cmpb	r9,r9,r7	/* Check for null bytes in DWORD1.  */
 	cmpdi	cr7,r9,0
 	bne	cr7,L(short_path_prepare_2)
@@ -305,14 +305,14 @@  L(pagecross):
 	/* For next checks we have aligned address, so we check for more
 	   three doublewords to make sure we can read 16 unaligned bytes
 	   to start the bulk copy with 16 aligned addresses.  */
-	ld	cr7,8(r11)
+	ld	r7,8(r11)
 	cmpb	r9,r7,r9
 	cmpdi	cr7,r9,0
 	bne	cr7,L(short_path_prepare_2)
-	addi	cr7,r8,-8
+	addi	r7,r8,-8
 	cmpldi	cr7,r7,8
 	ble	cr7,L(short_path_prepare_2)
-	ld	cr7,16(r11)
+	ld	r7,16(r11)
 	cmpb	r9,r7,r9
 	cmpdi	cr7,r9,0
 	bne	cr7,L(short_path_prepare_2)