public inbox for cgen@sourceware.org
 help / color / mirror / Atom feed
From: Joern Rennecke <joern.rennecke@superh.com>
To: Doug Evans <dje@transmeta.com>
Cc: cgen@sources.redhat.com
Subject: Re: RFA: sh64-media.cpu : msad.ubq has unsigned inputs.
Date: Wed, 21 May 2003 18:50:00 -0000	[thread overview]
Message-ID: <3ECBCA79.87C5A04A@superh.com> (raw)
In-Reply-To: <16075.45848.115087.832045@casey.transmeta.com>

[-- Attachment #1: Type: text/plain, Size: 1376 bytes --]

Doug Evans wrote:
> I _think_ the problem centers around the implicit widening
> in the original code.  The subtraction is done in QImode
> and a QImode value is subsequently added to a DImode value.

Well, it's more due to a missed explicit widening.

> [Digression:
> In a world in which Umodes don't exist, implicit widening operations
> should probably be disallowed, though part of me will loathe the extra
> amount of typing required.]

It would be unlogical to have to write zero-extensions different
from sign-extensions.  So, since the mode doesn't have signedness
information, implicit widening would be missing that information.

> I don't know the architecture, so I don't know what the desired effect
> of (abs DI (some-QI-value)) is.  Making a wild guess, what about
> something like:
> 
> -                (set acc (abs DI (sub (subword QI rm 0) (subword QI rn 0))))
> +                (set acc (zext DI (abs QI (sub (subword QI rm 0) (subword QI rn 0)))))
> 
> Or maybe it's
> -                (set acc (abs DI (sub (subword QI rm 0) (subword QI rn 0))))
> +                (set acc (zext DI (sub (subword QI rm 0) (subword QI rn 0))))
> 
> [and so on for the rest of the bytes]

No, the zero-extension should happen before the subtraction.
		
-- 
--------------------------
SuperH (UK) Ltd.
2410 Aztec West / Almondsbury / BRISTOL / BS32 4QX
T:+44 1454 465658

[-- Attachment #2: msad-diff-2 --]
[-- Type: text/plain, Size: 2996 bytes --]

2003-05-21  J"orn Rennecke <joern.rennecke@superh.com>

	* sh64-media.cpu (msad.ubq): Inputs are unsigned bytes.

Index: sh64-media.cpu
===================================================================
RCS file: /cvs/src/src/cgen/cpu/sh64-media.cpu,v
retrieving revision 1.5
diff -p -r1.5 sh64-media.cpu
*** sh64-media.cpu	21 May 2003 14:10:46 -0000	1.5
--- sh64-media.cpu	21 May 2003 18:48:32 -0000
***************
*** 1,6 ****
  ; SuperH SHmedia instruction set description.  -*- Scheme -*-
  ; Copyright (C) 2000, 2001 Red Hat, Inc.
! ; Copyright (C) 2002 SuperH Ltd
  ; This file is part of CGEN.
  ; See file COPYING.CGEN for details.
  \f
--- 1,6 ----
  ; SuperH SHmedia instruction set description.  -*- Scheme -*-
  ; Copyright (C) 2000, 2001 Red Hat, Inc.
! ; Copyright (C) 2002, 2003 SuperH Ltd
  ; This file is part of CGEN.
  ; See file COPYING.CGEN for details.
  \f
***************
*** 1275,1290 ****
         ()
         "msad.ubq $rm, $rn, $rd"
         (+ (f-op 18) rm (f-ext 0) rn rd (f-rsvd 0))
!        (sequence ((DI acc))
! 		 (set acc (abs DI (sub (subword QI rm 0) (subword QI rn 0))))
! 		 (set acc (add DI acc (abs (sub (subword QI rm 1) (subword QI rn 1)))))
! 		 (set acc (add DI acc (abs (sub (subword QI rm 2) (subword QI rn 2)))))
! 		 (set acc (add DI acc (abs (sub (subword QI rm 3) (subword QI rn 3)))))
! 		 (set acc (add DI acc (abs (sub (subword QI rm 4) (subword QI rn 4)))))
! 		 (set acc (add DI acc (abs (sub (subword QI rm 5) (subword QI rn 5)))))
! 		 (set acc (add DI acc (abs (sub (subword QI rm 6) (subword QI rn 6)))))
! 		 (set acc (add DI acc (abs (sub (subword QI rm 7) (subword QI rn 7)))))
! 		 (set rd (add rd acc))))
  
  (define-pmacro (-mshaldsl arg) (saturate SI 32 (sll DI arg (and rn 31))))
  (dshmi mshaldsl "Multimedia saturating arithmetic left shift (long word)"
--- 1275,1298 ----
         ()
         "msad.ubq $rm, $rn, $rd"
         (+ (f-op 18) rm (f-ext 0) rn rd (f-rsvd 0))
!        (sequence ((SI acc))
! 		 (set acc (abs (sub (zext SI (subword QI rm 0))
! 				    (zext SI (subword QI rn 0)))))
! 		 (set acc (add acc (abs (sub (zext SI (subword QI rm 1))
! 					     (zext SI (subword QI rn 1))))))
! 		 (set acc (add acc (abs (sub (zext SI (subword QI rm 2))
! 					     (zext SI (subword QI rn 2))))))
! 		 (set acc (add acc (abs (sub (zext SI (subword QI rm 3))
! 					     (zext SI (subword QI rn 3))))))
! 		 (set acc (add acc (abs (sub (zext SI (subword QI rm 4))
! 					     (zext SI (subword QI rn 4))))))
! 		 (set acc (add acc (abs (sub (zext SI (subword QI rm 5))
! 					     (zext SI (subword QI rn 5))))))
! 		 (set acc (add acc (abs (sub (zext SI (subword QI rm 6))
! 					     (zext SI (subword QI rn 6))))))
! 		 (set acc (add acc (abs (sub (zext SI (subword QI rm 7))
! 					     (zext SI (subword QI rn 7))))))
! 		 (set rd (add rd (zext DI acc)))))
  
  (define-pmacro (-mshaldsl arg) (saturate SI 32 (sll DI arg (and rn 31))))
  (dshmi mshaldsl "Multimedia saturating arithmetic left shift (long word)"

      reply	other threads:[~2003-05-21 18:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-21 16:35 Joern Rennecke
2003-05-21 17:11 ` Doug Evans
2003-05-21 18:50   ` Joern Rennecke [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3ECBCA79.87C5A04A@superh.com \
    --to=joern.rennecke@superh.com \
    --cc=cgen@sources.redhat.com \
    --cc=dje@transmeta.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).