# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

if(${BUILD_SIMPLIFIED_CORE})
  return()
endif()

vec_cc_generated_test(
  NAME
    vfadd
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vfsub
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vfrsub
  TEMPLATE
    opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vfdiv
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vfrdiv
  TEMPLATE
    opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vfmax
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vfmin
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vfmul
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vmfeq
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vmfge
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vmfgt
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vmfle
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vmflt
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vmfne
  TEMPLATE
    opivv_opivf_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vsub
  TEMPLATE
    opivv_opivx_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vrsub
  TEMPLATE
    opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vadd
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vor
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vxor
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmin
  TEMPLATE
    opivv_opivx_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vminu
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vmul
  TEMPLATE
    opivv_opivx_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmulh
  TEMPLATE
    opivv_opivx_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmulhu
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vdiv
  TEMPLATE
    opivv_opivx_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vdivu
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vrem
  TEMPLATE
    opivv_opivx_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vremu
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vwadd
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vwaddu
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vwsub
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vwsubu
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vmax
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)


vec_cc_generated_test(
  NAME
    vand
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmaxu
  TEMPLATE
    opivv_opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vsext
  TEMPLATE
    vxunary0_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vzext
  TEMPLATE
    vxunary0_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vsll
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vsrl
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vsra
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vnsrl
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vnsra
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmseq
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmsne
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmsltu
  TEMPLATE
    opivv_opivx_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmslt
  TEMPLATE
    opivv_opivx_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmsleu
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmsle
  TEMPLATE
    opivv_opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmsgtu
  TEMPLATE
    opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmsgt
  TEMPLATE
    opivx_opivi_test.tpl.cpp
  TIMEOUT
    120
)

vec_cc_generated_test(
  NAME
    vmsgeu
  TEMPLATE
    opivx_test.tpl.cpp
)

vec_cc_generated_test(
  NAME
    vmsge
  TEMPLATE
    opivx_test.tpl.cpp
)

vec_cc_test(
  NAME
    vsetvl_test
  SRCS
    vsetvl_test.cpp
)

vec_cc_test(
  NAME
    vle_vse_test
  SRCS
    vle_vse_test.cpp
  TIMEOUT
    40
)

vec_cc_test(
  NAME
    vmv_test
  SRCS
    vmv_test.cpp
  TIMEOUT
    40
)

vec_cc_test(
  NAME
    vmv_s_x_test
  SRCS
    vmv_s_x_test.cpp
  TIMEOUT
    70
)

vec_cc_test(
  NAME
    vlnr_vsnr_test
  SRCS
    vlnr_vsnr_test.cpp
)

vec_cc_test(
  NAME
    vmerge_test
  SRCS
    vmerge_test.cpp
)
