/*
 * VIS optimized software YUV to RGB converter
 * Copyright (c) 2007 Denes Balatoni <dbalatoni@programozo.hu>
 *
 * This file is part of FFmpeg.
 *
 * FFmpeg is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * FFmpeg is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with FFmpeg; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */

#include <inttypes.h>
#include <stdlib.h>

#include "libswscale/swscale.h"
#include "libswscale/swscale_internal.h"

#define YUV2RGB_INIT \
    "wr %%g0, 0x10, %%gsr \n\t" \
    "ldd [%5], %%f32      \n\t" \
    "ldd [%5+8], %%f34    \n\t" \
    "ldd [%5+16], %%f36   \n\t" \
    "ldd [%5+24], %%f38   \n\t" \
    "ldd [%5+32], %%f40   \n\t" \
    "ldd [%5+40], %%f42   \n\t" \
    "ldd [%5+48], %%f44   \n\t" \
    "ldd [%5+56], %%f46   \n\t" \
    "ldd [%5+64], %%f48   \n\t" \
    "ldd [%5+72], %%f50   \n\t"

#define YUV2RGB_KERNEL \
    /* ^^^^ f0=Y f3=u f5=v */ \
    "fmul8x16 %%f3, %%f48, %%f6   \n\t" \
    "fmul8x16 %%f19, %%f48, %%f22 \n\t" \
    "fmul8x16 %%f5, %%f44, %%f8   \n\t" \
    "fmul8x16 %%f21, %%f44, %%f24 \n\t" \
    "fmul8x16 %%f0, %%f42, %%f0   \n\t" \
    "fmul8x16 %%f16, %%f42, %%f16 \n\t" \
    "fmul8x16 %%f3, %%f50, %%f2   \n\t" \
    "fmul8x16 %%f19, %%f50, %%f18 \n\t" \
    "fmul8x16 %%f5, %%f46, %%f4   \n\t" \
    "fmul8x16 %%f21, %%f46, %%f20 \n\t" \
    \
    "fpsub16 %%f6, %%f34, %%f6   \n\t" /* 1 */ \
    "fpsub16 %%f22, %%f34, %%f22 \n\t" /* 1 */ \
    "fpsub16 %%f8, %%f38, %%f8   \n\t" /* 3 */ \
    "fpsub16 %%f24, %%f38, %%f24 \n\t" /* 3 */ \
    "fpsub16 %%f0, %%f32, %%f0   \n\t" /* 0 */ \
    "fpsub16 %%f16, %%f32, %%f16 \n\t" /* 0 */ \
    "fpsub16 %%f2, %%f36, %%f2   \n\t" /* 2 */ \
    "fpsub16 %%f18, %%f36, %%f18 \n\t" /* 2 */ \
    "fpsub16 %%f4, %%f40, %%f4   \n\t" /* 4 */ \
    "fpsub16 %%f20, %%f40, %%f20 \n\t" /* 4 */ \
    \
    "fpadd16 %%f0, %%f8, %%f8    \n\t" /* Gt */ \
    "fpadd16 %%f16, %%f24, %%f24 \n\t" /* Gt */ \
    "fpadd16 %%f0, %%f4, %%f4    \n\t" /* R */ \
    "fpadd16 %%f16, %%f20, %%f20 \n\t" /* R */ \
    "fpadd16 %%f0, %%f6, %%f6    \n\t" /* B */ \
    "fpadd16 %%f16, %%f22, %%f22 \n\t" /* B */ \
    "fpadd16 %%f8, %%f2, %%f2    \n\t" /* G */ \
    "fpadd16 %%f24, %%f18, %%f18 \n\t" /* G */ \
    \
    "fpack16 %%f4, %%f4    \n\t" \
    "fpack16 %%f20, %%f20  \n\t" \
    "fpack16 %%f6, %%f6    \n\t" \
    "fpack16 %%f22, %%f22  \n\t" \
    "fpack16 %%f2, %%f2    \n\t" \
    "fpack16 %%f18, %%f18  \n\t"



// FIXME: must be changed to set alpha to 255 instead of 0
static int vis_420P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
                           int srcSliceH, uint8_t* dst[], int dstStride[]){
  int y, out1, out2, out3, out4, out5, out6;

  for(y=0;y < srcSliceH;++y) {
      __asm__ volatile (
          YUV2RGB_INIT
          "wr %%g0, 0xd2, %%asi        \n\t" /* ASI_FL16_P */
          "1:                          \n\t"
          "ldda [%1] %%asi, %%f2       \n\t"
          "ldda [%1+2] %%asi, %%f18    \n\t"
          "ldda [%2] %%asi, %%f4       \n\t"
          "ldda [%2+2] %%asi, %%f20    \n\t"
          "ld [%0], %%f0               \n\t"
          "ld [%0+4], %%f16            \n\t"
          "fpmerge %%f3, %%f3, %%f2    \n\t"
          "fpmerge %%f19, %%f19, %%f18 \n\t"
          "fpmerge %%f5, %%f5, %%f4    \n\t"
          "fpmerge %%f21, %%f21, %%f20 \n\t"
          YUV2RGB_KERNEL
          "fzero %%f0                  \n\t"
          "fpmerge %%f4, %%f6, %%f8    \n\t"  // r,b,t1
          "fpmerge %%f20, %%f22, %%f24 \n\t"  // r,b,t1
          "fpmerge %%f0, %%f2, %%f10   \n\t"  // 0,g,t2
          "fpmerge %%f0, %%f18, %%f26  \n\t"  // 0,g,t2
          "fpmerge %%f10, %%f8, %%f4   \n\t"  // t2,t1,msb
          "fpmerge %%f26, %%f24, %%f20 \n\t"  // t2,t1,msb
          "fpmerge %%f11, %%f9, %%f6   \n\t"  // t2,t1,lsb
          "fpmerge %%f27, %%f25, %%f22 \n\t"  // t2,t1,lsb
          "std %%f4, [%3]              \n\t"
          "std %%f20, [%3+16]          \n\t"
          "std %%f6, [%3+8]            \n\t"
          "std %%f22, [%3+24]          \n\t"

          "add %0, 8, %0   \n\t"
          "add %1, 4, %1   \n\t"
          "add %2, 4, %2   \n\t"
          "subcc %4, 8, %4 \n\t"
          "bne 1b          \n\t"
          "add %3, 32, %3  \n\t" //delay slot
          : "=r" (out1), "=r" (out2), "=r" (out3), "=r" (out4), "=r" (out5), "=r" (out6)
          : "0" (src[0]+(y+srcSliceY)*srcStride[0]), "1" (src[1]+((y+srcSliceY)>>1)*srcStride[1]),
            "2" (src[2]+((y+srcSliceY)>>1)*srcStride[2]), "3" (dst[0]+(y+srcSliceY)*dstStride[0]),
            "4" (c->dstW),
            "5" (c->sparc_coeffs)
      );
  }

  return srcSliceH;
}

// FIXME: must be changed to set alpha to 255 instead of 0
static int vis_422P_ARGB32(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY,
                           int srcSliceH, uint8_t* dst[], int dstStride[]){
  int y, out1, out2, out3, out4, out5, out6;

  for(y=0;y < srcSliceH;++y) {
      __asm__ volatile (
          YUV2RGB_INIT
          "wr %%g0, 0xd2, %%asi        \n\t" /* ASI_FL16_P */
          "1:                          \n\t"
          "ldda [%1] %%asi, %%f2       \n\t"
          "ldda [%1+2] %%asi, %%f18    \n\t"
          "ldda [%2] %%asi, %%f4       \n\t"
          "ldda [%2+2] %%asi, %%f20    \n\t"
          "ld [%0], %%f0               \n\t"
          "ld [%0+4], %%f16            \n\t"
          "fpmerge %%f3, %%f3, %%f2    \n\t"
          "fpmerge %%f19, %%f19, %%f18 \n\t"
          "fpmerge %%f5, %%f5, %%f4    \n\t"
          "fpmerge %%f21, %%f21, %%f20 \n\t"
          YUV2RGB_KERNEL
          "fzero %%f0 \n\t"
          "fpmerge %%f4, %%f6, %%f8    \n\t"  // r,b,t1
          "fpmerge %%f20, %%f22, %%f24 \n\t"  // r,b,t1
          "fpmerge %%f0, %%f2, %%f10   \n\t"  // 0,g,t2
          "fpmerge %%f0, %%f18, %%f26  \n\t"  // 0,g,t2
          "fpmerge %%f10, %%f8, %%f4   \n\t"  // t2,t1,msb
          "fpmerge %%f26, %%f24, %%f20 \n\t"  // t2,t1,msb
          "fpmerge %%f11, %%f9, %%f6   \n\t"  // t2,t1,lsb
          "fpmerge %%f27, %%f25, %%f22 \n\t"  // t2,t1,lsb
          "std %%f4, [%3]              \n\t"
          "std %%f20, [%3+16]          \n\t"
          "std %%f6, [%3+8]            \n\t"
          "std %%f22, [%3+24]          \n\t"

          "add %0, 8, %0   \n\t"
          "add %1, 4, %1   \n\t"
          "add %2, 4, %2   \n\t"
          "subcc %4, 8, %4 \n\t"
          "bne 1b          \n\t"
          "add %3, 32, %3  \n\t" //delay slot
          : "=r" (out1), "=r" (out2), "=r" (out3), "=r" (out4), "=r" (out5), "=r" (out6)
          : "0" (src[0]+(y+srcSliceY)*srcStride[0]), "1" (src[1]+(y+srcSliceY)*srcStride[1]),
            "2" (src[2]+(y+srcSliceY)*srcStride[2]), "3" (dst[0]+(y+srcSliceY)*dstStride[0]),
            "4" (c->dstW),
            "5" (c->sparc_coeffs)
      );
  }

  return srcSliceH;
}

SwsFunc ff_yuv2rgb_init_vis(SwsContext *c){
    c->sparc_coeffs[5]=c->yCoeff;
    c->sparc_coeffs[6]=c->vgCoeff;
    c->sparc_coeffs[7]=c->vrCoeff;
    c->sparc_coeffs[8]=c->ubCoeff;
    c->sparc_coeffs[9]=c->ugCoeff;

    c->sparc_coeffs[0]=(((int16_t)c->yOffset*(int16_t)c->yCoeff >>11) & 0xffff) * 0x0001000100010001ULL;
    c->sparc_coeffs[1]=(((int16_t)c->uOffset*(int16_t)c->ubCoeff>>11) & 0xffff) * 0x0001000100010001ULL;
    c->sparc_coeffs[2]=(((int16_t)c->uOffset*(int16_t)c->ugCoeff>>11) & 0xffff) * 0x0001000100010001ULL;
    c->sparc_coeffs[3]=(((int16_t)c->vOffset*(int16_t)c->vgCoeff>>11) & 0xffff) * 0x0001000100010001ULL;
    c->sparc_coeffs[4]=(((int16_t)c->vOffset*(int16_t)c->vrCoeff>>11) & 0xffff) * 0x0001000100010001ULL;

    if (c->dstFormat == PIX_FMT_RGB32 && c->srcFormat == PIX_FMT_YUV422P && (c->dstW & 7)==0) {
        av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV422P -> RGB32 (WARNING: alpha value is wrong)\n");
        return vis_422P_ARGB32;
    }
    else if (c->dstFormat == PIX_FMT_RGB32 && c->srcFormat == PIX_FMT_YUV420P && (c->dstW & 7)==0) {
        av_log(c, AV_LOG_INFO, "SPARC VIS accelerated YUV420P -> RGB32 (WARNING: alpha value is wrong)\n");
        return vis_420P_ARGB32;
    }
    return NULL;
}
