From 64551b3cca496a06f7bada1fab6315d6334e0429 Mon Sep 17 00:00:00 2001 From: Rubens Brandao Date: Wed, 7 Jun 2023 16:18:00 -0300 Subject: [PATCH 1/4] Fix AARCH64 fcadd_rotate export len --- Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc index 58f6137d7e..cdc045a1e9 100644 --- a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc +++ b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc @@ -3554,8 +3554,8 @@ is b_31=0 & b_30=1 & b_2129=0b101110010 & b_1015=0b000101 & Rd_VPR128.8H & Rn_VP # C7.2.46 FCADD page C7-1090 line 63037 KEEPWITH -fcadd_rotate: #90 is b_12=0 { export 90:1; } -fcadd_rotate: #270 is b_12=1 { export 270:1; } +fcadd_rotate: #90 is b_12=0 { export 90:2; } +fcadd_rotate: #270 is b_12=1 { export 270:2; } # C7.2.53 FCADD page C7-2127 line 123874 MATCH x2e00e400/mask=xbf20ec00 # CONSTRUCT x2e40e400/mask=xffe0ec00 MATCHED 1 DOCUMENTED OPCODES From e0bd90eb7d02025e0f0514d8836a9e35e2a9c68e Mon Sep 17 00:00:00 2001 From: Rubens Brandao Date: Wed, 7 Jun 2023 16:22:23 -0300 Subject: [PATCH 2/4] Fix AARCH64 fcmla_rotate export len --- .../AARCH64/data/languages/AARCH64neon.sinc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc index cdc045a1e9..66633d40a9 100644 --- a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc +++ b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc @@ -4270,14 +4270,14 @@ is b_31=0 & b_30=1 & b_1029=0b00111011111000110010 & Rd_VPR128.8H & Rn_VPR128.8H # C7.2.55 FCMLA (by element) page C7-1117 line 64749 KEEPWITH -fcmla_rotate: #0 is b_15=0 & b_1314=0b00 { export 0:1; } -fcmla_rotate: #90 is b_15=0 & b_1314=0b01 { export 90:1; } -fcmla_rotate: #180 is b_15=0 & b_1314=0b10 { export 180:1; } -fcmla_rotate: #270 is b_15=0 & b_1314=0b11 { export 270:1; } -fcmla_rotate: #0 is b_15=1 & b_1112=0b00 { export 0:1; } -fcmla_rotate: #90 is b_15=1 & b_1112=0b01 { export 90:1; } -fcmla_rotate: #180 is b_15=1 & b_1112=0b10 { export 180:1; } -fcmla_rotate: #270 is b_15=1 & b_1112=0b11 { export 270:1; } +fcmla_rotate: #0 is b_15=0 & b_1314=0b00 { export 0:2; } +fcmla_rotate: #90 is b_15=0 & b_1314=0b01 { export 90:2; } +fcmla_rotate: #180 is b_15=0 & b_1314=0b10 { export 180:2; } +fcmla_rotate: #270 is b_15=0 & b_1314=0b11 { export 270:2; } +fcmla_rotate: #0 is b_15=1 & b_1112=0b00 { export 0:2; } +fcmla_rotate: #90 is b_15=1 & b_1112=0b01 { export 90:2; } +fcmla_rotate: #180 is b_15=1 & b_1112=0b10 { export 180:2; } +fcmla_rotate: #270 is b_15=1 & b_1112=0b11 { export 270:2; } # C7.2.62 FCMLA (by element) page C7-2154 line 125620 MATCH x2f001000/mask=xbf009400 # CONSTRUCT x2f401000/mask=xffc09c00 MATCHED 1 DOCUMENTED OPCODES From fb9ed7cc4885a9cfdd11e08913860025398645aa Mon Sep 17 00:00:00 2001 From: Rubens Brandao Date: Wed, 19 Jul 2023 13:49:09 -0300 Subject: [PATCH 3/4] AARCH64 fcadd and fcmla export contants --- .../AARCH64/data/languages/AARCH64neon.sinc | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc index 66633d40a9..27ec4362b2 100644 --- a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc +++ b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc @@ -3554,8 +3554,7 @@ is b_31=0 & b_30=1 & b_2129=0b101110010 & b_1015=0b000101 & Rd_VPR128.8H & Rn_VP # C7.2.46 FCADD page C7-1090 line 63037 KEEPWITH -fcadd_rotate: #90 is b_12=0 { export 90:2; } -fcadd_rotate: #270 is b_12=1 { export 270:2; } +fcadd_rotate: "#"^val is b_12 [ val = 90 + 180 * b_12; ] { export *[const]:2 val; } # C7.2.53 FCADD page C7-2127 line 123874 MATCH x2e00e400/mask=xbf20ec00 # CONSTRUCT x2e40e400/mask=xffe0ec00 MATCHED 1 DOCUMENTED OPCODES @@ -4270,14 +4269,8 @@ is b_31=0 & b_30=1 & b_1029=0b00111011111000110010 & Rd_VPR128.8H & Rn_VPR128.8H # C7.2.55 FCMLA (by element) page C7-1117 line 64749 KEEPWITH -fcmla_rotate: #0 is b_15=0 & b_1314=0b00 { export 0:2; } -fcmla_rotate: #90 is b_15=0 & b_1314=0b01 { export 90:2; } -fcmla_rotate: #180 is b_15=0 & b_1314=0b10 { export 180:2; } -fcmla_rotate: #270 is b_15=0 & b_1314=0b11 { export 270:2; } -fcmla_rotate: #0 is b_15=1 & b_1112=0b00 { export 0:2; } -fcmla_rotate: #90 is b_15=1 & b_1112=0b01 { export 90:2; } -fcmla_rotate: #180 is b_15=1 & b_1112=0b10 { export 180:2; } -fcmla_rotate: #270 is b_15=1 & b_1112=0b11 { export 270:2; } +fcmla_rotate: "#"^val is b_15=0 & b_1314 [ val = 90 * b_1314; ] { export *[const]:2 val; } +fcmla_rotate: "#"^val is b_15=1 & b_1112 [ val = 90 * b_1112; ] { export *[const]:2 val; } # C7.2.62 FCMLA (by element) page C7-2154 line 125620 MATCH x2f001000/mask=xbf009400 # CONSTRUCT x2f401000/mask=xffc09c00 MATCHED 1 DOCUMENTED OPCODES From 2e650401d32fb0d04f8a310b9642332aa88a4a56 Mon Sep 17 00:00:00 2001 From: ghidorahrex Date: Tue, 25 Jul 2023 13:23:03 +0000 Subject: [PATCH 4/4] GP-3652: Added comments --- Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc index 27ec4362b2..65a3b3b906 100644 --- a/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc +++ b/Ghidra/Processors/AARCH64/data/languages/AARCH64neon.sinc @@ -3553,7 +3553,7 @@ is b_31=0 & b_30=1 & b_2129=0b101110010 & b_1015=0b000101 & Rd_VPR128.8H & Rn_VP } # C7.2.46 FCADD page C7-1090 line 63037 KEEPWITH - +# val is either 90 or 270 depending on the value of bit b_12 (0 or 1) fcadd_rotate: "#"^val is b_12 [ val = 90 + 180 * b_12; ] { export *[const]:2 val; } # C7.2.53 FCADD page C7-2127 line 123874 MATCH x2e00e400/mask=xbf20ec00 @@ -4268,7 +4268,7 @@ is b_31=0 & b_30=1 & b_1029=0b00111011111000110010 & Rd_VPR128.8H & Rn_VPR128.8H } # C7.2.55 FCMLA (by element) page C7-1117 line 64749 KEEPWITH - +# Values in set {0,90,180,270} depending on b_1314/1112 values of {0,1,2,3} fcmla_rotate: "#"^val is b_15=0 & b_1314 [ val = 90 * b_1314; ] { export *[const]:2 val; } fcmla_rotate: "#"^val is b_15=1 & b_1112 [ val = 90 * b_1112; ] { export *[const]:2 val; }