Displaying 3 results from an estimated 3 matches for "f32v4".
2005 May 11
0
[LLVMdev] avoid live range overlap of "vector" registers
...he
context of the SelectionDAG framework that all of the code generators
either currently use or are moving to. I updated the documentation here:
http://llvm.cs.uiuc.edu/ChrisLLVM/docs/ExtendingLLVM.html#intrinsic
This will allow you to do something like this:
%i32v4 = type <4 x uint>
%f32v4 = type <4 x float>
declare %f32v4 %swizzle(%f32v4 %In, %i32v4 %Form)
%G = external global %f32v4
void %test() {
%A = load %f32v4* %G
%B = call %f32v4 %swizzle(%f32v4 %A, %i32v4 <uint 1, uint 1, uint 1, uint 1>) ;; splat XYZW -> YYYY
store %f32v4 %B, %f...
2005 May 11
2
[LLVMdev] avoid live range overlap of "vector" registers
On Tue May 10 2005, Chris Lattner wrote:
>On Tue, 10 May 2005, Morten Ofstad wrote:
>> Actually, I think it would be better to define the registers as a machine
>> value type for packed float x4, and providing some 'extract' and 'inject'
>> instructions to access individual components... There should also be a
>> 'shuffle' instruction
2005 May 11
2
[LLVMdev] avoid live range overlap of "vector" registers
...k that all of the code generators
> either currently use or are moving to. I updated the documentation
> here: http://llvm.cs.uiuc.edu/ChrisLLVM/docs/ExtendingLLVM.html#intrinsic
>
> This will allow you to do something like this:
>
> %i32v4 = type <4 x uint>
>
> %f32v4 = type <4 x float>
>
> declare %f32v4 %swizzle(%f32v4 %In, %i32v4 %Form)
>
> %G = external global %f32v4
>
> void %test() {
> %A = load %f32v4* %G
> %B = call %f32v4 %swizzle(%f32v4 %A, %i32v4 <uint 1, uint 1,
> uint 1, uint 1>) ;; splat...