Bug 171869 - intrinsic pminub128 has changed signature
Summary: intrinsic pminub128 has changed signature
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: gcc4   
(Show other bugs)
Version: 4
Hardware: x86_64 Linux
medium
low
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact:
URL:
Whiteboard:
Keywords:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2005-10-27 09:56 UTC by Hakon Bugge
Modified: 2007-11-30 22:11 UTC (History)
0 users

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2005-10-27 11:34:32 UTC
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
C source (162 bytes, text/plain)
2005-10-27 10:34 UTC, Hakon Bugge
no flags Details

Description Hakon Bugge 2005-10-27 09:56:11 UTC
From Bugzilla Helper:
User-Agent: Opera/8.50 (Windows NT 5.1; U; en)

Description of problem:
The sse2 instruction pminub and pmaxub uses unsigned as basic type. In some 
former versions of gcc, the signature of pminub128 uses signed (i.e. char) as 
basic type.

It is possible to cast between the two vector type to avoid the:

error: incompatible type for argument 1 of `__builtin_ia32_pminub128'

but I need to know from which version of gcc this is fixed (in order to perform 
correct cast as function of gcc version).



Version-Release number of selected component (if applicable):
gcc 4.0.0 and gcc 3.x.y

How reproducible:
Always

Steps to Reproduce:
1. (using gcc version 3.x.y) gcc -c -msse3 -O3 -Wall gcc_pminub128_bug.c
2.
3.
  

Actual Results:  gcc_pminub128_bug.c: In function `packed_min':
gcc_pminub128_bug.c:4: error: incompatible type for argument 1 of 
`__builtin_ia32_pminub128'
gcc_pminub128_bug.c:4: error: incompatible type for argument 2 of 
`__builtin_ia32_pminub128'
gcc_pminub128_bug.c:4: error: incompatible types in return


Expected Results:  No errors

Additional info:

In essence, what I need is information for which version of gcc which uses 
signed vs. unsigned basic types for the vector argument to pminub128 and 
pmaxub128.

Comment 1 Hakon Bugge 2005-10-27 10:34:27 UTC
Created attachment 120457 [details]
C source

Comment 2 Jakub Jelinek 2005-10-27 11:34:32 UTC
That's user error.  __builtin_ia32_* aren't meant to be used directly by
the users and are subject to constant changes.

The supported interface are the <{,x,e,p}mmintrin.h>, <mm_malloc.h> and
<mm3dnow.h> inlines and macros.

So, in this case you are looking for _mm_min_epu8 from <emmintrin.h>.


Note You need to log in before you can comment on or make changes to this bug.