arm64/arm64asm: fix argument order in FMADD/FMSUB/FNMADD/FNMSUB
The addends in FMADD/FMSUB/FNMADD/FNMSUB should come second, in
accordance with MADD/MSUB. This CL fixes that issue.
fixes golang/go#23775
Change-Id: I139397f38ba02901cf840ed34bb0d1180e9bba36
Reviewed-on: https://go-review.googlesource.com/93336
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/arm64/arm64asm/plan9x.go b/arm64/arm64asm/plan9x.go
index e597276..f824883 100644
--- a/arm64/arm64asm/plan9x.go
+++ b/arm64/arm64asm/plan9x.go
@@ -189,7 +189,7 @@
case TBNZ, TBZ:
args[0], args[1], args[2] = args[2], args[0], args[1]
- case MADD, MSUB, SMADDL, SMSUBL, UMADDL, UMSUBL:
+ case MADD, MSUB, SMADDL, SMSUBL, UMADDL, UMSUBL, FMADD, FMSUB, FNMADD, FNMSUB:
if r, ok := inst.Args[0].(Reg); ok {
rno := uint16(r)
if rno <= uint16(WZR) {
diff --git a/arm64/arm64asm/testdata/cases.txt b/arm64/arm64asm/testdata/cases.txt
index 57795dd..6070575 100644
--- a/arm64/arm64asm/testdata/cases.txt
+++ b/arm64/arm64asm/testdata/cases.txt
@@ -5146,8 +5146,8 @@
ebfe346e| plan9 FDIV V20.S4, V23.S4, V11.S4
c918371e| plan9 FDIVS F23, F6, F9
911a7f1e| plan9 FDIVD F31, F20, F17
-a81f0c1f| plan9 FMADD F7, F12, F29, F8
-d0404a1f| plan9 FMADD F16, F10, F6, F16
+a81f0c1f| plan9 FMADD F12, F7, F29, F8
+d0404a1f| plan9 FMADD F10, F16, F6, F16
7ff6324e| plan9 FMAX V18.S4, V19.S4, V31.S4
b84b351e| plan9 FMAXS F21, F29, F24
d64b621e| plan9 FMAXD F2, F30, F22
@@ -5182,8 +5182,8 @@
7101ae9e| plan9 FMOV V11.D[1], R17
0e103d1e| plan9 FMOVS $-0.75, F14
1e50761e| plan9 FMOVD $-18., F30
-d2b4121f| plan9 FMSUB F13, F18, F6, F18
-0a9c4c1f| plan9 FMSUB F7, F12, F0, F10
+d2b4121f| plan9 FMSUB F18, F13, F6, F18
+0a9c4c1f| plan9 FMSUB F12, F7, F0, F10
0d99b35f| plan9 FMULS V19.S[3], F8, F13
a89b9b0f| plan9 FMUL V27.S[2], V29.S2, V8.S2
75dc376e| plan9 FMUL V23.S4, V3.S4, V21.S4
@@ -5194,10 +5194,10 @@
c8dc284e| plan9 VFMULX V8.S4, V6.S4, V8.S4
c043211e| plan9 FNEGS F30, F0
4742611e| plan9 FNEGD F18, F7
-9c51251f| plan9 FNMADD F20, F5, F12, F28
-e407771f| plan9 FNMADD F1, F23, F31, F4
-fbfa3a1f| plan9 FNMSUB F30, F26, F23, F27
-bbb0691f| plan9 FNMSUB F12, F9, F5, F27
+9c51251f| plan9 FNMADD F5, F20, F12, F28
+e407771f| plan9 FNMADD F23, F1, F31, F4
+fbfa3a1f| plan9 FNMSUB F26, F30, F23, F27
+bbb0691f| plan9 FNMSUB F9, F12, F5, F27
6a8b3f1e| plan9 FNMULS F31, F27, F10
1a8b751e| plan9 FNMULD F21, F24, F26
57d8e15e| plan9 FRECPE F2, F23
@@ -6136,8 +6136,8 @@
06fe3c6e| plan9 FDIV V28.S4, V16.S4, V6.S4
c41b201e| plan9 FDIVS F0, F30, F4
1618781e| plan9 FDIVD F24, F0, F22
-507b0d1f| plan9 FMADD F30, F13, F26, F16
-8803491f| plan9 FMADD F0, F9, F28, F8
+507b0d1f| plan9 FMADD F13, F30, F26, F16
+8803491f| plan9 FMADD F9, F0, F28, F8
75f7394e| plan9 FMAX V25.S4, V27.S4, V21.S4
804b3c1e| plan9 FMAXS F28, F28, F0
c1496c1e| plan9 FMAXD F12, F14, F1
@@ -6172,8 +6172,8 @@
1103ae9e| plan9 FMOV V24.D[1], R17
0230321e| plan9 FMOVS $-4.25, F2
18b0751e| plan9 FMOVD $-14.5, F24
-92bc1b1f| plan9 FMSUB F15, F27, F4, F18
-f8e14a1f| plan9 FMSUB F24, F10, F15, F24
+92bc1b1f| plan9 FMSUB F27, F15, F4, F18
+f8e14a1f| plan9 FMSUB F10, F24, F15, F24
ef91d35f| plan9 FMULD V19.D[0], F15, F15
d293c24f| plan9 FMUL V2.D[0], V30.D2, V18.D2
18dd2b2e| plan9 FMUL V11.S2, V8.S2, V24.S2
@@ -6185,10 +6185,10 @@
c8f9e06e| plan9 FNEG V14.D2, V8.D2
9c41211e| plan9 FNEGS F12, F28
c443611e| plan9 FNEGD F30, F4
-e77f301f| plan9 FNMADD F31, F16, F31, F7
+e77f301f| plan9 FNMADD F16, F31, F31, F7
9f326c1f| plan9 FNMADD F12, F12, F20, F31
-d9e92f1f| plan9 FNMSUB F26, F15, F14, F25
-00ad711f| plan9 FNMSUB F11, F17, F8, F0
+d9e92f1f| plan9 FNMSUB F15, F26, F14, F25
+00ad711f| plan9 FNMSUB F17, F11, F8, F0
c889211e| plan9 FNMULS F1, F14, F8
528b761e| plan9 FNMULD F22, F26, F18
01d8e15e| plan9 FRECPE F0, F1
@@ -7136,8 +7136,8 @@
1aff2b6e| plan9 FDIV V11.S4, V24.S4, V26.S4
171a391e| plan9 FDIVS F25, F16, F23
7d196b1e| plan9 FDIVD F11, F11, F29
-f9721f1f| plan9 FMADD F28, F31, F23, F25
-7070551f| plan9 FMADD F28, F21, F3, F16
+f9721f1f| plan9 FMADD F31, F28, F23, F25
+7070551f| plan9 FMADD F21, F28, F3, F16
05f7624e| plan9 FMAX V2.D2, V24.D2, V5.D2
88493d1e| plan9 FMAXS F29, F12, F8
4a496d1e| plan9 FMAXD F13, F10, F10
@@ -7173,8 +7173,8 @@
8300ae9e| plan9 FMOV V4.D[1], R3
1870331e| plan9 FMOVS $-6.75, F24
08507d1e| plan9 FMOVD $-0.8125, F8
-5cbf0c1f| plan9 FMSUB F15, F12, F26, F28
-89e3501f| plan9 FMSUB F24, F16, F28, F9
+5cbf0c1f| plan9 FMSUB F12, F15, F26, F28
+89e3501f| plan9 FMSUB F16, F24, F28, F9
3a93c95f| plan9 FMULD V9.D[0], F25, F26
5a90ae4f| plan9 FMUL V14.S[1], V2.S4, V26.S4
ba0a2f1e| plan9 FMULS F15, F21, F26
@@ -7185,10 +7185,10 @@
d4de7f4e| plan9 VFMULX V31.D2, V22.D2, V20.D2
8e41211e| plan9 FNEGS F12, F14
dc42611e| plan9 FNEGD F22, F28
-cb362e1f| plan9 FNMADD F13, F14, F22, F11
-6441791f| plan9 FNMADD F16, F25, F11, F4
-36ed291f| plan9 FNMSUB F27, F9, F9, F22
-35b27a1f| plan9 FNMSUB F12, F26, F17, F21
+cb362e1f| plan9 FNMADD F14, F13, F22, F11
+6441791f| plan9 FNMADD F25, F16, F11, F4
+36ed291f| plan9 FNMSUB F9, F27, F9, F22
+35b27a1f| plan9 FNMSUB F26, F12, F17, F21
9388301e| plan9 FNMULS F16, F4, F19
c088711e| plan9 FNMULD F17, F6, F0
e8daa15e| plan9 FRECPE F23, F8
@@ -8130,8 +8130,8 @@
56fd3f2e| plan9 FDIV V31.S2, V10.S2, V22.S2
1f182e1e| plan9 FDIVS F14, F0, F31
ce1b741e| plan9 FDIVD F20, F30, F14
-0d61021f| plan9 FMADD F24, F2, F8, F13
-03205e1f| plan9 FMADD F8, F30, F0, F3
+0d61021f| plan9 FMADD F2, F24, F8, F13
+03205e1f| plan9 FMADD F30, F8, F0, F3
72f6654e| plan9 FMAX V5.D2, V19.D2, V18.D2
1849281e| plan9 FMAXS F8, F8, F24
8e4a6e1e| plan9 FMAXD F14, F20, F14
@@ -8164,8 +8164,8 @@
ee02ae9e| plan9 FMOV V23.D[1], R14
0ff0251e| plan9 FMOVS $15.5, F15
16506a1e| plan9 FMOVD $0.28125, F22
-d1c20e1f| plan9 FMSUB F16, F14, F22, F17
-fdae491f| plan9 FMSUB F11, F9, F23, F29
+d1c20e1f| plan9 FMSUB F14, F16, F22, F17
+fdae491f| plan9 FMSUB F9, F11, F23, F29
a4989d4f| plan9 FMUL V29.S[2], V5.S4, V4.S4
efde706e| plan9 FMUL V16.D2, V23.D2, V15.D2
190a291e| plan9 FMULS F9, F16, F25
@@ -8176,10 +8176,10 @@
a2fba06e| plan9 FNEG V29.S4, V2.S4
7a40211e| plan9 FNEGS F3, F26
f843611e| plan9 FNEGD F31, F24
-326b381f| plan9 FNMADD F26, F24, F25, F18
-4b636a1f| plan9 FNMADD F24, F10, F26, F11
-48fa201f| plan9 FNMSUB F30, F0, F18, F8
-04d87f1f| plan9 FNMSUB F22, F31, F0, F4
+326b381f| plan9 FNMADD F24, F26, F25, F18
+4b636a1f| plan9 FNMADD F10, F24, F26, F11
+48fa201f| plan9 FNMSUB F0, F30, F18, F8
+04d87f1f| plan9 FNMSUB F31, F22, F0, F4
0289371e| plan9 FNMULS F23, F8, F2
0e8a691e| plan9 FNMULD F9, F16, F14
05dba15e| plan9 FRECPE F24, F5