|
39 | 39 | #ifndef COMMON_POWER
|
40 | 40 | #define COMMON_POWER
|
41 | 41 |
|
| 42 | +#define str(x) #x |
| 43 | + |
| 44 | +#ifdef OS_AIX |
| 45 | +#define XXSPLTD(T,A,z) xxpermdi T, A, A, 0b##z##z |
| 46 | +#define XXMRGHD(T,A,B) xxpermdi T, A, B, 0b00 |
| 47 | +#define XXMRGLD(T,A,B) xxpermdi T, A, B, 0b11 |
| 48 | +#define XXSWAPD(T,A) xxpermdi T, A, A, 0b10 |
| 49 | +#define XVMOVDP(T,A) xvcpsgndp T, A, A |
| 50 | + |
| 51 | +#define XXSPLTD_S(T,A,z) "xxpermdi " str(T) ", " str(A) ", " str(A) ", 0b" str(z ## z) " \n\t" |
| 52 | +#define XXMRGHD_S(T,A,B) "xxpermdi " str(T) ", " str(A) ", " str(B) ", 0b00 \n\t" |
| 53 | +#define XXMRGLD_S(T,A,B) "xxpermdi " str(T) ", " str(A) ", " str(B) ", 0b11 \n\t" |
| 54 | +#define XXSWAPD_S(T,A) "xxpermdi " str(T) ", " str(A) ", " str(A) ", 0b10 \n\t" |
| 55 | + |
| 56 | +#else |
| 57 | +#define XXSPLTD(T,A,z) xxspltd T, A, z |
| 58 | +#define XXMRGHD(T,A,B) xxmrghd T, A, B |
| 59 | +#define XXMRGLD(T,A,B) xxmrgld T, A, B |
| 60 | +#define XXSWAPD(T,A) xxswapd T, A |
| 61 | +#define XVMOVDP(T,A) xvmovdp T, A |
| 62 | + |
| 63 | +#define XXSPLTD_S(T,A,z) "xxspltd " str(T) ", " str(A) ", " str(z)" \n\t" |
| 64 | +#define XXMRGHD_S(T,A,B) "xxmrghd " str(T) ", " str(A) ", " str(B)" \n\t" |
| 65 | +#define XXMRGLD_S(T,A,B) "xxmrgld " str(T) ", " str(A) ", " str(B)" \n\t" |
| 66 | +#define XXSWAPD_S(T,A) "xxswapd " str(T) ", " str(A) " \n\t" |
| 67 | + |
| 68 | +#endif |
| 69 | + |
| 70 | + |
42 | 71 | #if defined(POWER8) || defined(POWER9)
|
43 | 72 | #define MB __asm__ __volatile__ ("eieio":::"memory")
|
44 | 73 | #define WMB __asm__ __volatile__ ("eieio":::"memory")
|
|
0 commit comments