forked from edf-hpc/verrou
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvr_interp_operator_impl.h
39 lines (32 loc) · 1.14 KB
/
vr_interp_operator_impl.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*Tools for copy : workaround to avoid limitation of 6args*/
#ifndef INTERFLOP_VECTO
static double arg1CopyAvxDouble[4];
static VG_REGPARM(3) void vr_AvxDoubleCopyFirstArg (ULong a0, ULong a1, ULong a2,ULong a3) {
arg1CopyAvxDouble[0] =*((double*)(&a0));
arg1CopyAvxDouble[1] =*((double*)(&a1));
arg1CopyAvxDouble[2] =*((double*)(&a2));
arg1CopyAvxDouble[3] =*((double*)(&a3));
}
static float arg1CopyAvxFloat[8];
static VG_REGPARM(3) void vr_AvxFloatCopyFirstArg (ULong a0, ULong a1, ULong a2,ULong a3) {
V256* reg1=(V256*)(&arg1CopyAvxFloat) ;
reg1->w64[0]=a0;
reg1->w64[1]=a1;
reg1->w64[2]=a2;
reg1->w64[3]=a3;
}
#else
static doublex4 arg1CopyAvxDouble;
static VG_REGPARM(3) void vr_AvxDoubleCopyFirstArg (ULong a0, ULong a1, ULong a2,ULong a3) {
arg1CopyAvxDouble= (doublex4){*((double*)(&a0)),*((double*)(&a1)),*((double*)(&a2)),*((double*)(&a3))};
}
static floatx8 arg1CopyAvxFloat;
static VG_REGPARM(3) void vr_AvxFloatCopyFirstArg (ULong a0, ULong a1, ULong a2,ULong a3) {
V256* reg1=(V256*)(&arg1CopyAvxFloat) ;
reg1->w64[0]=a0;
reg1->w64[1]=a1;
reg1->w64[2]=a2;
reg1->w64[3]=a3;
arg1CopyAvxFloat=*reg1;
}
#endif