Skip to content

Commit d264cbc

Browse files
committed
Fix for implicit conversion with 32-bit in SP math.
Fixes `error: implicit conversion loses integer precision: sp_int64' (aka long long) to sp_digit (aka int)` building with `./configure CC="clang -m32" --enable-sp && make`
1 parent bdadbef commit d264cbc

2 files changed

Lines changed: 20 additions & 20 deletions

File tree

wolfcrypt/src/sp_c32.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -502,7 +502,7 @@ SP_NOINLINE static void sp_2048_mul_12(sp_digit* r, const sp_digit* a,
502502
t0 = ((sp_uint64)a[11]) * b[11];
503503
r[21] = t1 & 0x1fffffff; t0 += t1 >> 29;
504504
r[22] = t0 & 0x1fffffff;
505-
r[23] = t0 >> 29;
505+
r[23] = (sp_digit)(t0 >> 29);
506506
XMEMCPY(r, t, sizeof(t));
507507
}
508508

@@ -954,7 +954,7 @@ SP_NOINLINE static void sp_2048_sqr_12(sp_digit* r, const sp_digit* a)
954954
t0 = ((sp_uint64)a[11]) * a[11];
955955
r[21] = t1 & 0x1fffffff; t0 += t1 >> 29;
956956
r[22] = t0 & 0x1fffffff;
957-
r[23] = t0 >> 29;
957+
r[23] = (sp_digit)(t0 >> 29);
958958
XMEMCPY(r, t, sizeof(t));
959959
}
960960

@@ -8661,7 +8661,7 @@ SP_NOINLINE static void sp_3072_mul_14(sp_digit* r, const sp_digit* a,
86618661
t0 = ((sp_uint64)a[13]) * b[13];
86628662
r[25] = t1 & 0xfffffff; t0 += t1 >> 28;
86638663
r[26] = t0 & 0xfffffff;
8664-
r[27] = t0 >> 28;
8664+
r[27] = (sp_digit)(t0 >> 28);
86658665
XMEMCPY(r, t, sizeof(t));
86668666
}
86678667

@@ -9143,7 +9143,7 @@ SP_NOINLINE static void sp_3072_sqr_14(sp_digit* r, const sp_digit* a)
91439143
t0 = ((sp_uint64)a[13]) * a[13];
91449144
r[25] = t1 & 0xfffffff; t0 += t1 >> 28;
91459145
r[26] = t0 & 0xfffffff;
9146-
r[27] = t0 >> 28;
9146+
r[27] = (sp_digit)(t0 >> 28);
91479147
XMEMCPY(r, t, sizeof(t));
91489148
}
91499149

@@ -16041,7 +16041,7 @@ SP_NOINLINE static void sp_4096_mul_9(sp_digit* r, const sp_digit* a,
1604116041
t0 = ((sp_uint64)a[ 8]) * b[ 8];
1604216042
r[15] = t1 & 0x3ffffff; t0 += t1 >> 26;
1604316043
r[16] = t0 & 0x3ffffff;
16044-
r[17] = t0 >> 26;
16044+
r[17] = (sp_digit)(t0 >> 26);
1604516045
XMEMCPY(r, t, sizeof(t));
1604616046
}
1604716047

@@ -16614,7 +16614,7 @@ SP_NOINLINE static void sp_4096_sqr_9(sp_digit* r, const sp_digit* a)
1661416614
t0 = ((sp_uint64)a[ 8]) * a[ 8];
1661516615
r[15] = t1 & 0x3ffffff; t0 += t1 >> 26;
1661616616
r[16] = t0 & 0x3ffffff;
16617-
r[17] = t0 >> 26;
16617+
r[17] = (sp_digit)(t0 >> 26);
1661816618
XMEMCPY(r, t, sizeof(t));
1661916619
}
1662016620

@@ -20215,7 +20215,7 @@ SP_NOINLINE static void sp_256_mul_9(sp_digit* r, const sp_digit* a,
2021520215
t0 = ((sp_int64)a[ 8]) * b[ 8];
2021620216
r[15] = t1 & 0x1fffffff; t0 += t1 >> 29;
2021720217
r[16] = t0 & 0x1fffffff;
20218-
r[17] = t0 >> 29;
20218+
r[17] = (sp_digit)(t0 >> 29);
2021920219
XMEMCPY(r, t, sizeof(t));
2022020220
}
2022120221

@@ -20336,7 +20336,7 @@ SP_NOINLINE static void sp_256_sqr_9(sp_digit* r, const sp_digit* a)
2033620336
t0 = ((sp_int64)a[ 8]) * a[ 8];
2033720337
r[15] = t1 & 0x1fffffff; t0 += t1 >> 29;
2033820338
r[16] = t0 & 0x1fffffff;
20339-
r[17] = t0 >> 29;
20339+
r[17] = (sp_digit)(t0 >> 29);
2034020340
XMEMCPY(r, t, sizeof(t));
2034120341
}
2034220342

@@ -27478,7 +27478,7 @@ SP_NOINLINE static void sp_384_mul_15(sp_digit* r, const sp_digit* a,
2747827478
t0 = ((sp_int64)a[14]) * b[14];
2747927479
r[27] = t1 & 0x3ffffff; t0 += t1 >> 26;
2748027480
r[28] = t0 & 0x3ffffff;
27481-
r[29] = t0 >> 26;
27481+
r[29] = (sp_digit)(t0 >> 26);
2748227482
XMEMCPY(r, t, sizeof(t));
2748327483
}
2748427484

@@ -27686,7 +27686,7 @@ SP_NOINLINE static void sp_384_sqr_15(sp_digit* r, const sp_digit* a)
2768627686
t0 = ((sp_int64)a[14]) * a[14];
2768727687
r[27] = t1 & 0x3ffffff; t0 += t1 >> 26;
2768827688
r[28] = t0 & 0x3ffffff;
27689-
r[29] = t0 >> 26;
27689+
r[29] = (sp_digit)(t0 >> 26);
2769027690
XMEMCPY(r, t, sizeof(t));
2769127691
}
2769227692

wolfcrypt/src/sp_c64.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3691,7 +3691,7 @@ SP_NOINLINE static void sp_2048_mul_9(sp_digit* r, const sp_digit* a,
36913691
t0 = ((sp_uint128)a[ 8]) * b[ 8];
36923692
r[15] = t1 & 0x1ffffffffffffffL; t0 += t1 >> 57;
36933693
r[16] = t0 & 0x1ffffffffffffffL;
3694-
r[17] = t0 >> 57;
3694+
r[17] = (sp_digit)(t0 >> 57);
36953695
XMEMCPY(r, t, sizeof(t));
36963696
}
36973697

@@ -3950,7 +3950,7 @@ SP_NOINLINE static void sp_2048_sqr_9(sp_digit* r, const sp_digit* a)
39503950
t0 = ((sp_uint128)a[ 8]) * a[ 8];
39513951
r[15] = t1 & 0x1ffffffffffffffL; t0 += t1 >> 57;
39523952
r[16] = t0 & 0x1ffffffffffffffL;
3953-
r[17] = t0 >> 57;
3953+
r[17] = (sp_digit)(t0 >> 57);
39543954
XMEMCPY(r, t, sizeof(t));
39553955
}
39563956

@@ -10577,7 +10577,7 @@ SP_NOINLINE static void sp_3072_mul_9(sp_digit* r, const sp_digit* a,
1057710577
t0 = ((sp_uint128)a[ 8]) * b[ 8];
1057810578
r[15] = t1 & 0x1ffffffffffffffL; t0 += t1 >> 57;
1057910579
r[16] = t0 & 0x1ffffffffffffffL;
10580-
r[17] = t0 >> 57;
10580+
r[17] = (sp_digit)(t0 >> 57);
1058110581
XMEMCPY(r, t, sizeof(t));
1058210582
}
1058310583

@@ -10894,7 +10894,7 @@ SP_NOINLINE static void sp_3072_sqr_9(sp_digit* r, const sp_digit* a)
1089410894
t0 = ((sp_uint128)a[ 8]) * a[ 8];
1089510895
r[15] = t1 & 0x1ffffffffffffffL; t0 += t1 >> 57;
1089610896
r[16] = t0 & 0x1ffffffffffffffL;
10897-
r[17] = t0 >> 57;
10897+
r[17] = (sp_digit)(t0 >> 57);
1089810898
XMEMCPY(r, t, sizeof(t));
1089910899
}
1090010900

@@ -17606,7 +17606,7 @@ SP_NOINLINE static void sp_4096_mul_13(sp_digit* r, const sp_digit* a,
1760617606
t0 = ((sp_uint128)a[12]) * b[12];
1760717607
r[23] = t1 & 0x1fffffffffffffL; t0 += t1 >> 53;
1760817608
r[24] = t0 & 0x1fffffffffffffL;
17609-
r[25] = t0 >> 53;
17609+
r[25] = (sp_digit)(t0 >> 53);
1761017610
XMEMCPY(r, t, sizeof(t));
1761117611
}
1761217612

@@ -17985,7 +17985,7 @@ SP_NOINLINE static void sp_4096_sqr_13(sp_digit* r, const sp_digit* a)
1798517985
t0 = ((sp_uint128)a[12]) * a[12];
1798617986
r[23] = t1 & 0x1fffffffffffffL; t0 += t1 >> 53;
1798717987
r[24] = t0 & 0x1fffffffffffffL;
17988-
r[25] = t0 >> 53;
17988+
r[25] = (sp_digit)(t0 >> 53);
1798917989
XMEMCPY(r, t, sizeof(t));
1799017990
}
1799117991

@@ -35713,7 +35713,7 @@ SP_NOINLINE static void sp_521_mul_9(sp_digit* r, const sp_digit* a,
3571335713
t0 = ((sp_int128)a[ 8]) * b[ 8];
3571435714
r[15] = t1 & 0x3ffffffffffffffL; t0 += t1 >> 58;
3571535715
r[16] = t0 & 0x3ffffffffffffffL;
35716-
r[17] = t0 >> 58;
35716+
r[17] = (sp_digit)(t0 >> 58);
3571735717
XMEMCPY(r, t, sizeof(t));
3571835718
}
3571935719

@@ -35834,7 +35834,7 @@ SP_NOINLINE static void sp_521_sqr_9(sp_digit* r, const sp_digit* a)
3583435834
t0 = ((sp_int128)a[ 8]) * a[ 8];
3583535835
r[15] = t1 & 0x3ffffffffffffffL; t0 += t1 >> 58;
3583635836
r[16] = t0 & 0x3ffffffffffffffL;
35837-
r[17] = t0 >> 58;
35837+
r[17] = (sp_digit)(t0 >> 58);
3583835838
XMEMCPY(r, t, sizeof(t));
3583935839
}
3584035840

@@ -43035,7 +43035,7 @@ SP_NOINLINE static void sp_1024_mul_9(sp_digit* r, const sp_digit* a,
4303543035
t0 = ((sp_int128)a[ 8]) * b[ 8];
4303643036
r[15] = t1 & 0x1ffffffffffffffL; t0 += t1 >> 57;
4303743037
r[16] = t0 & 0x1ffffffffffffffL;
43038-
r[17] = t0 >> 57;
43038+
r[17] = (sp_digit)(t0 >> 57);
4303943039
XMEMCPY(r, t, sizeof(t));
4304043040
}
4304143041

@@ -43112,7 +43112,7 @@ SP_NOINLINE static void sp_1024_sqr_9(sp_digit* r, const sp_digit* a)
4311243112
t0 = ((sp_int128)a[ 8]) * a[ 8];
4311343113
r[15] = t1 & 0x1ffffffffffffffL; t0 += t1 >> 57;
4311443114
r[16] = t0 & 0x1ffffffffffffffL;
43115-
r[17] = t0 >> 57;
43115+
r[17] = (sp_digit)(t0 >> 57);
4311643116
XMEMCPY(r, t, sizeof(t));
4311743117
}
4311843118

0 commit comments

Comments
 (0)