[llvm-commits] [llvm] r133932 - in /llvm/trunk: lib/Target/ARM/ARMInstrVFP.td test/MC/ARM/vpush-vpop.s

Jim Grosbach grosbach at apple.com
Mon Jun 27 13:00:07 PDT 2011


Author: grosbach
Date: Mon Jun 27 15:00:07 2011
New Revision: 133932

URL: http://llvm.org/viewvc/llvm-project?rev=133932&view=rev
Log:
ARM assembler support for vpush/vpop.

Add aliases for the vpush/vpop mnemonics to the VFP load/store multiple
writeback instructions w/ SP as the base pointer.

rdar://9683231


Added:
    llvm/trunk/test/MC/ARM/vpush-vpop.s
Modified:
    llvm/trunk/lib/Target/ARM/ARMInstrVFP.td

Modified: llvm/trunk/lib/Target/ARM/ARMInstrVFP.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrVFP.td?rev=133932&r1=133931&r2=133932&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrVFP.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrVFP.td Mon Jun 27 15:00:07 2011
@@ -166,6 +166,15 @@
 def : MnemonicAlias<"vldm", "vldmia">;
 def : MnemonicAlias<"vstm", "vstmia">;
 
+def : InstAlias<"vpush${p} $r", (VSTMDDB_UPD SP, pred:$p, dpr_reglist:$r)>,
+                Requires<[HasVFP2]>;
+def : InstAlias<"vpush${p} $r", (VSTMSDB_UPD SP, pred:$p, spr_reglist:$r)>,
+                Requires<[HasVFP2]>;
+def : InstAlias<"vpop${p} $r",  (VLDMDIA_UPD SP, pred:$p, dpr_reglist:$r)>,
+                Requires<[HasVFP2]>;
+def : InstAlias<"vpop${p} $r",  (VLDMSIA_UPD SP, pred:$p, spr_reglist:$r)>,
+                Requires<[HasVFP2]>;
+
 // FLDMX, FSTMX - mixing S/D registers for pre-armv6 cores
 
 //===----------------------------------------------------------------------===//

Added: llvm/trunk/test/MC/ARM/vpush-vpop.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/vpush-vpop.s?rev=133932&view=auto
==============================================================================
--- llvm/trunk/test/MC/ARM/vpush-vpop.s (added)
+++ llvm/trunk/test/MC/ARM/vpush-vpop.s Mon Jun 27 15:00:07 2011
@@ -0,0 +1,19 @@
+@ RUN: llvm-mc -triple armv7-unknown-unknown -show-encoding < %s | FileCheck --check-prefix=CHECK-ARM %s
+@ RUN: llvm-mc -triple thumbv7-unknown-unknown -show-encoding < %s | FileCheck --check-prefix=CHECK-THUMB %s
+
+foo:
+@ CHECK: foo
+ vpush {d8, d9, d10, d11, d12}
+ vpush {s8, s9, s10, s11, s12}
+ vpop  {d8, d9, d10, d11, d12}
+ vpop  {s8, s9, s10, s11, s12}
+
+@ CHECK-THUMB: vpush {d8, d9, d10, d11, d12} @ encoding: [0x2d,0xed,0x0a,0x8b]
+@ CHECK-THUMB: vpush {s8, s9, s10, s11, s12} @ encoding: [0x2d,0xed,0x05,0x4a]
+@ CHECK-THUMB: vpop  {d8, d9, d10, d11, d12} @ encoding: [0xbd,0xec,0x0a,0x8b]
+@ CHECK-THUMB: vpop  {s8, s9, s10, s11, s12} @ encoding: [0xbd,0xec,0x05,0x4a]
+
+@ CHECK-ARM: vpush {d8, d9, d10, d11, d12} @ encoding: [0x0a,0x8b,0x2d,0xed]
+@ CHECK-ARM: vpush {s8, s9, s10, s11, s12} @ encoding: [0x05,0x4a,0x2d,0xed]
+@ CHECK-ARM: vpop  {d8, d9, d10, d11, d12} @ encoding: [0x0a,0x8b,0xbd,0xec]
+@ CHECK-ARM: vpop  {s8, s9, s10, s11, s12} @ encoding: [0x05,0x4a,0xbd,0xec]





More information about the llvm-commits mailing list