aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/bad-constraint.ll6
-rw-r--r--llvm/test/CodeGen/ARM/div.ll54
-rw-r--r--llvm/test/CodeGen/ARM/inlineasm-vec-to-double.ll14
3 files changed, 74 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/bad-constraint.ll b/llvm/test/CodeGen/ARM/bad-constraint.ll
index 9b8fcd5..7d80f0c 100644
--- a/llvm/test/CodeGen/ARM/bad-constraint.ll
+++ b/llvm/test/CodeGen/ARM/bad-constraint.ll
@@ -1,6 +1,7 @@
; RUN: not llc -filetype=obj %s -o /dev/null 2>&1 | FileCheck %s
; CHECK: error: couldn't allocate input reg for constraint '{d2}'
; CHECK-NEXT: error: couldn't allocate input reg for constraint '{s2}'
+; CHECK-NEXT: error: couldn't allocate input reg for constraint '{d3}'
target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
target triple = "armv8a-unknown-linux-gnueabihf"
@@ -23,3 +24,8 @@ entry:
ret void
}
+define void @_Z1dv() local_unnamed_addr {
+entry:
+ tail call void asm sideeffect "", "{d3}"(<16 x i8> splat (i8 -1))
+ ret void
+}
diff --git a/llvm/test/CodeGen/ARM/div.ll b/llvm/test/CodeGen/ARM/div.ll
index 935aeaa..97cd9fd 100644
--- a/llvm/test/CodeGen/ARM/div.ll
+++ b/llvm/test/CodeGen/ARM/div.ll
@@ -145,3 +145,57 @@ define i64 @f8(i64 %a) {
%tmp1 = udiv i64 %a, 3
ret i64 %tmp1
}
+
+define i8 @sdiv_i8(i8 %a, i8 %b) {
+entry:
+; CHECK-LABEL: sdiv_i8
+; CHECK-SWDIV: __divsi3
+
+; CHECK-THUMB: .thumb_func
+; CHECK-HWDIV: sdiv
+
+; CHECK-EABI: __aeabi_idiv
+ %tmp1 = sdiv i8 %a, %b ; <i8> [#uses=1]
+ ret i8 %tmp1
+}
+
+
+define i16 @sdiv_i16(i16 %a, i16 %b) {
+entry:
+; CHECK-LABEL: sdiv_i16
+; CHECK-SWDIV: __divsi3
+
+; CHECK-THUMB: .thumb_func
+; CHECK-HWDIV: sdiv
+
+; CHECK-EABI: __aeabi_idiv
+ %tmp1 = sdiv i16 %a, %b ; <i16> [#uses=1]
+ ret i16 %tmp1
+}
+
+define i8 @udiv_i8(i8 %a, i8 %b) {
+entry:
+; CHECK-LABEL: udiv_i8
+; CHECK-SWDIV: __udivsi3
+
+; CHECK-THUMB: .thumb_func
+; CHECK-HWDIV: udiv
+
+; CHECK-EABI: __aeabi_uidiv
+ %tmp1 = udiv i8 %a, %b ; <i8> [#uses=1]
+ ret i8 %tmp1
+}
+
+
+define i16 @udiv_i16(i16 %a, i16 %b) {
+entry:
+; CHECK-LABEL: udiv_i16
+; CHECK-SWDIV: __udivsi3
+
+; CHECK-THUMB: .thumb_func
+; CHECK-HWDIV: udiv
+
+; CHECK-EABI: __aeabi_uidiv
+ %tmp1 = udiv i16 %a, %b ; <i16> [#uses=1]
+ ret i16 %tmp1
+}
diff --git a/llvm/test/CodeGen/ARM/inlineasm-vec-to-double.ll b/llvm/test/CodeGen/ARM/inlineasm-vec-to-double.ll
new file mode 100644
index 0000000..0c01bb9
--- /dev/null
+++ b/llvm/test/CodeGen/ARM/inlineasm-vec-to-double.ll
@@ -0,0 +1,14 @@
+; RUN: llc %s -filetype=asm -o - | FileCheck %s
+
+; CHECK: vmov.i8 d3, #0xff
+
+target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
+target triple = "armv8a-unknown-linux-gnueabihf"
+
+; Function Attrs: mustprogress noimplicitfloat nounwind
+define void @cvt_vec() local_unnamed_addr {
+entry:
+ tail call void asm sideeffect "", "{d3}"(<8 x i8> splat (i8 -1))
+ ret void
+}
+