Displaying 6 results from an estimated 6 matches for "_m64".
Did you mean:
_64
2008 Oct 15
3
[LLVMdev] Making GEP into vector illegal?
...th a union, though.
>>
>> Hum what's your take on this then:
>>
>> /* The Intel API is flexible enough that we must allow aliasing with
>> other
>> vector types, and their scalar components. */
>> /* APPLE LOCAL 4505813 */
>> typedef long long __m64 __attribute__ ((__vector_size__ (8),
>> __may_alias__));
>
> This is actually completely different AFAIK,
That statement was that:
> float4 a;
> float* ptr_z = (float*)(&a) + 3;
``violates strict aliasing``
That assertion is wrong. The docs says:
@item may_alias
Accesses...
2008 Oct 15
0
[LLVMdev] Making GEP into vector illegal?
...n is wrong. The docs says:
>
> @item may_alias
> Accesses to objects with types with this attribute are not subjected
> to
> type-based alias analysis, but are instead assumed to be able to alias
> any other type of objects, just like the @code{char} type.
>
> clearly, is _m64 is to be treated as char, then, all stores before it
> are complete and no loads can be moved before it, unless you can't
> tell that this happened. As for what it allows, it allows many
> things, including the original snippet that was said to violate strict
> aliasing. I can'...
2008 Oct 14
2
[LLVMdev] Making GEP into vector illegal?
...does allow you to use a slightly more elaborate
> workaround with a union, though.
Hum what's your take on this then:
/* The Intel API is flexible enough that we must allow aliasing with
other
vector types, and their scalar components. */
/* APPLE LOCAL 4505813 */
typedef long long __m64 __attribute__ ((__vector_size__ (8),
__may_alias__));
:-)
2008 Oct 15
0
[LLVMdev] Making GEP into vector illegal?
...laborate
>> workaround with a union, though.
>
> Hum what's your take on this then:
>
> /* The Intel API is flexible enough that we must allow aliasing with
> other
> vector types, and their scalar components. */
> /* APPLE LOCAL 4505813 */
> typedef long long __m64 __attribute__ ((__vector_size__ (8),
> __may_alias__));
This is actually completely different AFAIK, this allows things like:
((float*)&myvec4)[2]
which is exactly what the proposal wants to continue supporting in the
IR.
-Chris
2009 Oct 13
3
Proposal for replacing asm code with intrinsics
...ly with compiler intrinsic which compiles into 1-2 assembly instructions and are much easier to maintain.
For example:
_mm_sad_epu8(__m128, __m128) will be compiled in PSADBW instruction with compiler-allocated registers.
And code like:
psadbw mm4,mm5
paddw mm0,mm4
Can be re-written into
_m64 mm0, mm4, mm5, mm6, mm7; //of course using meaningful names
mm0= _mm_add_epi16(mm0, _mm_sad_pu8(mm4, mm5));
Compiler will replace variables with actual registers, ensuring better allocation and scheduling of them.
So, benefits are:
1) Easier to read & understand code which can use same variabl...
2008 Oct 15
1
[LLVMdev] Making GEP into vector illegal?
...> @item may_alias
>> Accesses to objects with types with this attribute are not subjected
>> to
>> type-based alias analysis, but are instead assumed to be able to
>> alias
>> any other type of objects, just like the @code{char} type.
>>
>> clearly, is _m64 is to be treated as char, then, all stores before it
>> are complete and no loads can be moved before it, unless you can't
>> tell that this happened. As for what it allows, it allows many
>> things, including the original snippet that was said to violate
>> strict
&g...