mirror of
https://github.com/golang/go
synced 2025-08-20 03:03:47 +00:00
test/codegen: combine trivial PPC64 tests into ppc64x
Use a small python script to consolidate duplicate ppc64/ppc64le tests into a single ppc64x codegen test. This makes small assumption that anytime two tests with for different arch/variant combos exists, those tests can be combined into a single ppc64x test. E.x: // ppc64le: foo // ppc64le/power9: foo into // ppc64x: foo or // ppc64: foo // ppc64le: foo into // ppc64x: foo import glob import re files = glob.glob("codegen/*.go") for file in files: with open(file) as f: text = [l for l in f] i = 0 while i < len(text): first = re.match("\s*// ?ppc64(le)?(/power[89])?:(.*)", text[i]) if first: j = i+1 while j < len(text): second = re.match("\s*// ?ppc64(le)?(/power[89])?:(.*)", text[j]) if not second: break if (not first.group(2) or first.group(2) == second.group(2)) and first.group(3) == second.group(3): text[i] = re.sub(" ?ppc64(le|x)?"," ppc64x",text[i]) text=text[:j] + (text[j+1:]) else: j += 1 i+=1 with open(file, 'w') as f: f.write("".join(text)) Change-Id: Ic6b009b54eacaadc5a23db9c5a3bf7331b595821 Reviewed-on: https://go-review.googlesource.com/c/go/+/463220 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Lynn Boger <laboger@linux.vnet.ibm.com> Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: Paul Murphy <murp@ibm.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
committed by
Paul Murphy
parent
4b3726e99b
commit
0301c6c351
@@ -19,8 +19,7 @@ func LeadingZeros(n uint) int {
|
||||
// arm:"CLZ" arm64:"CLZ"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64le:"CNTLZD"
|
||||
// ppc64:"CNTLZD"
|
||||
// ppc64x:"CNTLZD"
|
||||
return bits.LeadingZeros(n)
|
||||
}
|
||||
|
||||
@@ -31,8 +30,7 @@ func LeadingZeros64(n uint64) int {
|
||||
// arm:"CLZ" arm64:"CLZ"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64le:"CNTLZD"
|
||||
// ppc64:"CNTLZD"
|
||||
// ppc64x:"CNTLZD"
|
||||
return bits.LeadingZeros64(n)
|
||||
}
|
||||
|
||||
@@ -43,8 +41,7 @@ func LeadingZeros32(n uint32) int {
|
||||
// arm:"CLZ" arm64:"CLZW"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64le:"CNTLZW"
|
||||
// ppc64:"CNTLZW"
|
||||
// ppc64x:"CNTLZW"
|
||||
return bits.LeadingZeros32(n)
|
||||
}
|
||||
|
||||
@@ -55,8 +52,7 @@ func LeadingZeros16(n uint16) int {
|
||||
// arm:"CLZ" arm64:"CLZ"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64le:"CNTLZD"
|
||||
// ppc64:"CNTLZD"
|
||||
// ppc64x:"CNTLZD"
|
||||
return bits.LeadingZeros16(n)
|
||||
}
|
||||
|
||||
@@ -67,8 +63,7 @@ func LeadingZeros8(n uint8) int {
|
||||
// arm:"CLZ" arm64:"CLZ"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64le:"CNTLZD"
|
||||
// ppc64:"CNTLZD"
|
||||
// ppc64x:"CNTLZD"
|
||||
return bits.LeadingZeros8(n)
|
||||
}
|
||||
|
||||
@@ -83,8 +78,7 @@ func Len(n uint) int {
|
||||
// arm:"CLZ" arm64:"CLZ"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64le:"SUBC","CNTLZD"
|
||||
// ppc64:"SUBC","CNTLZD"
|
||||
// ppc64x:"SUBC","CNTLZD"
|
||||
return bits.Len(n)
|
||||
}
|
||||
|
||||
@@ -95,14 +89,12 @@ func Len64(n uint64) int {
|
||||
// arm:"CLZ" arm64:"CLZ"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64le:"SUBC","CNTLZD"
|
||||
// ppc64:"SUBC","CNTLZD"
|
||||
// ppc64x:"SUBC","CNTLZD"
|
||||
return bits.Len64(n)
|
||||
}
|
||||
|
||||
func SubFromLen64(n uint64) int {
|
||||
// ppc64le:"CNTLZD",-"SUBC"
|
||||
// ppc64:"CNTLZD",-"SUBC"
|
||||
// ppc64x:"CNTLZD",-"SUBC"
|
||||
return 64 - bits.Len64(n)
|
||||
}
|
||||
|
||||
@@ -113,8 +105,7 @@ func Len32(n uint32) int {
|
||||
// arm:"CLZ" arm64:"CLZ"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64: "CNTLZW"
|
||||
// ppc64le: "CNTLZW"
|
||||
// ppc64x: "CNTLZW"
|
||||
return bits.Len32(n)
|
||||
}
|
||||
|
||||
@@ -125,8 +116,7 @@ func Len16(n uint16) int {
|
||||
// arm:"CLZ" arm64:"CLZ"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64le:"SUBC","CNTLZD"
|
||||
// ppc64:"SUBC","CNTLZD"
|
||||
// ppc64x:"SUBC","CNTLZD"
|
||||
return bits.Len16(n)
|
||||
}
|
||||
|
||||
@@ -137,8 +127,7 @@ func Len8(n uint8) int {
|
||||
// arm:"CLZ" arm64:"CLZ"
|
||||
// mips:"CLZ"
|
||||
// wasm:"I64Clz"
|
||||
// ppc64le:"SUBC","CNTLZD"
|
||||
// ppc64:"SUBC","CNTLZD"
|
||||
// ppc64x:"SUBC","CNTLZD"
|
||||
return bits.Len8(n)
|
||||
}
|
||||
|
||||
@@ -152,8 +141,7 @@ func OnesCount(n uint) int {
|
||||
// amd64:"POPCNTQ"
|
||||
// arm64:"VCNT","VUADDLV"
|
||||
// s390x:"POPCNT"
|
||||
// ppc64:"POPCNTD"
|
||||
// ppc64le:"POPCNTD"
|
||||
// ppc64x:"POPCNTD"
|
||||
// wasm:"I64Popcnt"
|
||||
return bits.OnesCount(n)
|
||||
}
|
||||
@@ -163,8 +151,7 @@ func OnesCount64(n uint64) int {
|
||||
// amd64:"POPCNTQ"
|
||||
// arm64:"VCNT","VUADDLV"
|
||||
// s390x:"POPCNT"
|
||||
// ppc64:"POPCNTD"
|
||||
// ppc64le:"POPCNTD"
|
||||
// ppc64x:"POPCNTD"
|
||||
// wasm:"I64Popcnt"
|
||||
return bits.OnesCount64(n)
|
||||
}
|
||||
@@ -174,8 +161,7 @@ func OnesCount32(n uint32) int {
|
||||
// amd64:"POPCNTL"
|
||||
// arm64:"VCNT","VUADDLV"
|
||||
// s390x:"POPCNT"
|
||||
// ppc64:"POPCNTW"
|
||||
// ppc64le:"POPCNTW"
|
||||
// ppc64x:"POPCNTW"
|
||||
// wasm:"I64Popcnt"
|
||||
return bits.OnesCount32(n)
|
||||
}
|
||||
@@ -185,16 +171,14 @@ func OnesCount16(n uint16) int {
|
||||
// amd64:"POPCNTL"
|
||||
// arm64:"VCNT","VUADDLV"
|
||||
// s390x:"POPCNT"
|
||||
// ppc64:"POPCNTW"
|
||||
// ppc64le:"POPCNTW"
|
||||
// ppc64x:"POPCNTW"
|
||||
// wasm:"I64Popcnt"
|
||||
return bits.OnesCount16(n)
|
||||
}
|
||||
|
||||
func OnesCount8(n uint8) int {
|
||||
// s390x:"POPCNT"
|
||||
// ppc64:"POPCNTB"
|
||||
// ppc64le:"POPCNTB"
|
||||
// ppc64x:"POPCNTB"
|
||||
// wasm:"I64Popcnt"
|
||||
return bits.OnesCount8(n)
|
||||
}
|
||||
@@ -240,8 +224,7 @@ func ReverseBytes16(n uint16) uint16 {
|
||||
func RotateLeft64(n uint64) uint64 {
|
||||
// amd64:"ROLQ"
|
||||
// arm64:"ROR"
|
||||
// ppc64:"ROTL"
|
||||
// ppc64le:"ROTL"
|
||||
// ppc64x:"ROTL"
|
||||
// s390x:"RISBGZ\t[$]0, [$]63, [$]37, "
|
||||
// wasm:"I64Rotl"
|
||||
return bits.RotateLeft64(n, 37)
|
||||
@@ -251,8 +234,7 @@ func RotateLeft32(n uint32) uint32 {
|
||||
// amd64:"ROLL" 386:"ROLL"
|
||||
// arm:`MOVW\tR[0-9]+@>23`
|
||||
// arm64:"RORW"
|
||||
// ppc64:"ROTLW"
|
||||
// ppc64le:"ROTLW"
|
||||
// ppc64x:"ROTLW"
|
||||
// s390x:"RLL"
|
||||
// wasm:"I32Rotl"
|
||||
return bits.RotateLeft32(n, 9)
|
||||
@@ -273,8 +255,7 @@ func RotateLeft8(n uint8, s int) uint8 {
|
||||
func RotateLeftVariable(n uint, m int) uint {
|
||||
// amd64:"ROLQ"
|
||||
// arm64:"ROR"
|
||||
// ppc64:"ROTL"
|
||||
// ppc64le:"ROTL"
|
||||
// ppc64x:"ROTL"
|
||||
// s390x:"RLLG"
|
||||
// wasm:"I64Rotl"
|
||||
return bits.RotateLeft(n, m)
|
||||
@@ -283,8 +264,7 @@ func RotateLeftVariable(n uint, m int) uint {
|
||||
func RotateLeftVariable64(n uint64, m int) uint64 {
|
||||
// amd64:"ROLQ"
|
||||
// arm64:"ROR"
|
||||
// ppc64:"ROTL"
|
||||
// ppc64le:"ROTL"
|
||||
// ppc64x:"ROTL"
|
||||
// s390x:"RLLG"
|
||||
// wasm:"I64Rotl"
|
||||
return bits.RotateLeft64(n, m)
|
||||
@@ -294,8 +274,7 @@ func RotateLeftVariable32(n uint32, m int) uint32 {
|
||||
// arm:`MOVW\tR[0-9]+@>R[0-9]+`
|
||||
// amd64:"ROLL"
|
||||
// arm64:"RORW"
|
||||
// ppc64:"ROTLW"
|
||||
// ppc64le:"ROTLW"
|
||||
// ppc64x:"ROTLW"
|
||||
// s390x:"RLL"
|
||||
// wasm:"I32Rotl"
|
||||
return bits.RotateLeft32(n, m)
|
||||
@@ -311,10 +290,8 @@ func TrailingZeros(n uint) int {
|
||||
// arm:"CLZ"
|
||||
// arm64:"RBIT","CLZ"
|
||||
// s390x:"FLOGR"
|
||||
// ppc64/power8:"ANDN","POPCNTD"
|
||||
// ppc64le/power8:"ANDN","POPCNTD"
|
||||
// ppc64/power9: "CNTTZD"
|
||||
// ppc64le/power9: "CNTTZD"
|
||||
// ppc64x/power8:"ANDN","POPCNTD"
|
||||
// ppc64x/power9: "CNTTZD"
|
||||
// wasm:"I64Ctz"
|
||||
return bits.TrailingZeros(n)
|
||||
}
|
||||
@@ -324,10 +301,8 @@ func TrailingZeros64(n uint64) int {
|
||||
// amd64/v3:"TZCNTQ"
|
||||
// arm64:"RBIT","CLZ"
|
||||
// s390x:"FLOGR"
|
||||
// ppc64/power8:"ANDN","POPCNTD"
|
||||
// ppc64le/power8:"ANDN","POPCNTD"
|
||||
// ppc64/power9: "CNTTZD"
|
||||
// ppc64le/power9: "CNTTZD"
|
||||
// ppc64x/power8:"ANDN","POPCNTD"
|
||||
// ppc64x/power9: "CNTTZD"
|
||||
// wasm:"I64Ctz"
|
||||
return bits.TrailingZeros64(n)
|
||||
}
|
||||
@@ -344,10 +319,8 @@ func TrailingZeros32(n uint32) int {
|
||||
// arm:"CLZ"
|
||||
// arm64:"RBITW","CLZW"
|
||||
// s390x:"FLOGR","MOVWZ"
|
||||
// ppc64/power8:"ANDN","POPCNTW"
|
||||
// ppc64le/power8:"ANDN","POPCNTW"
|
||||
// ppc64/power9: "CNTTZW"
|
||||
// ppc64le/power9: "CNTTZW"
|
||||
// ppc64x/power8:"ANDN","POPCNTW"
|
||||
// ppc64x/power9: "CNTTZW"
|
||||
// wasm:"I64Ctz"
|
||||
return bits.TrailingZeros32(n)
|
||||
}
|
||||
@@ -358,10 +331,8 @@ func TrailingZeros16(n uint16) int {
|
||||
// arm:"ORR\t\\$65536","CLZ",-"MOVHU\tR"
|
||||
// arm64:"ORR\t\\$65536","RBITW","CLZW",-"MOVHU\tR",-"RBIT\t",-"CLZ\t"
|
||||
// s390x:"FLOGR","OR\t\\$65536"
|
||||
// ppc64/power8:"POPCNTD","OR\\t\\$65536"
|
||||
// ppc64le/power8:"POPCNTD","OR\\t\\$65536"
|
||||
// ppc64/power9:"CNTTZD","OR\\t\\$65536"
|
||||
// ppc64le/power9:"CNTTZD","OR\\t\\$65536"
|
||||
// ppc64x/power8:"POPCNTD","OR\\t\\$65536"
|
||||
// ppc64x/power9:"CNTTZD","OR\\t\\$65536"
|
||||
// wasm:"I64Ctz"
|
||||
return bits.TrailingZeros16(n)
|
||||
}
|
||||
@@ -441,8 +412,7 @@ func IterateBits8(n uint8) int {
|
||||
func Add(x, y, ci uint) (r, co uint) {
|
||||
// arm64:"ADDS","ADCS","ADC",-"ADD\t",-"CMP"
|
||||
// amd64:"NEGL","ADCQ","SBBQ","NEGQ"
|
||||
// ppc64: "ADDC", "ADDE", "ADDZE"
|
||||
// ppc64le: "ADDC", "ADDE", "ADDZE"
|
||||
// ppc64x: "ADDC", "ADDE", "ADDZE"
|
||||
// s390x:"ADDE","ADDC\t[$]-1,"
|
||||
// riscv64: "ADD","SLTU"
|
||||
return bits.Add(x, y, ci)
|
||||
@@ -452,8 +422,7 @@ func AddC(x, ci uint) (r, co uint) {
|
||||
// arm64:"ADDS","ADCS","ADC",-"ADD\t",-"CMP"
|
||||
// amd64:"NEGL","ADCQ","SBBQ","NEGQ"
|
||||
// loong64: "ADDV", "SGTU"
|
||||
// ppc64: "ADDC", "ADDE", "ADDZE"
|
||||
// ppc64le: "ADDC", "ADDE", "ADDZE"
|
||||
// ppc64x: "ADDC", "ADDE", "ADDZE"
|
||||
// s390x:"ADDE","ADDC\t[$]-1,"
|
||||
// riscv64: "ADD","SLTU"
|
||||
return bits.Add(x, 7, ci)
|
||||
@@ -463,8 +432,7 @@ func AddZ(x, y uint) (r, co uint) {
|
||||
// arm64:"ADDS","ADC",-"ADCS",-"ADD\t",-"CMP"
|
||||
// amd64:"ADDQ","SBBQ","NEGQ",-"NEGL",-"ADCQ"
|
||||
// loong64: "ADDV", "SGTU"
|
||||
// ppc64: "ADDC", -"ADDE", "ADDZE"
|
||||
// ppc64le: "ADDC", -"ADDE", "ADDZE"
|
||||
// ppc64x: "ADDC", -"ADDE", "ADDZE"
|
||||
// s390x:"ADDC",-"ADDC\t[$]-1,"
|
||||
// riscv64: "ADD","SLTU"
|
||||
return bits.Add(x, y, 0)
|
||||
@@ -474,8 +442,7 @@ func AddR(x, y, ci uint) uint {
|
||||
// arm64:"ADDS","ADCS",-"ADD\t",-"CMP"
|
||||
// amd64:"NEGL","ADCQ",-"SBBQ",-"NEGQ"
|
||||
// loong64: "ADDV", -"SGTU"
|
||||
// ppc64: "ADDC", "ADDE", -"ADDZE"
|
||||
// ppc64le: "ADDC", "ADDE", -"ADDZE"
|
||||
// ppc64x: "ADDC", "ADDE", -"ADDZE"
|
||||
// s390x:"ADDE","ADDC\t[$]-1,"
|
||||
// riscv64: "ADD",-"SLTU"
|
||||
r, _ := bits.Add(x, y, ci)
|
||||
@@ -496,8 +463,7 @@ func Add64(x, y, ci uint64) (r, co uint64) {
|
||||
// arm64:"ADDS","ADCS","ADC",-"ADD\t",-"CMP"
|
||||
// amd64:"NEGL","ADCQ","SBBQ","NEGQ"
|
||||
// loong64: "ADDV", "SGTU"
|
||||
// ppc64: "ADDC", "ADDE", "ADDZE"
|
||||
// ppc64le: "ADDC", "ADDE", "ADDZE"
|
||||
// ppc64x: "ADDC", "ADDE", "ADDZE"
|
||||
// s390x:"ADDE","ADDC\t[$]-1,"
|
||||
// riscv64: "ADD","SLTU"
|
||||
return bits.Add64(x, y, ci)
|
||||
@@ -507,8 +473,7 @@ func Add64C(x, ci uint64) (r, co uint64) {
|
||||
// arm64:"ADDS","ADCS","ADC",-"ADD\t",-"CMP"
|
||||
// amd64:"NEGL","ADCQ","SBBQ","NEGQ"
|
||||
// loong64: "ADDV", "SGTU"
|
||||
// ppc64: "ADDC", "ADDE", "ADDZE"
|
||||
// ppc64le: "ADDC", "ADDE", "ADDZE"
|
||||
// ppc64x: "ADDC", "ADDE", "ADDZE"
|
||||
// s390x:"ADDE","ADDC\t[$]-1,"
|
||||
// riscv64: "ADD","SLTU"
|
||||
return bits.Add64(x, 7, ci)
|
||||
@@ -518,8 +483,7 @@ func Add64Z(x, y uint64) (r, co uint64) {
|
||||
// arm64:"ADDS","ADC",-"ADCS",-"ADD\t",-"CMP"
|
||||
// amd64:"ADDQ","SBBQ","NEGQ",-"NEGL",-"ADCQ"
|
||||
// loong64: "ADDV", "SGTU"
|
||||
// ppc64: "ADDC", -"ADDE", "ADDZE"
|
||||
// ppc64le: "ADDC", -"ADDE", "ADDZE"
|
||||
// ppc64x: "ADDC", -"ADDE", "ADDZE"
|
||||
// s390x:"ADDC",-"ADDC\t[$]-1,"
|
||||
// riscv64: "ADD","SLTU"
|
||||
return bits.Add64(x, y, 0)
|
||||
@@ -529,8 +493,7 @@ func Add64R(x, y, ci uint64) uint64 {
|
||||
// arm64:"ADDS","ADCS",-"ADD\t",-"CMP"
|
||||
// amd64:"NEGL","ADCQ",-"SBBQ",-"NEGQ"
|
||||
// loong64: "ADDV", -"SGTU"
|
||||
// ppc64: "ADDC", "ADDE", -"ADDZE"
|
||||
// ppc64le: "ADDC", "ADDE", -"ADDZE"
|
||||
// ppc64x: "ADDC", "ADDE", -"ADDZE"
|
||||
// s390x:"ADDE","ADDC\t[$]-1,"
|
||||
// riscv64: "ADD",-"SLTU"
|
||||
r, _ := bits.Add64(x, y, ci)
|
||||
@@ -541,19 +504,16 @@ func Add64M(p, q, r *[3]uint64) {
|
||||
r[0], c = bits.Add64(p[0], q[0], c)
|
||||
// arm64:"ADCS",-"ADD\t",-"CMP"
|
||||
// amd64:"ADCQ",-"NEGL",-"SBBQ",-"NEGQ"
|
||||
// ppc64: -"ADDC", "ADDE", -"ADDZE"
|
||||
// ppc64le: -"ADDC", "ADDE", -"ADDZE"
|
||||
// ppc64x: -"ADDC", "ADDE", -"ADDZE"
|
||||
// s390x:"ADDE",-"ADDC\t[$]-1,"
|
||||
r[1], c = bits.Add64(p[1], q[1], c)
|
||||
r[2], c = bits.Add64(p[2], q[2], c)
|
||||
}
|
||||
|
||||
func Add64MSaveC(p, q, r, c *[2]uint64) {
|
||||
// ppc64: "ADDC\tR", "ADDZE"
|
||||
// ppc64le: "ADDC\tR", "ADDZE"
|
||||
// ppc64x: "ADDC\tR", "ADDZE"
|
||||
r[0], c[0] = bits.Add64(p[0], q[0], 0)
|
||||
// ppc64: "ADDC\t[$]-1", "ADDE", "ADDZE"
|
||||
// ppc64le: "ADDC\t[$]-1", "ADDE", "ADDZE"
|
||||
// ppc64x: "ADDC\t[$]-1", "ADDE", "ADDZE"
|
||||
r[1], c[1] = bits.Add64(p[1], q[1], c[0])
|
||||
}
|
||||
|
||||
@@ -636,18 +596,14 @@ func Add64MultipleChains(a, b, c, d [2]uint64) {
|
||||
b1, b2 := b[0], b[1]
|
||||
c1, c2 := c[0], c[1]
|
||||
|
||||
// ppc64: "ADDC\tR\\d+,", -"ADDE", -"MOVD\tXER"
|
||||
// ppc64le: "ADDC\tR\\d+,", -"ADDE", -"MOVD\tXER"
|
||||
// ppc64x: "ADDC\tR\\d+,", -"ADDE", -"MOVD\tXER"
|
||||
d1, cx = bits.Add64(a1, b1, 0)
|
||||
// ppc64: "ADDE", -"ADDC", -"MOVD\t.*, XER"
|
||||
// ppc64le: "ADDE", -"ADDC", -"MOVD\t.*, XER"
|
||||
// ppc64x: "ADDE", -"ADDC", -"MOVD\t.*, XER"
|
||||
d2, _ = bits.Add64(a2, b2, cx)
|
||||
|
||||
// ppc64: "ADDC\tR\\d+,", -"ADDE", -"MOVD\tXER"
|
||||
// ppc64le: "ADDC\tR\\d+,", -"ADDE", -"MOVD\tXER"
|
||||
// ppc64x: "ADDC\tR\\d+,", -"ADDE", -"MOVD\tXER"
|
||||
d1, cx = bits.Add64(c1, d1, 0)
|
||||
// ppc64: "ADDE", -"ADDC", -"MOVD\t.*, XER"
|
||||
// ppc64le: "ADDE", -"ADDC", -"MOVD\t.*, XER"
|
||||
// ppc64x: "ADDE", -"ADDC", -"MOVD\t.*, XER"
|
||||
d2, _ = bits.Add64(c2, d2, cx)
|
||||
d[0] = d1
|
||||
d[1] = d2
|
||||
@@ -661,8 +617,7 @@ func Sub(x, y, ci uint) (r, co uint) {
|
||||
// amd64:"NEGL","SBBQ","NEGQ"
|
||||
// arm64:"NEGS","SBCS","NGC","NEG",-"ADD",-"SUB",-"CMP"
|
||||
// loong64:"SUBV","SGTU"
|
||||
// ppc64:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64le:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64x:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// s390x:"SUBE"
|
||||
// riscv64: "SUB","SLTU"
|
||||
return bits.Sub(x, y, ci)
|
||||
@@ -672,8 +627,7 @@ func SubC(x, ci uint) (r, co uint) {
|
||||
// amd64:"NEGL","SBBQ","NEGQ"
|
||||
// arm64:"NEGS","SBCS","NGC","NEG",-"ADD",-"SUB",-"CMP"
|
||||
// loong64:"SUBV","SGTU"
|
||||
// ppc64:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64le:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64x:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// s390x:"SUBE"
|
||||
// riscv64: "SUB","SLTU"
|
||||
return bits.Sub(x, 7, ci)
|
||||
@@ -683,8 +637,7 @@ func SubZ(x, y uint) (r, co uint) {
|
||||
// amd64:"SUBQ","SBBQ","NEGQ",-"NEGL"
|
||||
// arm64:"SUBS","NGC","NEG",-"SBCS",-"ADD",-"SUB\t",-"CMP"
|
||||
// loong64:"SUBV","SGTU"
|
||||
// ppc64:"SUBC", -"SUBE", "SUBZE", "NEG"
|
||||
// ppc64le:"SUBC", -"SUBE", "SUBZE", "NEG"
|
||||
// ppc64x:"SUBC", -"SUBE", "SUBZE", "NEG"
|
||||
// s390x:"SUBC"
|
||||
// riscv64: "SUB","SLTU"
|
||||
return bits.Sub(x, y, 0)
|
||||
@@ -694,8 +647,7 @@ func SubR(x, y, ci uint) uint {
|
||||
// amd64:"NEGL","SBBQ",-"NEGQ"
|
||||
// arm64:"NEGS","SBCS",-"NGC",-"NEG\t",-"ADD",-"SUB",-"CMP"
|
||||
// loong64:"SUBV",-"SGTU"
|
||||
// ppc64:"SUBC", "SUBE", -"SUBZE", -"NEG"
|
||||
// ppc64le:"SUBC", "SUBE", -"SUBZE", -"NEG"
|
||||
// ppc64x:"SUBC", "SUBE", -"SUBZE", -"NEG"
|
||||
// s390x:"SUBE"
|
||||
// riscv64: "SUB",-"SLTU"
|
||||
r, _ := bits.Sub(x, y, ci)
|
||||
@@ -706,8 +658,7 @@ func SubM(p, q, r *[3]uint) {
|
||||
r[0], c = bits.Sub(p[0], q[0], c)
|
||||
// amd64:"SBBQ",-"NEGL",-"NEGQ"
|
||||
// arm64:"SBCS",-"NEGS",-"NGC",-"NEG",-"ADD",-"SUB",-"CMP"
|
||||
// ppc64:-"SUBC", "SUBE", -"SUBZE", -"NEG"
|
||||
// ppc64le:-"SUBC", "SUBE", -"SUBZE", -"NEG"
|
||||
// ppc64x:-"SUBC", "SUBE", -"SUBZE", -"NEG"
|
||||
// s390x:"SUBE"
|
||||
r[1], c = bits.Sub(p[1], q[1], c)
|
||||
r[2], c = bits.Sub(p[2], q[2], c)
|
||||
@@ -717,8 +668,7 @@ func Sub64(x, y, ci uint64) (r, co uint64) {
|
||||
// amd64:"NEGL","SBBQ","NEGQ"
|
||||
// arm64:"NEGS","SBCS","NGC","NEG",-"ADD",-"SUB",-"CMP"
|
||||
// loong64:"SUBV","SGTU"
|
||||
// ppc64:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64le:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64x:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// s390x:"SUBE"
|
||||
// riscv64: "SUB","SLTU"
|
||||
return bits.Sub64(x, y, ci)
|
||||
@@ -728,8 +678,7 @@ func Sub64C(x, ci uint64) (r, co uint64) {
|
||||
// amd64:"NEGL","SBBQ","NEGQ"
|
||||
// arm64:"NEGS","SBCS","NGC","NEG",-"ADD",-"SUB",-"CMP"
|
||||
// loong64:"SUBV","SGTU"
|
||||
// ppc64:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64le:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64x:"SUBC", "SUBE", "SUBZE", "NEG"
|
||||
// s390x:"SUBE"
|
||||
// riscv64: "SUB","SLTU"
|
||||
return bits.Sub64(x, 7, ci)
|
||||
@@ -739,8 +688,7 @@ func Sub64Z(x, y uint64) (r, co uint64) {
|
||||
// amd64:"SUBQ","SBBQ","NEGQ",-"NEGL"
|
||||
// arm64:"SUBS","NGC","NEG",-"SBCS",-"ADD",-"SUB\t",-"CMP"
|
||||
// loong64:"SUBV","SGTU"
|
||||
// ppc64:"SUBC", -"SUBE", "SUBZE", "NEG"
|
||||
// ppc64le:"SUBC", -"SUBE", "SUBZE", "NEG"
|
||||
// ppc64x:"SUBC", -"SUBE", "SUBZE", "NEG"
|
||||
// s390x:"SUBC"
|
||||
// riscv64: "SUB","SLTU"
|
||||
return bits.Sub64(x, y, 0)
|
||||
@@ -750,8 +698,7 @@ func Sub64R(x, y, ci uint64) uint64 {
|
||||
// amd64:"NEGL","SBBQ",-"NEGQ"
|
||||
// arm64:"NEGS","SBCS",-"NGC",-"NEG\t",-"ADD",-"SUB",-"CMP"
|
||||
// loong64:"SUBV",-"SGTU"
|
||||
// ppc64:"SUBC", "SUBE", -"SUBZE", -"NEG"
|
||||
// ppc64le:"SUBC", "SUBE", -"SUBZE", -"NEG"
|
||||
// ppc64x:"SUBC", "SUBE", -"SUBZE", -"NEG"
|
||||
// s390x:"SUBE"
|
||||
// riscv64: "SUB",-"SLTU"
|
||||
r, _ := bits.Sub64(x, y, ci)
|
||||
@@ -768,11 +715,9 @@ func Sub64M(p, q, r *[3]uint64) {
|
||||
}
|
||||
|
||||
func Sub64MSaveC(p, q, r, c *[2]uint64) {
|
||||
// ppc64:"SUBC\tR\\d+, R\\d+,", "SUBZE", "NEG"
|
||||
// ppc64le:"SUBC\tR\\d+, R\\d+,", "SUBZE", "NEG"
|
||||
// ppc64x:"SUBC\tR\\d+, R\\d+,", "SUBZE", "NEG"
|
||||
r[0], c[0] = bits.Sub64(p[0], q[0], 0)
|
||||
// ppc64:"SUBC\tR\\d+, [$]0,", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64le:"SUBC\tR\\d+, [$]0,", "SUBE", "SUBZE", "NEG"
|
||||
// ppc64x:"SUBC\tR\\d+, [$]0,", "SUBE", "SUBZE", "NEG"
|
||||
r[1], c[1] = bits.Sub64(p[1], q[1], c[0])
|
||||
}
|
||||
|
||||
@@ -846,8 +791,7 @@ func Sub64MPanicOnOverflowGT(a, b [2]uint64) [2]uint64 {
|
||||
func Mul(x, y uint) (hi, lo uint) {
|
||||
// amd64:"MULQ"
|
||||
// arm64:"UMULH","MUL"
|
||||
// ppc64:"MULHDU","MULLD"
|
||||
// ppc64le:"MULHDU","MULLD"
|
||||
// ppc64x:"MULHDU","MULLD"
|
||||
// s390x:"MLGR"
|
||||
// mips64: "MULVU"
|
||||
return bits.Mul(x, y)
|
||||
@@ -856,8 +800,7 @@ func Mul(x, y uint) (hi, lo uint) {
|
||||
func Mul64(x, y uint64) (hi, lo uint64) {
|
||||
// amd64:"MULQ"
|
||||
// arm64:"UMULH","MUL"
|
||||
// ppc64:"MULHDU","MULLD"
|
||||
// ppc64le:"MULHDU","MULLD"
|
||||
// ppc64x:"MULHDU","MULLD"
|
||||
// s390x:"MLGR"
|
||||
// mips64: "MULVU"
|
||||
// riscv64:"MULHU","MUL"
|
||||
|
Reference in New Issue
Block a user