mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-02 13:21:43 +00:00
[Thumb2] ldrexd and strexd are not defined on v7M
The Thumb2 ldrexd and strexd instructions are not defined for M-class architectures. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218603 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8ac2f142a8
commit
017c6111a8
@ -3309,7 +3309,8 @@ def t2LDREXD : T2I_ldrex<0b0111, (outs rGPR:$Rt, rGPR:$Rt2),
|
||||
(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 rGPR:$Rd),
|
||||
(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;
|
||||
}
|
||||
|
14
test/MC/ARM/thumb2-ldrexd-strexd.s
Normal file
14
test/MC/ARM/thumb2-ldrexd-strexd.s
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user