@@ -108,33 +108,69 @@ at::Tensor& embedding_lookup_fallback_impl(
108
108
const uint8_t * scale_bias =
109
109
weight_data + (idx + 1 ) * weight_size - 2 * sizeof (float );
110
110
uint32_t scale_val_int32 = 0 ;
111
+ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
111
112
scale_val_int32 = scale_val_int32 |
112
113
(scale_bias[0 ]) |
113
114
(scale_bias[1 ] << 8 ) |
114
115
(scale_bias[2 ] << 16 ) |
115
116
(scale_bias[3 ] << 24 );
117
+ #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
118
+ scale_val_int32 = scale_val_int32 |
119
+ (scale_bias[3 ]) |
120
+ (scale_bias[2 ] << 8 ) |
121
+ (scale_bias[1 ] << 16 ) |
122
+ (scale_bias[0 ] << 24 );
123
+ #else
124
+ #error Unexpected or undefined __BYTE_ORDER__
125
+ #endif
116
126
float scale_val = (reinterpret_cast <float *>(&scale_val_int32))[0 ];
117
127
uint32_t bias_val_int32 = 0 ;
128
+ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
118
129
bias_val_int32 = bias_val_int32 |
119
130
(scale_bias[4 ]) |
120
131
(scale_bias[5 ] << 8 ) |
121
132
(scale_bias[6 ] << 16 ) |
122
133
(scale_bias[7 ] << 24 );
134
+ #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
135
+ bias_val_int32 = bias_val_int32 |
136
+ (scale_bias[7 ]) |
137
+ (scale_bias[6 ] << 8 ) |
138
+ (scale_bias[5 ] << 16 ) |
139
+ (scale_bias[4 ] << 24 );
140
+ #else
141
+ #error Unexpected or undefined __BYTE_ORDER__
142
+ #endif
123
143
float bias_val = (reinterpret_cast <float *>(&bias_val_int32))[0 ];
124
144
scale = weight_val * scale_val;
125
145
bias = weight_val * bias_val;
126
146
} else {
127
147
const uint8_t * scale_bias =
128
148
weight_data + (idx + 1 ) * weight_size - 2 * sizeof (at::Half);
129
149
uint16_t scale_val_int16 = 0 ;
150
+ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
130
151
scale_val_int16 = scale_val_int16 |
131
152
(scale_bias[0 ]) |
132
153
(scale_bias[1 ] << 8 );
154
+ #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
155
+ scale_val_int16 = scale_val_int16 |
156
+ (scale_bias[1 ]) |
157
+ (scale_bias[0 ] << 8 );
158
+ #else
159
+ #error Unexpected or undefined __BYTE_ORDER__
160
+ #endif
133
161
at::Half scale_val = (reinterpret_cast <at::Half*>(&scale_val_int16))[0 ];
134
162
uint16_t bias_val_int16 = 0 ;
163
+ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
135
164
bias_val_int16 = bias_val_int16 |
136
165
(scale_bias[2 ]) |
137
166
(scale_bias[3 ] << 8 );
167
+ #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
168
+ bias_val_int16 = bias_val_int16 |
169
+ (scale_bias[3 ]) |
170
+ (scale_bias[2 ] << 8 );
171
+ #else
172
+ #error Unexpected or undefined __BYTE_ORDER__
173
+ #endif
138
174
at::Half bias_val = (reinterpret_cast <at::Half*>(&bias_val_int16))[0 ];
139
175
scale = weight_val * scale_val;
140
176
bias = weight_val * bias_val;
0 commit comments