From 02b985c50faa7b0f43ef4100761c633ed4b8d6d2 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Fri, 19 Jan 2007 09:20:23 +0000 Subject: ARM test cases contributed by Apple. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33354 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/ARM/vfp.ll | 143 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 test/CodeGen/ARM/vfp.ll (limited to 'test/CodeGen/ARM/vfp.ll') diff --git a/test/CodeGen/ARM/vfp.ll b/test/CodeGen/ARM/vfp.ll new file mode 100644 index 0000000..f58b55e --- /dev/null +++ b/test/CodeGen/ARM/vfp.ll @@ -0,0 +1,143 @@ +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fabs | wc -l | grep 2 && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmscs | wc -l | grep 1 && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fcvt | wc -l | grep 2 && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fuito | wc -l | grep 2 && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fto.i | wc -l | grep 4 && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep bmi | wc -l | grep 1 && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep bgt | wc -l | grep 1 && +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fcmpezs | wc -l | grep 1 + +void %test(float *%P, double* %D) { + %A = load float* %P + %B = load double* %D + store float %A, float* %P + store double %B, double* %D + ret void +} + +declare float %fabsf(float) +declare double %fabs(double) + +void %test_abs(float *%P, double* %D) { + %a = load float* %P + %b = call float %fabsf(float %a) + store float %b, float* %P + + %A = load double* %D + %B = call double %fabs(double %A) + store double %B, double* %D + ret void +} + +void %test_add(float *%P, double* %D) { + %a = load float* %P + %b = add float %a, %a + store float %b, float* %P + + %A = load double* %D + %B = add double %A, %A + store double %B, double* %D + ret void +} + +void %test_ext_round(float *%P, double* %D) { + %a = load float* %P + %b = cast float %a to double + + %A = load double* %D + %B = cast double %A to float + + store double %b, double* %D + store float %B, float* %P + ret void +} + +void %test_fma(float *%P1, float* %P2, float *%P3) { + %a1 = load float* %P1 + %a2 = load float* %P2 + %a3 = load float* %P3 + + %X = mul float %a1, %a2 + %Y = sub float %X, %a3 + + store float %Y, float* %P1 + ret void +} + +int %test_ftoi(float *%P1) { + %a1 = load float* %P1 + %b1 = cast float %a1 to int + ret int %b1 +} + +uint %test_ftou(float *%P1) { + %a1 = load float* %P1 + %b1 = cast float %a1 to uint + ret uint %b1 +} + +int %test_dtoi(double *%P1) { + %a1 = load double* %P1 + %b1 = cast double %a1 to int + ret int %b1 +} + +uint %test_dtou(double *%P1) { + %a1 = load double* %P1 + %b1 = cast double %a1 to uint + ret uint %b1 +} + +void %test_utod(double *%P1, uint %X) { + %b1 = cast uint %X to double + store double %b1, double* %P1 + ret void +} + +void %test_utod2(double *%P1, ubyte %X) { + %b1 = cast ubyte %X to double + store double %b1, double* %P1 + ret void +} + +void %test_cmp(float* %glob, int %X) { +entry: + %tmp = load float* %glob ; [#uses=2] + %tmp3 = getelementptr float* %glob, int 2 ; [#uses=1] + %tmp4 = load float* %tmp3 ; [#uses=2] + %tmp = seteq float %tmp, %tmp4 ; [#uses=1] + %tmp5 = tail call bool %llvm.isunordered.f32( float %tmp, float %tmp4 ) ; [#uses=1] + %tmp6 = or bool %tmp, %tmp5 ; [#uses=1] + br bool %tmp6, label %cond_true, label %cond_false + +cond_true: ; preds = %entry + %tmp = tail call int (...)* %bar( ) ; [#uses=0] + ret void + +cond_false: ; preds = %entry + %tmp7 = tail call int (...)* %baz( ) ; [#uses=0] + ret void +} + +declare bool %llvm.isunordered.f32(float, float) + +declare int %bar(...) + +declare int %baz(...) + +void %test_cmpfp0(float* %glob, int %X) { +entry: + %tmp = load float* %glob ; [#uses=1] + %tmp = setgt float %tmp, 0.000000e+00 ; [#uses=1] + br bool %tmp, label %cond_true, label %cond_false + +cond_true: ; preds = %entry + %tmp = tail call int (...)* %bar( ) ; [#uses=0] + ret void + +cond_false: ; preds = %entry + %tmp1 = tail call int (...)* %baz( ) ; [#uses=0] + ret void +} + -- cgit v1.1