diff options
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r-- | llvm/test/CodeGen/ARM/bad-constraint.ll | 6 | ||||
-rw-r--r-- | llvm/test/CodeGen/ARM/div.ll | 54 | ||||
-rw-r--r-- | llvm/test/CodeGen/ARM/inlineasm-vec-to-double.ll | 14 |
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 +} + |