aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/CodeGen/ARM/2006-11-10-CycleInDAG.ll20
-rw-r--r--test/CodeGen/ARM/branch.ll4
-rw-r--r--test/CodeGen/ARM/bx_fold.ll25
-rw-r--r--test/CodeGen/ARM/call.ll19
-rw-r--r--test/CodeGen/ARM/clz.ll9
-rw-r--r--test/CodeGen/ARM/compare-call.ll20
-rw-r--r--test/CodeGen/ARM/constants.ll21
-rw-r--r--test/CodeGen/ARM/ctors_dtors.ll8
-rw-r--r--test/CodeGen/ARM/fcopysign.ll32
-rw-r--r--test/CodeGen/ARM/fp.ll59
-rw-r--r--test/CodeGen/ARM/fparith.ll18
-rw-r--r--test/CodeGen/ARM/fpcmp.ll17
-rw-r--r--test/CodeGen/ARM/fpcmp_ueq.ll2
-rw-r--r--test/CodeGen/ARM/fpconv.ll22
-rw-r--r--test/CodeGen/ARM/fpmem.ll4
-rw-r--r--test/CodeGen/ARM/hello.ll9
-rw-r--r--test/CodeGen/ARM/imm.ll18
-rw-r--r--test/CodeGen/ARM/inlineasm.ll15
-rw-r--r--test/CodeGen/ARM/insn-sched1.ll11
-rw-r--r--test/CodeGen/ARM/large-stack.ll12
-rw-r--r--test/CodeGen/ARM/ldm.ll32
-rw-r--r--test/CodeGen/ARM/ldr.ll2
-rw-r--r--test/CodeGen/ARM/ldr_ext.ll29
-rw-r--r--test/CodeGen/ARM/ldr_post.ll11
-rw-r--r--test/CodeGen/ARM/ldr_pre.ll18
-rw-r--r--test/CodeGen/ARM/load-global.ll10
-rw-r--r--test/CodeGen/ARM/long.ll13
-rw-r--r--test/CodeGen/ARM/long_shift.ll10
-rw-r--r--test/CodeGen/ARM/mul.ll7
-rw-r--r--test/CodeGen/ARM/mulhi.ll23
-rw-r--r--test/CodeGen/ARM/mvn.ll38
-rw-r--r--test/CodeGen/ARM/pack.ll77
-rw-r--r--test/CodeGen/ARM/ret0.ll4
-rw-r--r--test/CodeGen/ARM/rev.ll30
-rw-r--r--test/CodeGen/ARM/section.ll6
-rw-r--r--test/CodeGen/ARM/select.ll76
-rw-r--r--test/CodeGen/ARM/shifter_operand.ll15
-rw-r--r--test/CodeGen/ARM/smul.ll32
-rw-r--r--test/CodeGen/ARM/str_post.ll20
-rw-r--r--test/CodeGen/ARM/str_pre.ll18
-rw-r--r--test/CodeGen/ARM/str_trunc.ll15
-rw-r--r--test/CodeGen/ARM/sxt_rot.ll22
-rw-r--r--test/CodeGen/ARM/thumb-imm.ll11
-rw-r--r--test/CodeGen/ARM/uxt_rot.ll26
-rw-r--r--test/CodeGen/ARM/uxtb.ll75
-rw-r--r--test/CodeGen/ARM/vargs2.ll54
-rw-r--r--test/CodeGen/ARM/vfp.ll143
47 files changed, 953 insertions, 209 deletions
diff --git a/test/CodeGen/ARM/2006-11-10-CycleInDAG.ll b/test/CodeGen/ARM/2006-11-10-CycleInDAG.ll
new file mode 100644
index 0000000000..49ebead110
--- /dev/null
+++ b/test/CodeGen/ARM/2006-11-10-CycleInDAG.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+v6
+
+ %struct.layer_data = type { int, [2048 x ubyte], ubyte*, [16 x ubyte], uint, ubyte*, int, int, [64 x int], [64 x int], [64 x int], [64 x int], int, int, int, int, int, int, int, int, int, int, int, int, [12 x [64 x short]] }
+%ld = external global %struct.layer_data*
+
+void %main() {
+entry:
+ br bool false, label %bb169.i, label %cond_true11
+
+bb169.i:
+ ret void
+
+cond_true11:
+ %tmp.i32 = load %struct.layer_data** %ld
+ %tmp3.i35 = getelementptr %struct.layer_data* %tmp.i32, int 0, uint 1, int 2048
+ %tmp.i36 = getelementptr %struct.layer_data* %tmp.i32, int 0, uint 2
+ store ubyte* %tmp3.i35, ubyte** %tmp.i36
+ store ubyte* %tmp3.i35, ubyte** null
+ ret void
+}
diff --git a/test/CodeGen/ARM/branch.ll b/test/CodeGen/ARM/branch.ll
index 54929ad5df..12dd4a9f1e 100644
--- a/test/CodeGen/ARM/branch.ll
+++ b/test/CodeGen/ARM/branch.ll
@@ -1,8 +1,8 @@
; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep bne &&
; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep bge &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep bcs &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep bcc
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep bhs &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep blo
void %f1(int %a, int %b, int* %v) {
entry:
diff --git a/test/CodeGen/ARM/bx_fold.ll b/test/CodeGen/ARM/bx_fold.ll
new file mode 100644
index 0000000000..c088903d37
--- /dev/null
+++ b/test/CodeGen/ARM/bx_fold.ll
@@ -0,0 +1,25 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | not grep bx
+
+void %test(int %Ptr, ubyte* %L) {
+entry:
+ br label %bb1
+
+bb:
+ %tmp7 = getelementptr ubyte* %L, uint %indvar
+ store ubyte 0, ubyte* %tmp7
+ %indvar.next = add uint %indvar, 1
+ br label %bb1
+
+bb1:
+ %indvar = phi uint [ 0, %entry ], [ %indvar.next, %bb ]
+ %i.0 = cast uint %indvar to int
+ %Ptr_addr.0 = sub int %Ptr, %i.0
+ %tmp12 = seteq int %i.0, %Ptr
+ %tmp12.not = xor bool %tmp12, true
+ %bothcond = and bool %tmp12.not, false
+ br bool %bothcond, label %bb, label %bb18
+
+bb18:
+ ret void
+}
diff --git a/test/CodeGen/ARM/call.ll b/test/CodeGen/ARM/call.ll
index a4b6b807d6..d75814039f 100644
--- a/test/CodeGen/ARM/call.ll
+++ b/test/CodeGen/ARM/call.ll
@@ -1,20 +1,17 @@
; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep bl &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep blx
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep 'mov lr, pc' &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+v5t | grep 'blx'
+
+%t = weak global int ()* null
+declare void %g(int, int, int, int)
void %f() {
-entry:
call void %g( int 1, int 2, int 3, int 4 )
- call fastcc void %h()
ret void
}
-declare void %g(int, int, int, int)
-declare fastcc void %h()
-
-void %g(void (...)* %g) {
-entry:
- %g_c = cast void (...)* %g to void ()*
- call void %g_c( )
+void %g() {
+ %tmp = load int ()** %t
+ %tmp = tail call int %tmp( )
ret void
}
diff --git a/test/CodeGen/ARM/clz.ll b/test/CodeGen/ARM/clz.ll
new file mode 100644
index 0000000000..80b7cd8fee
--- /dev/null
+++ b/test/CodeGen/ARM/clz.ll
@@ -0,0 +1,9 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+v5t | grep "clz"
+
+declare uint %llvm.ctlz.i32(uint)
+
+uint %test(uint %x) {
+ %tmp.1 = call uint %llvm.ctlz.i32( uint %x )
+ ret uint %tmp.1
+}
diff --git a/test/CodeGen/ARM/compare-call.ll b/test/CodeGen/ARM/compare-call.ll
new file mode 100644
index 0000000000..0c57e0e1c2
--- /dev/null
+++ b/test/CodeGen/ARM/compare-call.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+v6,+vfp2 | grep fcmpes
+
+void %test3(float* %glob, int %X) {
+entry:
+ %tmp = load float* %glob ; <float> [#uses=1]
+ %tmp2 = getelementptr float* %glob, int 2 ; <float*> [#uses=1]
+ %tmp3 = load float* %tmp2 ; <float> [#uses=1]
+ %tmp = setgt float %tmp, %tmp3 ; <bool> [#uses=1]
+ br bool %tmp, label %cond_true, label %UnifiedReturnBlock
+
+cond_true: ; preds = %entry
+ %tmp = tail call int (...)* %bar( ) ; <int> [#uses=0]
+ ret void
+
+UnifiedReturnBlock: ; preds = %entry
+ ret void
+}
+
+declare int %bar(...)
diff --git a/test/CodeGen/ARM/constants.ll b/test/CodeGen/ARM/constants.ll
index c499a08209..c8d35188c6 100644
--- a/test/CodeGen/ARM/constants.ll
+++ b/test/CodeGen/ARM/constants.ll
@@ -1,15 +1,11 @@
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -o %t.s -f &&
-; RUN: grep "mov r0, #0" %t.s | wc -l | grep 1 &&
-; RUN: grep "mov r0, #255" %t.s | wc -l | grep 1 &&
-; RUN: grep "mov r0, #256" %t.s | wc -l | grep 1 &&
-; RUN: grep "mov r0, #1" %t.s | wc -l | grep 2 &&
-; RUN: grep "orr r0, r0, #256" %t.s | wc -l | grep 1 &&
-; RUN: grep "mov r0, #-1073741761" %t.s | wc -l | grep 1 &&
-; RUN: grep "mov r0, #1008" %t.s | wc -l | grep 1 &&
-; RUN: grep "cmp r0, #65536" %t.s | wc -l | grep 1 &&
-; RUN: grep "\.comm.*a,4,4" %t.s | wc -l | grep 1
-
-%a = internal global int 0
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, #0" | wc -l | grep 1 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, #255$" | wc -l | grep 1 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0.*256" | wc -l | grep 1 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "orr.*256" | wc -l | grep 1 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, .*-1073741761" | wc -l | grep 1 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, .*1008" | wc -l | grep 1 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "cmp r0, #1, 16" | wc -l | grep 1
uint %f1() {
ret uint 0
@@ -36,7 +32,6 @@ uint %f6() {
}
void %f7(uint %a) {
-entry:
%b = setgt uint %a, 65536
br bool %b, label %r, label %r
diff --git a/test/CodeGen/ARM/ctors_dtors.ll b/test/CodeGen/ARM/ctors_dtors.ll
index af15578c39..b4cdf27b3c 100644
--- a/test/CodeGen/ARM/ctors_dtors.ll
+++ b/test/CodeGen/ARM/ctors_dtors.ll
@@ -1,6 +1,8 @@
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -o %t.s -f &&
-; RUN: grep '\.section \.ctors,"aw",.progbits' %t.s | grep % &&
-; RUN: grep '\.section \.dtors,"aw",.progbits' %t.s | grep %
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -mtriple=arm-apple-darwin | grep '\.mod_init_func' &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -mtriple=arm-apple-darwin | grep '\.mod_term_func' &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -mtriple=arm-linux | grep '\.section \.ctors,"aw",.progbits' &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -mtriple=arm-linux | grep '\.section \.dtors,"aw",.progbits'
%llvm.global_ctors = appending global [1 x { int, void ()* }] [ { int, void ()* } { int 65535, void ()* %__mf_init } ] ; <[1 x { int, void ()* }]*> [#uses=0]
%llvm.global_dtors = appending global [1 x { int, void ()* }] [ { int, void ()* } { int 65535, void ()* %__mf_fini } ] ; <[1 x { int, void ()* }]*> [#uses=0]
diff --git a/test/CodeGen/ARM/fcopysign.ll b/test/CodeGen/ARM/fcopysign.ll
index 66b639e996..12ea32cc4e 100644
--- a/test/CodeGen/ARM/fcopysign.ll
+++ b/test/CodeGen/ARM/fcopysign.ll
@@ -1,21 +1,19 @@
-; RUN: llvm-as < %s | llc -march=arm
+; RUN: llvm-as < fcopysign.ll | llc -march=arm &&
+; RUN: llvm-as < fcopysign.ll | llc -march=arm | grep bic | wc -l | grep 2 &&
+; RUN: llvm-as < fcopysign.ll | llc -march=arm -mattr=+v6,+vfp2 &&
+; RUN: llvm-as < fcopysign.ll | llc -march=arm -mattr=+v6,+vfp2 | grep fneg | wc -l | grep 2
-define csretcc void %__divsc3({ float, float }* %agg.result, float %a, float %b, float %c, float %d) {
-entry:
- br i1 false, label %bb, label %cond_next375
-
-bb: ; preds = %entry
- %tmp81 = tail call float %copysignf( float 0x7FF0000000000000, float %c ) ; <float> [#uses=1]
- %tmp87 = mul float %tmp81, %b ; <float> [#uses=1]
- br label %cond_next375
-
-cond_next375: ; preds = %bb, %entry
- %y.1 = phi float [ %tmp87, %bb ], [ 0.000000e+00, %entry ] ; <float> [#uses=0]
- ret void
+define float %test1(float %x, double %y) {
+ %tmp = fpext float %x to double
+ %tmp2 = tail call double %copysign( double %tmp, double %y )
+ %tmp2 = fptrunc double %tmp2 to float
+ ret float %tmp2
}
-declare float %fabsf(float)
-
-declare i1 %llvm.isunordered.f32(float, float)
+define double %test2(double %x, float %y) {
+ %tmp = fpext float %y to double
+ %tmp2 = tail call double %copysign( double %x, double %tmp )
+ ret double %tmp2
+}
-declare float %copysignf(float, float)
+declare double %copysign(double, double)
diff --git a/test/CodeGen/ARM/fp.ll b/test/CodeGen/ARM/fp.ll
index ef6fde6a1c..15be71637b 100644
--- a/test/CodeGen/ARM/fp.ll
+++ b/test/CodeGen/ARM/fp.ll
@@ -1,27 +1,48 @@
; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fmsr &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fmrs &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fmrrd &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fmdrr &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fldd &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep flds &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fstd &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fsts &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, #1065353216"
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmsr | wc -l | grep 4 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fsitos &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmrs &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fsitod &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmrrd | wc -l | grep 5 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmdrr | wc -l | grep 2 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fldd &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep flds &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fuitod &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fuitos &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep 1065353216
+
+float %f(int %a) {
+entry:
+ %tmp = cast int %a to float ; <float> [#uses=1]
+ ret float %tmp
+}
+double %g(int %a) {
+entry:
+ %tmp = cast int %a to double ; <double> [#uses=1]
+ ret double %tmp
+}
-double %h(double* %v) {
+double %uint_to_double(uint %a) {
entry:
- %tmp = load double* %v ; <double> [#uses=1]
+ %tmp = cast uint %a to double
ret double %tmp
}
-float %h(float* %v) {
+float %uint_to_float(uint %a) {
entry:
- %tmp = load float* %v ; <double> [#uses=1]
+ %tmp = cast uint %a to float
ret float %tmp
}
+
+double %h(double* %v) {
+entry:
+ %tmp = load double* %v ; <double> [#uses=1]
+ ret double %tmp
+}
+
float %h() {
entry:
ret float 1.000000e+00
@@ -40,15 +61,3 @@ entry:
declare void %f4(double)
declare double %f5()
-
-void %f6(float %a, float* %b) {
-entry:
- store float %a, float* %b
- ret void
-}
-
-void %f7(double %a, double* %b) {
-entry:
- store double %a, double* %b
- ret void
-}
diff --git a/test/CodeGen/ARM/fparith.ll b/test/CodeGen/ARM/fparith.ll
index 0328cb35ba..1ccf6a5ffc 100644
--- a/test/CodeGen/ARM/fparith.ll
+++ b/test/CodeGen/ARM/fparith.ll
@@ -1,12 +1,14 @@
; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fadds &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep faddd &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fmuls &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fmuld &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fnegs &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fnegd &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fdivs &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fdivd
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fadds &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep faddd &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmuls &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmuld &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fnegs &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fnegd &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fdivs &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fdivd
+
float %f1(float %a, float %b) {
entry:
diff --git a/test/CodeGen/ARM/fpcmp.ll b/test/CodeGen/ARM/fpcmp.ll
index 402dc7a1ac..0ec7f168b4 100644
--- a/test/CodeGen/ARM/fpcmp.ll
+++ b/test/CodeGen/ARM/fpcmp.ll
@@ -1,12 +1,11 @@
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep movmi &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep moveq &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep movgt &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep movge &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep movls &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep movne &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fcmps &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fcmpd
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep movmi &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep moveq &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep movgt &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep movge &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep movne &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fcmped | wc -l | grep 1
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fcmpes | wc -l | grep 6
int %f1(float %a) {
entry:
diff --git a/test/CodeGen/ARM/fpcmp_ueq.ll b/test/CodeGen/ARM/fpcmp_ueq.ll
index 0c2d4658a7..186c9f31fb 100644
--- a/test/CodeGen/ARM/fpcmp_ueq.ll
+++ b/test/CodeGen/ARM/fpcmp_ueq.ll
@@ -1,6 +1,6 @@
; RUN: llvm-as < %s | llc -march=arm &&
; RUN: llvm-as < %s | llc -march=arm | grep moveq &&
-; RUN: llvm-as < %s | llc -march=arm | grep movvs
+; RUN: llvm-as < %s | llc -march=arm -mattr=+vfp2 | grep movvs
define i32 %f7(float %a, float %b) {
entry:
diff --git a/test/CodeGen/ARM/fpconv.ll b/test/CodeGen/ARM/fpconv.ll
index 4ac542f0fd..ba3976f354 100644
--- a/test/CodeGen/ARM/fpconv.ll
+++ b/test/CodeGen/ARM/fpconv.ll
@@ -1,14 +1,14 @@
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fcvtsd &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fcvtds &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep ftosis &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep ftouis &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep ftosid &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep ftouid &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fsitos &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fsitod &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fuitos &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep fuitod
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fcvtsd &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fcvtds &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep ftosizs &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep ftouizs &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep ftosizd &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep ftouizd &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fsitos &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fsitod &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fuitos &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fuitod
float %f1(double %x) {
entry:
diff --git a/test/CodeGen/ARM/fpmem.ll b/test/CodeGen/ARM/fpmem.ll
index 4f942e8365..151fc99f78 100644
--- a/test/CodeGen/ARM/fpmem.ll
+++ b/test/CodeGen/ARM/fpmem.ll
@@ -1,7 +1,7 @@
; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "mov r0, #0" | wc -l | grep 1 &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "flds.*\[" | wc -l | grep 1 &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "fsts.*\[" | wc -l | grep 1
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep "flds.*\[" | wc -l | grep 1 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep "fsts.*\[" | wc -l | grep 1
float %f1(float %a) {
entry:
diff --git a/test/CodeGen/ARM/hello.ll b/test/CodeGen/ARM/hello.ll
index af5fafacc3..abf6b4c040 100644
--- a/test/CodeGen/ARM/hello.ll
+++ b/test/CodeGen/ARM/hello.ll
@@ -1,12 +1,11 @@
; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
-; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep mov | wc -l | grep 1
-%str = internal constant [12 x sbyte] c"Hello World\00" ; <[12 x sbyte]*> [#uses=1]
+; RUN: llvm-upgrade < %s | llvm-as | llc -mtriple=arm-linux | grep mov | wc -l | grep 1 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -mtriple=arm-apple-darwin | grep mov | wc -l | grep 2
-implementation ; Functions:
+%str = internal constant [12 x sbyte] c"Hello World\00"
int %main() {
-entry:
- %tmp = call int %puts( sbyte* getelementptr ([12 x sbyte]* %str, int 0, uint 0) ) ; <int> [#uses=0]
+ %tmp = call int %puts( sbyte* getelementptr ([12 x sbyte]* %str, int 0, uint 0) )
ret int 0
}
diff --git a/test/CodeGen/ARM/imm.ll b/test/CodeGen/ARM/imm.ll
new file mode 100644
index 0000000000..0a645d3cac
--- /dev/null
+++ b/test/CodeGen/ARM/imm.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | not grep CPI
+
+int %test1(int %A) {
+ %B = add int %A, -268435441 ; 0xF000000F
+ ret int %B
+}
+
+int %test2() {
+ ret int 65533
+}
+
+int %test3(int %A) {
+ %B = or int %A, 65533
+ ret int %B
+}
+
+
diff --git a/test/CodeGen/ARM/inlineasm.ll b/test/CodeGen/ARM/inlineasm.ll
new file mode 100644
index 0000000000..a75c7469c0
--- /dev/null
+++ b/test/CodeGen/ARM/inlineasm.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+v6
+
+uint %test1(uint %tmp54) {
+ %tmp56 = tail call uint asm "uxtb16 $0,$1", "=r,r"( uint %tmp54 )
+ ret uint %tmp56
+}
+
+void %test2() {
+ %tmp1 = call long asm "ldmia $1!, {$0, ${0:H}}", "=r,==r,1"( int** null, int* null )
+ %tmp1 = cast long %tmp1 to ulong
+ %tmp2 = shr ulong %tmp1, ubyte 32
+ %tmp3 = cast ulong %tmp2 to int
+ %tmp4 = call int asm "pkhbt $0, $1, $2, lsl #16", "=r,r,r"( int 0, int %tmp3 )
+ ret void
+}
diff --git a/test/CodeGen/ARM/insn-sched1.ll b/test/CodeGen/ARM/insn-sched1.ll
new file mode 100644
index 0000000000..1e4135b308
--- /dev/null
+++ b/test/CodeGen/ARM/insn-sched1.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+v6 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+v6 | grep mov | wc -l | grep 2
+
+int %test(int %x) {
+ %tmp = cast int %x to short
+ %tmp2 = tail call int %f( int 1, short %tmp )
+ ret int %tmp2
+}
+
+declare int %f(int, short)
diff --git a/test/CodeGen/ARM/large-stack.ll b/test/CodeGen/ARM/large-stack.ll
new file mode 100644
index 0000000000..2516522d04
--- /dev/null
+++ b/test/CodeGen/ARM/large-stack.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc -march=arm &&
+; RUN: llvm-as < %s | llc -march=arm -enable-thumb
+
+define void %test1() {
+ %tmp = alloca [ 64 x i32 ] , align 4
+ ret void
+}
+
+define void %test2() {
+ %tmp = alloca [ 4168 x i8 ] , align 4
+ ret void
+}
diff --git a/test/CodeGen/ARM/ldm.ll b/test/CodeGen/ARM/ldm.ll
new file mode 100644
index 0000000000..5695eeeda6
--- /dev/null
+++ b/test/CodeGen/ARM/ldm.ll
@@ -0,0 +1,32 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "ldmia" | wc -l | grep 2 &&
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep "ldmib" | wc -l | grep 1 &&
+; RU