package codegen
// A uint16 or sint16 constant shifted left.
-func shifted16BitConstants(out [64]uint64) {
+func shifted16BitConstants() (out [64]uint64) {
// ppc64x: "MOVD\t[$]8193,", "SLD\t[$]27,"
out[0] = 0x0000010008000000
// ppc64x: "MOVD\t[$]-32767", "SLD\t[$]26,"
out[2] = 0xFFFF000000000000
// ppc64x: "MOVD\t[$]65535", "SLD\t[$]44,"
out[3] = 0x0FFFF00000000000
+ return
}
// A contiguous set of 1 bits, potentially wrapping.
-func contiguousMaskConstants(out [64]uint64) {
+func contiguousMaskConstants() (out [64]uint64) {
// ppc64x: "MOVD\t[$]-1", "RLDC\tR[0-9]+, [$]44, [$]63,"
out[0] = 0xFFFFF00000000001
// ppc64x: "MOVD\t[$]-1", "RLDC\tR[0-9]+, [$]43, [$]63,"
// ppc64x/power9: "MOVD\t[$]-1", "RLDC\tR[0-9]+, [$]33, [$]63,"
// ppc64x/power10: "MOVD\t[$]-8589934591,"
out[3] = 0xFFFFFFFE00000001
+ return
}
//
// This is what happened on PPC64 when compiling
// crypto/internal/edwards25519/field.feMulGeneric.
-func Add64MultipleChains(a, b, c, d [2]uint64) {
+func Add64MultipleChains(a, b, c, d [2]uint64) [2]uint64 {
var cx, d1, d2 uint64
a1, a2 := a[0], a[1]
b1, b2 := b[0], b[1]
d2, _ = bits.Add64(c2, d2, cx)
d[0] = d1
d[1] = d2
+ return d
}
// --------------- //