[llvm] r218603 - [Thumb2] ldrexd and strexd are not defined on v7M
Oliver Stannard
oliver.stannard at arm.com
Mon Sep 29 03:57:30 PDT 2014
Author: olista01
Date: Mon Sep 29 05:57:29 2014
New Revision: 218603
URL: http://llvm.org/viewvc/llvm-project?rev=218603&view=rev
Log:
[Thumb2] ldrexd and strexd are not defined on v7M
The Thumb2 ldrexd and strexd instructions are not defined for
M-class architectures.
Added:
llvm/trunk/test/MC/ARM/thumb2-ldrexd-strexd.s
Modified:
llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td
Modified: llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td?rev=218603&r1=218602&r2=218603&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrThumb2.td Mon Sep 29 05:57:29 2014
@@ -3309,7 +3309,8 @@ def t2LDREXD : T2I_ldrex<0b0111, (outs r
(ins addr_offset_none:$addr),
AddrModeNone, 4, NoItinerary,
"ldrexd", "\t$Rt, $Rt2, $addr", "",
- [], {?, ?, ?, ?}> {
+ [], {?, ?, ?, ?}>,
+ Requires<[IsThumb2, IsNotMClass]> {
bits<4> Rt2;
let Inst{11-8} = Rt2;
}
@@ -3385,7 +3386,8 @@ def t2STREXD : T2I_strex<0b0111, (outs r
(ins rGPR:$Rt, rGPR:$Rt2, addr_offset_none:$addr),
AddrModeNone, 4, NoItinerary,
"strexd", "\t$Rd, $Rt, $Rt2, $addr", "", [],
- {?, ?, ?, ?}> {
+ {?, ?, ?, ?}>,
+ Requires<[IsThumb2, IsNotMClass]> {
bits<4> Rt2;
let Inst{11-8} = Rt2;
}
Added: llvm/trunk/test/MC/ARM/thumb2-ldrexd-strexd.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/thumb2-ldrexd-strexd.s?rev=218603&view=auto
==============================================================================
--- llvm/trunk/test/MC/ARM/thumb2-ldrexd-strexd.s (added)
+++ llvm/trunk/test/MC/ARM/thumb2-ldrexd-strexd.s Mon Sep 29 05:57:29 2014
@@ -0,0 +1,14 @@
+@ RUN: llvm-mc -triple=thumbv6t2--none-eabi -show-encoding < %s | FileCheck %s
+@ RUN: llvm-mc -triple=thumbv7a--none-eabi -show-encoding < %s | FileCheck %s
+@ RUN: llvm-mc -triple=thumbv7r--none-eabi -show-encoding < %s | FileCheck %s
+@ RUN: llvm-mc -triple=thumbv8a--none-eabi -show-encoding < %s | FileCheck %s
+@ RUN: not llvm-mc -triple=thumbv7m--none-eabi -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=UNDEF
+
+ ldrexd r0, r1, [r2]
+ strexd r3, r4, r5, [r6]
+
+@ CHECK: ldrexd r0, r1, [r2] @ encoding: [0xd2,0xe8,0x7f,0x01]
+@ CHECK: strexd r3, r4, r5, [r6] @ encoding: [0xc6,0xe8,0x73,0x45]
+
+@ UNDEF: error: instruction requires: !armv*m
+@ UNDEF: error: instruction requires: !armv*m
More information about the llvm-commits
mailing list