neon.isa (9517:5ffb5e5c93b4) neon.isa (9557:8666e81607a6)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

--- 2806 unchanged lines hidden (view full) ---

2815 FpscrExc = fpscr;
2816 '''
2817 twoRegShiftInst("vcvt", "NVcvts2fpD", "SimdCvtOp", ("float",),
2818 2, vcvts2fpCode, fromInt = True)
2819 twoRegShiftInst("vcvt", "NVcvts2fpQ", "SimdCvtOp", ("float",),
2820 4, vcvts2fpCode, fromInt = True)
2821
2822 vcvts2hCode = '''
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

--- 2806 unchanged lines hidden (view full) ---

2815 FpscrExc = fpscr;
2816 '''
2817 twoRegShiftInst("vcvt", "NVcvts2fpD", "SimdCvtOp", ("float",),
2818 2, vcvts2fpCode, fromInt = True)
2819 twoRegShiftInst("vcvt", "NVcvts2fpQ", "SimdCvtOp", ("float",),
2820 4, vcvts2fpCode, fromInt = True)
2821
2822 vcvts2hCode = '''
2823 destElem = 0;
2823 FPSCR fpscr = (FPSCR) FpscrExc;
2824 float srcFp1 = bitsToFp(srcElem1, (float)0.0);
2825 if (flushToZero(srcFp1))
2826 fpscr.idc = 1;
2827 VfpSavedState state = prepFpState(VfpRoundNearest);
2828 __asm__ __volatile__("" : "=m" (srcFp1), "=m" (destElem)
2829 : "m" (srcFp1), "m" (destElem));
2830 destElem = vcvtFpSFpH(fpscr, true, true, VfpRoundNearest,
2831 fpscr.ahp, srcFp1);
2832 __asm__ __volatile__("" :: "m" (destElem));
2833 finishVfp(fpscr, state, true);
2834 FpscrExc = fpscr;
2835 '''
2836 twoRegNarrowMiscInst("vcvt", "NVcvts2h", "SimdCvtOp", ("uint16_t",), vcvts2hCode)
2837
2838 vcvth2sCode = '''
2824 FPSCR fpscr = (FPSCR) FpscrExc;
2825 float srcFp1 = bitsToFp(srcElem1, (float)0.0);
2826 if (flushToZero(srcFp1))
2827 fpscr.idc = 1;
2828 VfpSavedState state = prepFpState(VfpRoundNearest);
2829 __asm__ __volatile__("" : "=m" (srcFp1), "=m" (destElem)
2830 : "m" (srcFp1), "m" (destElem));
2831 destElem = vcvtFpSFpH(fpscr, true, true, VfpRoundNearest,
2832 fpscr.ahp, srcFp1);
2833 __asm__ __volatile__("" :: "m" (destElem));
2834 finishVfp(fpscr, state, true);
2835 FpscrExc = fpscr;
2836 '''
2837 twoRegNarrowMiscInst("vcvt", "NVcvts2h", "SimdCvtOp", ("uint16_t",), vcvts2hCode)
2838
2839 vcvth2sCode = '''
2840 destElem = 0;
2839 FPSCR fpscr = (FPSCR) FpscrExc;
2840 VfpSavedState state = prepFpState(VfpRoundNearest);
2841 __asm__ __volatile__("" : "=m" (srcElem1), "=m" (destElem)
2842 : "m" (srcElem1), "m" (destElem));
2843 destElem = fpToBits(vcvtFpHFpS(fpscr, true, fpscr.ahp, srcElem1));
2844 __asm__ __volatile__("" :: "m" (destElem));
2845 finishVfp(fpscr, state, true);
2846 FpscrExc = fpscr;

--- 527 unchanged lines hidden ---
2841 FPSCR fpscr = (FPSCR) FpscrExc;
2842 VfpSavedState state = prepFpState(VfpRoundNearest);
2843 __asm__ __volatile__("" : "=m" (srcElem1), "=m" (destElem)
2844 : "m" (srcElem1), "m" (destElem));
2845 destElem = fpToBits(vcvtFpHFpS(fpscr, true, fpscr.ahp, srcElem1));
2846 __asm__ __volatile__("" :: "m" (destElem));
2847 finishVfp(fpscr, state, true);
2848 FpscrExc = fpscr;

--- 527 unchanged lines hidden ---