[llvm] r373052 - [MC][ARM] vscclrm disassembles as vldmia
Alexandros Lamprineas via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 27 01:22:24 PDT 2019
Author: alelab01
Date: Fri Sep 27 01:22:24 2019
New Revision: 373052
URL: http://llvm.org/viewvc/llvm-project?rev=373052&view=rev
Log:
[MC][ARM] vscclrm disassembles as vldmia
Happens only when the mve.fp subtarget feature is enabled:
$ llvm-mc -triple thumbv8.1m.main -mattr=+mve.fp,+8msecext -disassemble <<< "0x9f,0xec,0x08,0x0b"
.text
vldmia pc, {d0, d1, d2, d3}
$ llvm-mc -triple thumbv8.1m.main -mattr=+8msecext -disassemble <<< "0x9f,0xec,0x08,0x0b"
.text
vscclrm {d0, d1, d2, d3, vpr}
Assembling returns the correct encoding with or without mve.fp:
$ llvm-mc -triple thumbv8.1m.main -mattr=+mve.fp,+8msecext -show-encoding <<< "vscclrm {d0-d3, vpr}"
.text
vscclrm {d0, d1, d2, d3, vpr} @ encoding: [0x9f,0xec,0x08,0x0b]
$ llvm-mc -triple thumbv8.1m.main -mattr=+8msecext -show-encoding <<< "vscclrm {d0-d3, vpr}"
.text
vscclrm {d0, d1, d2, d3, vpr} @ encoding: [0x9f,0xec,0x08,0x0b]
The problem seems to be in the TableGen description of VSCCLRMD.
The least significant bit should be set to zero.
Differential Revision: https://reviews.llvm.org/D68025
Modified:
llvm/trunk/lib/Target/ARM/ARMInstrVFP.td
llvm/trunk/test/MC/ARM/vscclrm-asm.s
llvm/trunk/test/MC/Disassembler/ARM/vscclrm.txt
Modified: llvm/trunk/lib/Target/ARM/ARMInstrVFP.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrVFP.td?rev=373052&r1=373051&r2=373052&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrVFP.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrVFP.td Fri Sep 27 01:22:24 2019
@@ -2618,7 +2618,8 @@ def VSCCLRMD : VFPXI<(outs), (ins pred:$
let Inst{21-16} = 0b011111;
let Inst{15-12} = regs{11-8};
let Inst{11-8} = 0b1011;
- let Inst{7-0} = regs{7-0};
+ let Inst{7-1} = regs{7-1};
+ let Inst{0} = 0;
let DecoderMethod = "DecodeVSCCLRM";
Modified: llvm/trunk/test/MC/ARM/vscclrm-asm.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/vscclrm-asm.s?rev=373052&r1=373051&r2=373052&view=diff
==============================================================================
--- llvm/trunk/test/MC/ARM/vscclrm-asm.s (original)
+++ llvm/trunk/test/MC/ARM/vscclrm-asm.s Fri Sep 27 01:22:24 2019
@@ -1,6 +1,9 @@
// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+8msecext -show-encoding < %s 2>%t \
// RUN: | FileCheck --check-prefix=CHECK %s
// RUN: FileCheck --check-prefix=ERROR < %t %s
+// RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+8msecext -show-encoding < %s 2>%t \
+// RUN: | FileCheck --check-prefix=CHECK %s
+// RUN: FileCheck --check-prefix=ERROR < %t %s
// RUN: not llvm-mc -triple=thumbv8.1m.main-arm-none-eabi -mattr=-8msecext < %s 2>%t
// RUN: FileCheck --check-prefix=NOSEC < %t %s
@@ -21,6 +24,9 @@ vscclrm {s31, vpr}
// CHECK: vscclrm {d0, d1, vpr} @ encoding: [0x9f,0xec,0x04,0x0b]
vscclrm {d0-d1, vpr}
+// CHECK: vscclrm {d0, d1, d2, d3, vpr} @ encoding: [0x9f,0xec,0x08,0x0b]
+vscclrm {d0-d3, vpr}
+
// CHECK: vscclrm {d5, d6, d7, vpr} @ encoding: [0x9f,0xec,0x06,0x5b]
vscclrm {d5-d7, vpr}
Modified: llvm/trunk/test/MC/Disassembler/ARM/vscclrm.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/ARM/vscclrm.txt?rev=373052&r1=373051&r2=373052&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/ARM/vscclrm.txt (original)
+++ llvm/trunk/test/MC/Disassembler/ARM/vscclrm.txt Fri Sep 27 01:22:24 2019
@@ -1,5 +1,5 @@
# RUN: llvm-mc -disassemble -triple=thumbv8.1m.main-none-eabi -mattr=+8msecext -show-encoding %s 2>&1 | FileCheck %s
-
+# RUN: llvm-mc -disassemble -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+8msecext -show-encoding %s 2>&1 | FileCheck %s
[0x9f 0xec 0x04 0x0a]
# CHECK: vscclrm {s0, s1, s2, s3, vpr}
@@ -16,6 +16,9 @@
[0x9f,0xec,0x04,0x0b]
# CHECK: vscclrm {d0, d1, vpr} @ encoding: [0x9f,0xec,0x04,0x0b]
+[0x9f,0xec,0x08,0x0b]
+# CHECK: vscclrm {d0, d1, d2, d3, vpr} @ encoding: [0x9f,0xec,0x08,0x0b]
+
[0x9f,0xec,0x06,0x5b]
# CHECK: vscclrm {d5, d6, d7, vpr} @ encoding: [0x9f,0xec,0x06,0x5b]
More information about the llvm-commits
mailing list