[LLVMbugs] [Bug 14230] New: ARM AACPS-VFP ABI: possible mismatch with spec

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Oct 31 12:24:03 PDT 2012


http://llvm.org/bugs/show_bug.cgi?id=14230

             Bug #: 14230
           Summary: ARM AACPS-VFP ABI: possible mismatch with spec
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: ARM
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: mren at apple.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Given the following testing case:
double g_d;
void backfill(float f1, double d1, double d2, double d3, double d4, double d5,
double d6, double d7, double d8, float f2) {
  g_d = f1 + f2;
  g_d += d7;
  g_d += d8;
}

C.2.vfp If the argument is a VFP CPRC then any VFP registers that are
unallocated are marked as unavailable.

The last "float f2" should be allocated on stack, but with
clang -cc1 -triple armv7---eabi -target-abi aapcs -mfloat-abi hard -S
backfill.c -o - -O3
    vldr    d16, [sp]
    vadd.f32    s0, s0, s1

"float f2" is in s1.

Another testing case:
double g_d;
void backfill2(float f1, double d1, double d2, double d3, double d4, double d5,
double d6, double d7, double d8, int i) {
  g_d = f1 + i;
  g_d += d7;
  g_d += d8;
}
C.4 If the size in words of the argument is not more than r4 minus NCRN, the
argument is copied into core registers, starting at the NCRN.

The last "int i" should be allocated to core register even though "double d8"
is on stack.

    vldr    s2, [sp, #8]
    vldr    d16, [sp]
    vcvt.f32.s32    s2, s2
    vadd.f32    s0, s2, s0
"int i" is on stack.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list