Bug 171869 - intrinsic pminub128 has changed signature
Summary: intrinsic pminub128 has changed signature
Alias: None
Product: Fedora
Classification: Fedora
Component: gcc4   
(Show other bugs)
Version: 4
Hardware: x86_64 Linux
Target Milestone: ---
Assignee: Jakub Jelinek
QA Contact:
Depends On:
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:
Last Closed: 2005-10-27 11:34:32 UTC
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
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:

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

Actual Results:  gcc_pminub128_bug.c: In function `packed_min':
gcc_pminub128_bug.c:4: error: incompatible type for argument 1 of 
gcc_pminub128_bug.c:4: error: incompatible type for argument 2 of 
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 

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.