1799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//===-- call_apsr.h - Helpers for ARM EABI floating point tests -----------===// 2799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// 3799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// The LLVM Compiler Infrastructure 4799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// 5799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// This file is dual licensed under the MIT and the University of Illinois Open 6799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// Source Licenses. See LICENSE.TXT for details. 7799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// 8799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//===----------------------------------------------------------------------===// 9799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// 10799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// This file declares helpers for ARM EABI floating point tests for the 11799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// compiler_rt library. 12799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar// 13799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar//===----------------------------------------------------------------------===// 14799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 15799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#ifndef CALL_APSR_H 16799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#define CALL_APSR_H 17799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 18799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ 19799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#error big endian support not implemented 20799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#endif 21799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 22799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainarunion cpsr { 23799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar struct { 24799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar uint32_t filler: 28; 25799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar uint32_t v: 1; 26799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar uint32_t c: 1; 27799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar uint32_t z: 1; 28799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar uint32_t n: 1; 29799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar } flags; 30799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar uint32_t value; 31799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar}; 32799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 33799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainarextern __attribute__((pcs("aapcs"))) 34799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainaruint32_t call_apsr_f(float a, float b, __attribute__((pcs("aapcs"))) void (*fn)(float, float)); 35799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 36799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainarextern __attribute__((pcs("aapcs"))) 37799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainaruint32_t call_apsr_d(double a, double b, __attribute__((pcs("aapcs"))) void (*fn)(double, double)); 38799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar 39799172d60d32feb1acba1a6867f3a9c39a999e5cPirama Arumuga Nainar#endif // CALL_APSR_H 40