summary refs log tree commit diff
path: root/arm64
diff options
context:
space:
mode:
authorEyal Sawady <ecs@d2evs.net>2022-01-17 22:00:48 +0000
committerQuentin Carbonneaux <quentin@c9x.me>2022-01-23 11:43:59 +0100
commite91d12158122b23271ff49de8977c92fef7f3908 (patch)
treeea5051ef69ae917f23249fe7a6adc8569deb3718 /arm64
parent367c8215d99054892740ad74c690b106c45ebf60 (diff)
downloadroux-e91d12158122b23271ff49de8977c92fef7f3908.tar.gz
Add a negation instruction
Necessary for floating-point negation, because
`%result = sub 0, %operand` doesn't give the correct sign for 0/-0.
Diffstat (limited to 'arm64')
-rw-r--r--arm64/emit.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arm64/emit.c b/arm64/emit.c
index bd0ebdc..de1859b 100644
--- a/arm64/emit.c
+++ b/arm64/emit.c
@@ -43,6 +43,8 @@ static struct {
 	{ Oadd,    Ka, "fadd %=, %0, %1" },
 	{ Osub,    Ki, "sub %=, %0, %1" },
 	{ Osub,    Ka, "fsub %=, %0, %1" },
+	{ Oneg,    Ki, "neg %=, %0" },
+	{ Oneg,    Ka, "fneg %=, %0" },
 	{ Oand,    Ki, "and %=, %0, %1" },
 	{ Oor,     Ki, "orr %=, %0, %1" },
 	{ Oxor,    Ki, "eor %=, %0, %1" },