Skip to content

Commit 3dc6b26

Browse files
committed
AIX changes for Power8
1 parent 2a43062 commit 3dc6b26

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+9272
-1005
lines changed

common_power.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,35 @@
3939
#ifndef COMMON_POWER
4040
#define COMMON_POWER
4141

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 T, A, z \n\t"
64+
#define XXMRGHD_S(T,A,B) "xxmrghd T, A, B \n\t"
65+
#define XXMRGLD_S(T,A,B) "xxmrgld T, A, B \n\t"
66+
#define XXSWAPD_S(T,A) "xxswapd T, A"
67+
68+
#endif
69+
70+
4271
#if defined(POWER8) || defined(POWER9)
4372
#define MB __asm__ __volatile__ ("eieio":::"memory")
4473
#define WMB __asm__ __volatile__ ("eieio":::"memory")

kernel/Makefile.L3

Lines changed: 190 additions & 48 deletions
Large diffs are not rendered by default.

kernel/power/casum_microk_power8.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ static float casum_kernel_16 (long n, float *x)
6868
"addi %2, %2, 128 \n\t"
6969

7070
"addic. %1, %1, -16 \n\t"
71-
"ble 2f \n\t"
71+
"ble two%= \n\t"
7272

73-
".p2align 5 \n"
74-
"1: \n\t"
73+
".align 5 \n"
74+
"one%=: \n\t"
7575

7676
"xvabssp 48, 40 \n\t"
7777
"xvabssp 49, 41 \n\t"
@@ -108,9 +108,9 @@ static float casum_kernel_16 (long n, float *x)
108108
"xvaddsp 38, 38, %x5 \n\t"
109109
"xvaddsp 39, 39, %x6 \n\t"
110110

111-
"bgt 1b \n"
111+
"bgt one%= \n"
112112

113-
"2: \n\t"
113+
"two%=: \n\t"
114114

115115
"xvabssp 48, 40 \n\t"
116116
"xvabssp 49, 41 \n\t"

kernel/power/ccopy_microk_power8.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ static void ccopy_kernel_32 (long n, float *x, float *y)
6262
"addi %2, %2, 128 \n\t"
6363

6464
"addic. %1, %1, -32 \n\t"
65-
"ble 2f \n\t"
65+
"ble two%= \n\t"
6666

67-
".p2align 5 \n"
68-
"1: \n\t"
67+
".align 5 \n"
68+
"one%=: \n\t"
6969

7070
"stxvd2x 32, 0, %3 \n\t"
7171
"stxvd2x 33, %5, %3 \n\t"
@@ -108,9 +108,9 @@ static void ccopy_kernel_32 (long n, float *x, float *y)
108108
"addi %2, %2, 128 \n\t"
109109

110110
"addic. %1, %1, -32 \n\t"
111-
"bgt 1b \n"
111+
"bgt one%= \n"
112112

113-
"2: \n\t"
113+
"two%=: \n\t"
114114

115115
"stxvd2x 32, 0, %3 \n\t"
116116
"stxvd2x 33, %5, %3 \n\t"

0 commit comments

Comments
 (0)