2024-11-11 12:21:14 -08:00
|
|
|
// asmcheck
|
|
|
|
|
|
|
|
|
|
// Copyright 2024 The Go Authors. All rights reserved.
|
|
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
|
|
package codegen
|
|
|
|
|
|
|
|
|
|
// This file contains codegen tests related to strength
|
|
|
|
|
// reduction of integer multiply.
|
|
|
|
|
|
|
|
|
|
func m0(x int64) int64 {
|
|
|
|
|
// amd64: "XORL"
|
2025-10-26 22:51:14 -04:00
|
|
|
// arm64: "MOVD ZR"
|
|
|
|
|
// loong64: "MOVV R0"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 0
|
|
|
|
|
}
|
|
|
|
|
func m2(x int64) int64 {
|
|
|
|
|
// amd64: "ADDQ"
|
|
|
|
|
// arm64: "ADD"
|
2025-05-22 16:21:10 +08:00
|
|
|
// loong64: "ADDVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 2
|
|
|
|
|
}
|
|
|
|
|
func m3(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]2"
|
|
|
|
|
// arm64: "ADD R[0-9]+<<1,"
|
|
|
|
|
// loong64: "ALSLV [$]1,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 3
|
|
|
|
|
}
|
|
|
|
|
func m4(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "SHLQ [$]2,"
|
|
|
|
|
// arm64: "LSL [$]2,"
|
|
|
|
|
// loong64: "SLLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 4
|
|
|
|
|
}
|
|
|
|
|
func m5(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]4"
|
|
|
|
|
// arm64: "ADD R[0-9]+<<2,"
|
|
|
|
|
// loong64: "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 5
|
|
|
|
|
}
|
|
|
|
|
func m6(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]1", "LEAQ .*[*]2"
|
|
|
|
|
// arm64: "ADD R[0-9]+,", "ADD R[0-9]+<<1,"
|
2025-08-07 11:23:55 +08:00
|
|
|
// loong64: "ADDVU", "ADDVU", "ADDVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 6
|
|
|
|
|
}
|
|
|
|
|
func m7(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]2"
|
|
|
|
|
// arm64: "LSL [$]3,", "SUB R[0-9]+,"
|
|
|
|
|
// loong64: "ALSLV [$]1,", "ALSLV [$]1,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 7
|
|
|
|
|
}
|
|
|
|
|
func m8(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "SHLQ [$]3,"
|
|
|
|
|
// arm64: "LSL [$]3,"
|
|
|
|
|
// loong64: "SLLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 8
|
|
|
|
|
}
|
|
|
|
|
func m9(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]8"
|
|
|
|
|
// arm64: "ADD R[0-9]+<<3,"
|
|
|
|
|
// loong64: "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 9
|
|
|
|
|
}
|
|
|
|
|
func m10(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]1", "LEAQ .*[*]4"
|
|
|
|
|
// arm64: "ADD R[0-9]+,", "ADD R[0-9]+<<2,"
|
|
|
|
|
// loong64: "ADDVU", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 10
|
|
|
|
|
}
|
|
|
|
|
func m11(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]4", "LEAQ .*[*]2"
|
|
|
|
|
// arm64: "MOVD [$]11,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]2,", "ALSLV [$]1,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 11
|
|
|
|
|
}
|
|
|
|
|
func m12(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]2", "SHLQ [$]2,"
|
|
|
|
|
// arm64: "LSL [$]2,", "ADD R[0-9]+<<1,"
|
|
|
|
|
// loong64: "SLLV", "ALSLV [$]1,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 12
|
|
|
|
|
}
|
|
|
|
|
func m13(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]2", "LEAQ .*[*]4"
|
|
|
|
|
// arm64: "MOVD [$]13,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]1,", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 13
|
|
|
|
|
}
|
|
|
|
|
func m14(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]14,"
|
|
|
|
|
// arm64: "LSL [$]4,", "SUB R[0-9]+<<1,"
|
|
|
|
|
// loong64: "ADDVU", "ALSLV [$]1", "ALSLV [$]2"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 14
|
|
|
|
|
}
|
|
|
|
|
func m15(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]2", "LEAQ .*[*]4"
|
|
|
|
|
// arm64: "LSL [$]4,", "SUB R[0-9]+,"
|
|
|
|
|
// loong64: "ALSLV [$]1,", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 15
|
|
|
|
|
}
|
|
|
|
|
func m16(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "SHLQ [$]4,"
|
|
|
|
|
// arm64: "LSL [$]4,"
|
|
|
|
|
// loong64: "SLLV [$]4,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 16
|
|
|
|
|
}
|
|
|
|
|
func m17(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]1", "LEAQ .*[*]8"
|
|
|
|
|
// arm64: "ADD R[0-9]+<<4,"
|
|
|
|
|
// loong64: "ALSLV [$]"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 17
|
|
|
|
|
}
|
|
|
|
|
func m18(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]1", "LEAQ .*[*]8"
|
|
|
|
|
// arm64: "ADD R[0-9]+,", "ADD R[0-9]+<<3,"
|
|
|
|
|
// loong64: "ADDVU", "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 18
|
|
|
|
|
}
|
|
|
|
|
func m19(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]8", "LEAQ .*[*]2"
|
|
|
|
|
// arm64: "MOVD [$]19,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]3,", "ALSLV [$]1,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 19
|
|
|
|
|
}
|
|
|
|
|
func m20(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]4", "SHLQ [$]2,"
|
|
|
|
|
// arm64: "LSL [$]2,", "ADD R[0-9]+<<2,"
|
|
|
|
|
// loong64: "SLLV [$]2,", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 20
|
|
|
|
|
}
|
|
|
|
|
func m21(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]4", "LEAQ .*[*]4"
|
|
|
|
|
// arm64: "MOVD [$]21,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]2,", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 21
|
|
|
|
|
}
|
|
|
|
|
func m22(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]22,"
|
|
|
|
|
// arm64: "MOVD [$]22,", "MUL"
|
|
|
|
|
// loong64: "ADDVU", "ALSLV [$]2,", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 22
|
|
|
|
|
}
|
|
|
|
|
func m23(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]23,"
|
|
|
|
|
// arm64: "MOVD [$]23,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]1,", "SUBVU", "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 23
|
|
|
|
|
}
|
|
|
|
|
func m24(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]2", "SHLQ [$]3,"
|
|
|
|
|
// arm64: "LSL [$]3,", "ADD R[0-9]+<<1,"
|
|
|
|
|
// loong64: "SLLV [$]3", "ALSLV [$]1,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 24
|
|
|
|
|
}
|
|
|
|
|
func m25(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]4", "LEAQ .*[*]4"
|
|
|
|
|
// arm64: "MOVD [$]25,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]2,", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 25
|
|
|
|
|
}
|
|
|
|
|
func m26(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]26,"
|
|
|
|
|
// arm64: "MOVD [$]26,", "MUL"
|
|
|
|
|
// loong64: "ADDVU", "ALSLV [$]1,", "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 26
|
|
|
|
|
}
|
|
|
|
|
func m27(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]2", "LEAQ .*[*]8"
|
|
|
|
|
// arm64: "MOVD [$]27,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]1,", "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 27
|
|
|
|
|
}
|
|
|
|
|
func m28(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]28,"
|
|
|
|
|
// arm64: "LSL [$]5, "SUB R[0-9]+<<2,"
|
|
|
|
|
// loong64: "ALSLV [$]1," "SLLV [$]2," "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 28
|
|
|
|
|
}
|
|
|
|
|
func m29(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]29,"
|
|
|
|
|
// arm64: "MOVD [$]29,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]1," "SLLV [$]5," "SUBVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 29
|
|
|
|
|
}
|
|
|
|
|
func m30(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]30,"
|
|
|
|
|
// arm64: "LSL [$]5,", "SUB R[0-9]+<<1,"
|
|
|
|
|
// loong64: "ADDVU" "SLLV [$]5," "SUBVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 30
|
|
|
|
|
}
|
|
|
|
|
func m31(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "SHLQ [$]5,", "SUBQ"
|
|
|
|
|
// arm64: "LSL [$]5,", "SUB R[0-9]+,"
|
|
|
|
|
// loong64: "SLLV [$]5," "SUBVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 31
|
|
|
|
|
}
|
|
|
|
|
func m32(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "SHLQ [$]5,"
|
|
|
|
|
// arm64: "LSL [$]5,"
|
|
|
|
|
// loong64: "SLLV [$]5,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 32
|
|
|
|
|
}
|
|
|
|
|
func m33(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "SHLQ [$]2,", "LEAQ .*[*]8"
|
|
|
|
|
// arm64: "ADD R[0-9]+<<5,"
|
|
|
|
|
// loong64: "ADDVU", "ALSLV [$]4,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 33
|
|
|
|
|
}
|
|
|
|
|
func m34(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "SHLQ [$]5,", "LEAQ .*[*]2"
|
|
|
|
|
// arm64: "ADD R[0-9]+,", "ADD R[0-9]+<<4,"
|
|
|
|
|
// loong64: "ADDVU", "ALSLV [$]4,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 34
|
|
|
|
|
}
|
|
|
|
|
func m35(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]35,"
|
|
|
|
|
// arm64: "MOVD [$]35,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]4,", "ALSLV [$]1,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 35
|
|
|
|
|
}
|
|
|
|
|
func m36(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]8", "SHLQ [$]2,"
|
|
|
|
|
// arm64: "LSL [$]2,", "ADD R[0-9]+<<3,"
|
|
|
|
|
// loong64: "SLLV [$]2,", "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 36
|
|
|
|
|
}
|
|
|
|
|
func m37(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]8", "LEAQ .*[*]4"
|
|
|
|
|
// arm64: "MOVD [$]37,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]3,", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 37
|
|
|
|
|
}
|
|
|
|
|
func m38(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]38,"
|
|
|
|
|
// arm64: "MOVD [$]38,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]3,", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 38
|
|
|
|
|
}
|
|
|
|
|
func m39(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]39,"
|
|
|
|
|
// arm64: "MOVD [$]39,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]2,", "SUBVU", "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 39
|
|
|
|
|
}
|
|
|
|
|
func m40(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "LEAQ .*[*]4", "SHLQ [$]3,"
|
|
|
|
|
// arm64: "LSL [$]3,", "ADD R[0-9]+<<2,"
|
|
|
|
|
// loong64: "SLLV [$]3,", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * 40
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func mn1(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "NEGQ "
|
|
|
|
|
// arm64: "NEG R[0-9]+,"
|
|
|
|
|
// loong64: "SUBVU R[0-9], R0,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -1
|
|
|
|
|
}
|
|
|
|
|
func mn2(x int64) int64 {
|
|
|
|
|
// amd64: "NEGQ", "ADDQ"
|
2025-10-26 22:51:14 -04:00
|
|
|
// arm64: "NEG R[0-9]+<<1,"
|
|
|
|
|
// loong64: "ADDVU" "SUBVU R[0-9], R0,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -2
|
|
|
|
|
}
|
|
|
|
|
func mn3(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "NEGQ", "LEAQ .*[*]2"
|
|
|
|
|
// arm64: "SUB R[0-9]+<<2,"
|
|
|
|
|
// loong64: "SUBVU", "ALSLV [$]1,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -3
|
|
|
|
|
}
|
|
|
|
|
func mn4(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "NEGQ", "SHLQ [$]2,"
|
|
|
|
|
// arm64: "NEG R[0-9]+<<2,"
|
|
|
|
|
// loong64: "SLLV [$]2," "SUBVU R[0-9], R0,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -4
|
|
|
|
|
}
|
|
|
|
|
func mn5(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "NEGQ", "LEAQ .*[*]4"
|
|
|
|
|
// arm64: "NEG R[0-9]+,", "ADD R[0-9]+<<2,"
|
|
|
|
|
// loong64: "SUBVU", "ALSLV [$]2,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -5
|
|
|
|
|
}
|
|
|
|
|
func mn6(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-6,"
|
|
|
|
|
// arm64: "ADD R[0-9]+,", "SUB R[0-9]+<<2,"
|
|
|
|
|
// loong64: "ADDVU", "SUBVU", "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -6
|
|
|
|
|
}
|
|
|
|
|
func mn7(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "NEGQ", "LEAQ .*[*]8"
|
|
|
|
|
// arm64: "SUB R[0-9]+<<3,"
|
|
|
|
|
// loong64: "SUBVU", "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -7
|
|
|
|
|
}
|
|
|
|
|
func mn8(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "NEGQ", "SHLQ [$]3,"
|
|
|
|
|
// arm64: "NEG R[0-9]+<<3,"
|
|
|
|
|
// loong64: "SLLV [$]3" "SUBVU R[0-9], R0,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -8
|
|
|
|
|
}
|
|
|
|
|
func mn9(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "NEGQ", "LEAQ .*[*]8"
|
|
|
|
|
// arm64: "NEG R[0-9]+,", "ADD R[0-9]+<<3,"
|
|
|
|
|
// loong64: "SUBVU", "ALSLV [$]3,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -9
|
|
|
|
|
}
|
|
|
|
|
func mn10(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-10,"
|
|
|
|
|
// arm64: "MOVD [$]-10,", "MUL"
|
|
|
|
|
// loong64: "ADDVU", "ALSLV [$]3", "SUBVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -10
|
|
|
|
|
}
|
|
|
|
|
func mn11(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-11,"
|
|
|
|
|
// arm64: "MOVD [$]-11,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]2,", "SUBVU", "ALSLV [$]4,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -11
|
|
|
|
|
}
|
|
|
|
|
func mn12(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-12,"
|
|
|
|
|
// arm64: "LSL [$]2,", "SUB R[0-9]+<<2,"
|
|
|
|
|
// loong64: "SUBVU", "SLLV [$]2,", "ALSLV [$]4,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -12
|
|
|
|
|
}
|
|
|
|
|
func mn13(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-13,"
|
|
|
|
|
// arm64: "MOVD [$]-13,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]4,", "SLLV [$]2, ", "SUBVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -13
|
|
|
|
|
}
|
|
|
|
|
func mn14(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-14,"
|
|
|
|
|
// arm64: "ADD R[0-9]+,", "SUB R[0-9]+<<3,"
|
|
|
|
|
// loong64: "ADDVU", "SUBVU", "ALSLV [$]4,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -14
|
|
|
|
|
}
|
|
|
|
|
func mn15(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "SHLQ [$]4,", "SUBQ"
|
|
|
|
|
// arm64: "SUB R[0-9]+<<4,"
|
|
|
|
|
// loong64: "SUBVU", "ALSLV [$]4,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -15
|
|
|
|
|
}
|
|
|
|
|
func mn16(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "NEGQ", "SHLQ [$]4,"
|
|
|
|
|
// arm64: "NEG R[0-9]+<<4,"
|
|
|
|
|
// loong64: "SLLV [$]4," "SUBVU R[0-9], R0,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -16
|
|
|
|
|
}
|
|
|
|
|
func mn17(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-17,"
|
|
|
|
|
// arm64: "NEG R[0-9]+,", "ADD R[0-9]+<<4,"
|
|
|
|
|
// loong64: "SUBVU", "ALSLV [$]4,"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -17
|
|
|
|
|
}
|
|
|
|
|
func mn18(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-18,"
|
|
|
|
|
// arm64: "MOVD [$]-18,", "MUL"
|
|
|
|
|
// loong64: "ADDVU", "ALSLV [$]4,", "SUBVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -18
|
|
|
|
|
}
|
|
|
|
|
func mn19(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-19,"
|
|
|
|
|
// arm64: "MOVD [$]-19,", "MUL"
|
|
|
|
|
// loong64: "ALSLV [$]1,", "ALSLV [$]4,", "SUBVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -19
|
|
|
|
|
}
|
|
|
|
|
func mn20(x int64) int64 {
|
2025-10-26 22:51:14 -04:00
|
|
|
// amd64: "IMUL3Q [$]-20,"
|
|
|
|
|
// arm64: "MOVD [$]-20,", "MUL"
|
|
|
|
|
// loong64: "SLLV [$]2,", "ALSLV [$]4,", "SUBVU"
|
2024-11-11 12:21:14 -08:00
|
|
|
return x * -20
|
|
|
|
|
}
|