Skip to content

Commit ce96e0e

Browse files
authored
Merge pull request #4699 from ChipKerchner/fixSwapVectorOrder
POWER: Fixing endianness issue in cswap/zswap kernel for AIX
2 parents 668f48f + 3a14176 commit ce96e0e

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

kernel/power/cswap_microk_power10.c

+44
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@ static void cswap_kernel_32 (long n, float *x, float *y)
5858
"lxvp 62, 224(%3) \n\t"
5959

6060

61+
#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
62+
"stxv 32, 0(%3) \n\t"
63+
"stxv 33, 16(%3) \n\t"
64+
"stxv 34, 32(%3) \n\t"
65+
"stxv 35, 48(%3) \n\t"
66+
"stxv 36, 64(%3) \n\t"
67+
"stxv 37, 80(%3) \n\t"
68+
"stxv 38, 96(%3) \n\t"
69+
"stxv 39, 112(%3) \n\t"
70+
#else
6171
"stxv 33, 0(%3) \n\t"
6272
"stxv 32, 16(%3) \n\t"
6373
"stxv 35, 32(%3) \n\t"
@@ -66,9 +76,20 @@ static void cswap_kernel_32 (long n, float *x, float *y)
6676
"stxv 36, 80(%3) \n\t"
6777
"stxv 39, 96(%3) \n\t"
6878
"stxv 38, 112(%3) \n\t"
79+
#endif
6980

7081
"addi %3, %3, 128 \n\t"
7182

83+
#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
84+
"stxv 40, 0(%3) \n\t"
85+
"stxv 41, 16(%3) \n\t"
86+
"stxv 42, 32(%3) \n\t"
87+
"stxv 43, 48(%3) \n\t"
88+
"stxv 44, 64(%3) \n\t"
89+
"stxv 45, 80(%3) \n\t"
90+
"stxv 46, 96(%3) \n\t"
91+
"stxv 47, 112(%3) \n\t"
92+
#else
7293
"stxv 41, 0(%3) \n\t"
7394
"stxv 40, 16(%3) \n\t"
7495
"stxv 43, 32(%3) \n\t"
@@ -77,9 +98,20 @@ static void cswap_kernel_32 (long n, float *x, float *y)
7798
"stxv 44, 80(%3) \n\t"
7899
"stxv 47, 96(%3) \n\t"
79100
"stxv 46, 112(%3) \n\t"
101+
#endif
80102

81103
"addi %3, %3, 128 \n\t"
82104

105+
#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
106+
"stxv 48, 0(%4) \n\t"
107+
"stxv 49, 16(%4) \n\t"
108+
"stxv 50, 32(%4) \n\t"
109+
"stxv 51, 48(%4) \n\t"
110+
"stxv 52, 64(%4) \n\t"
111+
"stxv 53, 80(%4) \n\t"
112+
"stxv 54, 96(%4) \n\t"
113+
"stxv 55, 112(%4) \n\t"
114+
#else
83115
"stxv 49, 0(%4) \n\t"
84116
"stxv 48, 16(%4) \n\t"
85117
"stxv 51, 32(%4) \n\t"
@@ -88,9 +120,20 @@ static void cswap_kernel_32 (long n, float *x, float *y)
88120
"stxv 52, 80(%4) \n\t"
89121
"stxv 55, 96(%4) \n\t"
90122
"stxv 54, 112(%4) \n\t"
123+
#endif
91124

92125
"addi %4, %4, 128 \n\t"
93126

127+
#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
128+
"stxv 56, 0(%4) \n\t"
129+
"stxv 57, 16(%4) \n\t"
130+
"stxv 58, 32(%4) \n\t"
131+
"stxv 59, 48(%4) \n\t"
132+
"stxv 60, 64(%4) \n\t"
133+
"stxv 61, 80(%4) \n\t"
134+
"stxv 62, 96(%4) \n\t"
135+
"stxv 63, 112(%4) \n\t"
136+
#else
94137
"stxv 57, 0(%4) \n\t"
95138
"stxv 56, 16(%4) \n\t"
96139
"stxv 59, 32(%4) \n\t"
@@ -99,6 +142,7 @@ static void cswap_kernel_32 (long n, float *x, float *y)
99142
"stxv 60, 80(%4) \n\t"
100143
"stxv 63, 96(%4) \n\t"
101144
"stxv 62, 112(%4) \n\t"
145+
#endif
102146

103147
"addi %4, %4, 128 \n\t"
104148

0 commit comments

Comments
 (0)