From c1a91dd97b000128189421eda6c5bb7905b1f467 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Wed, 26 Jun 2013 16:52:32 +0000 Subject: ARM: allow predicated barriers in Thumb mode The barrier instructions are only "always-execute" in ARM mode, they can quite happily sit inside an IT block in Thumb. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184964 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/MC/ARM/diagnostics.s | 14 ++++++++++++++ test/MC/ARM/thumb-only-conditionals.s | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 test/MC/ARM/thumb-only-conditionals.s (limited to 'test/MC/ARM') diff --git a/test/MC/ARM/diagnostics.s b/test/MC/ARM/diagnostics.s index 82d6ae3..21fda1c 100644 --- a/test/MC/ARM/diagnostics.s +++ b/test/MC/ARM/diagnostics.s @@ -379,3 +379,17 @@ nop.n @ CHECK-ERRORS: error: instruction with .n (narrow) qualifier not allowed in arm mode + + dmbeq #5 + dsble #15 + isblo #7 +@ CHECK-ERRORS: error: instruction 'dmb' is not predicable, but condition code specified +@ CHECK-ERRORS: error: instruction 'dsb' is not predicable, but condition code specified +@ CHECK-ERRORS: error: instruction 'isb' is not predicable, but condition code specified + + dmblt + dsbne + isbeq +@ CHECK-ERRORS: error: instruction 'dmb' is not predicable, but condition code specified +@ CHECK-ERRORS: error: instruction 'dsb' is not predicable, but condition code specified +@ CHECK-ERRORS: error: instruction 'isb' is not predicable, but condition code specified diff --git a/test/MC/ARM/thumb-only-conditionals.s b/test/MC/ARM/thumb-only-conditionals.s new file mode 100644 index 0000000..55b2cf4 --- /dev/null +++ b/test/MC/ARM/thumb-only-conditionals.s @@ -0,0 +1,19 @@ +@ RUN: llvm-mc -triple=thumbv7-apple-ios -o - %s | FileCheck %s + + itte eq + dmbeq #11 + dsbeq #7 + isbne #15 +@ CHECK: itte eq +@ CHECK-NEXT: dmbeq ish +@ CHECK-NEXT: dsbeq nsh +@ CHECK-NEXT: isbne sy + + itet le + dmble + dsbgt + isble +@ CHECK: itet le +@ CHECK-NEXT: dmble sy +@ CHECK-NEXT: dsbgt sy +@ CHECK-NEXT: isble sy -- cgit v1.1