[PATCH] D141405: [ARM] Accept two-register form of vnmul

Jirui Wu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 10 09:12:27 PST 2023


JiruiWu created this revision.
JiruiWu added reviewers: lenary, olista01.
Herald added subscribers: hiraditya, kristof.beyls.
Herald added a project: All.
JiruiWu requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

The previous vnmul only accepts three registers. It should accept either
two or three registers as vmul does.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D141405

Files:
  llvm/lib/Target/ARM/ARMInstrVFP.td
  llvm/test/MC/ARM/simple-fp-encoding.s
  llvm/test/MC/Disassembler/ARM/fp-encoding.txt


Index: llvm/test/MC/Disassembler/ARM/fp-encoding.txt
===================================================================
--- llvm/test/MC/Disassembler/ARM/fp-encoding.txt
+++ llvm/test/MC/Disassembler/ARM/fp-encoding.txt
@@ -27,6 +27,9 @@
 0xe0 0x0b 0x61 0xee
 # CHECK: vnmul.f64       d16, d17, d16
 
+0x41 0x0b 0x20 0xee
+# CHECK: vnmul.f64       d0, d0, d1
+
 0xc0 0x0a 0x20 0xee
 # CHECK: vnmul.f32       s0, s1, s0
 
Index: llvm/test/MC/ARM/simple-fp-encoding.s
===================================================================
--- llvm/test/MC/ARM/simple-fp-encoding.s
+++ llvm/test/MC/ARM/simple-fp-encoding.s
@@ -34,9 +34,11 @@
 
         vnmul.f64       d16, d17, d16
         vnmul.f32       s0, s1, s0
+        vnmul.f64       d0, d1
 
 @ CHECK: vnmul.f64 d16, d17, d16     @ encoding: [0xe0,0x0b,0x61,0xee]
 @ CHECK: vnmul.f32 s0, s1, s0        @ encoding: [0xc0,0x0a,0x20,0xee]
+@ CHECK: vnmul.f64 d0, d0, d1        @ encoding: [0x41,0x0b,0x20,0xee]
 
         vcmp.f64       d17, d16
         vcmp.f32       s1, s0
Index: llvm/lib/Target/ARM/ARMInstrVFP.td
===================================================================
--- llvm/lib/Target/ARM/ARMInstrVFP.td
+++ llvm/lib/Target/ARM/ARMInstrVFP.td
@@ -496,12 +496,14 @@
                   [(set (f16 HPR:$Sd), (fmul (f16 HPR:$Sn), (f16 HPR:$Sm)))]>,
              Sched<[WriteFPMUL32, ReadFPMUL, ReadFPMUL]>;
 
+let TwoOperandAliasConstraint = "$Dn = $Dd" in
 def VNMULD : ADbI<0b11100, 0b10, 1, 0,
                   (outs DPR:$Dd), (ins DPR:$Dn, DPR:$Dm),
                   IIC_fpMUL64, "vnmul", ".f64\t$Dd, $Dn, $Dm",
                   [(set DPR:$Dd, (fneg (fmul DPR:$Dn, (f64 DPR:$Dm))))]>,
              Sched<[WriteFPMUL64, ReadFPMUL, ReadFPMUL]>;
 
+let TwoOperandAliasConstraint = "$Sn = $Sd" in
 def VNMULS : ASbI<0b11100, 0b10, 1, 0,
                   (outs SPR:$Sd), (ins SPR:$Sn, SPR:$Sm),
                   IIC_fpMUL32, "vnmul", ".f32\t$Sd, $Sn, $Sm",
@@ -512,6 +514,7 @@
   let D = VFPNeonA8Domain;
 }
 
+let TwoOperandAliasConstraint = "$Sn = $Sd" in
 def VNMULH : AHbI<0b11100, 0b10, 1, 0,
                   (outs HPR:$Sd), (ins HPR:$Sn, HPR:$Sm),
                   IIC_fpMUL16, "vnmul", ".f16\t$Sd, $Sn, $Sm",


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D141405.487839.patch
Type: text/x-patch
Size: 2204 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230110/309b3bf4/attachment.bin>


More information about the llvm-commits mailing list