You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

CMakeLists.txt 8.8 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. include_directories(${CMAKE_SOURCE_DIR})
  2. # Makeflie
  3. if (${ARCH} STREQUAL "x86")
  4. GenerateNamedObjects("${KERNELDIR}/cpuid.S" "")
  5. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  6. endif ()
  7. # Makefile.L1
  8. # TODO: need to read ${KERNELDIR}/KERNEL into CMake vars
  9. set(DAMAXKERNEL amax.S)
  10. set(DAMINKERNEL amax.S)
  11. set(DMAXKERNEL amax.S)
  12. set(DMINKERNEL amax.S)
  13. set(IDAMAXKERNEL iamax.S)
  14. set(IDAMINKERNEL iamax.S)
  15. set(IDMAXKERNEL iamax.S)
  16. set(IDMINKERNEL iamax.S)
  17. set(DASUMKERNEL asum.S)
  18. set(DAXPYKERNEL axpy.S)
  19. set(DCOPYKERNEL copy.S)
  20. set(DDOTKERNEL dot.S)
  21. set(DNRM2KERNEL nrm2.S)
  22. set(DROTKERNEL rot.S)
  23. set(DSCALKERNEL scal.S)
  24. set(DSWAPKERNEL swap.S)
  25. set(DAXPBYKERNEL ../arm/axpby.c)
  26. GenerateNamedObjects("${KERNELDIR}/${DAMAXKERNEL}" "DOUBLE" "USE_ABS" "amax_k")
  27. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  28. GenerateNamedObjects("${KERNELDIR}/${DAMINKERNEL}" "DOUBLE" "USE_ABS;USE_MIN" "amin_k")
  29. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  30. GenerateNamedObjects("${KERNELDIR}/${DMAXKERNEL}" "DOUBLE" "" "max_k")
  31. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  32. GenerateNamedObjects("${KERNELDIR}/${DMINKERNEL}" "DOUBLE" "" "min_k")
  33. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  34. GenerateNamedObjects("${KERNELDIR}/${IDAMAXKERNEL}" "DOUBLE" "USE_ABS" "i*amax_k")
  35. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  36. GenerateNamedObjects("${KERNELDIR}/${IDAMINKERNEL}" "DOUBLE" "USE_ABS;USE_MIN" "i*amin_k")
  37. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  38. GenerateNamedObjects("${KERNELDIR}/${IDMAXKERNEL}" "DOUBLE" "" "i*max_k")
  39. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  40. GenerateNamedObjects("${KERNELDIR}/${IDMINKERNEL}" "DOUBLE" "" "i*min_k")
  41. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  42. GenerateNamedObjects("${KERNELDIR}/${DASUMKERNEL}" "DOUBLE" "" "asum_k")
  43. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  44. GenerateNamedObjects("${KERNELDIR}/${DAXPYKERNEL}" "DOUBLE" "" "axpy_k")
  45. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  46. GenerateNamedObjects("${KERNELDIR}/${DCOPYKERNEL}" "DOUBLE" "C_INTERFACE" "copy_k")
  47. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  48. GenerateNamedObjects("${KERNELDIR}/${DDOTKERNEL}" "DOUBLE" "" "dot_k")
  49. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  50. GenerateNamedObjects("${KERNELDIR}/${DNRM2KERNEL}" "DOUBLE" "" "nrm2_k")
  51. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  52. GenerateNamedObjects("${KERNELDIR}/${DROTKERNEL}" "DOUBLE" "" "rot_k")
  53. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  54. GenerateNamedObjects("${KERNELDIR}/${DSCALKERNEL}" "DOUBLE" "" "scal_k")
  55. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  56. GenerateNamedObjects("${KERNELDIR}/${DSWAPKERNEL}" "DOUBLE" "" "swap_k")
  57. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  58. GenerateNamedObjects("${KERNELDIR}/${DAXPBYKERNEL}" "DOUBLE" "" "axpby_k")
  59. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  60. # Makefile.L2
  61. GenerateNamedObjects("${KERNELDIR}/gemv_n.S" "DOUBLE")
  62. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  63. GenerateNamedObjects("${KERNELDIR}/gemv_t.S" "DOUBLE" "TRANS")
  64. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  65. GenerateCombinationObjects("generic/symv_k.c" "LOWER" "U" "DOUBLE" "" 1)
  66. list(APPEND DBLAS_OBJS ${COMBO_OBJ_LIST_OUT})
  67. GenerateNamedObjects("generic/ger.c" "DOUBLE" "" "ger_k")
  68. list(APPEND DBLAS_OBJS ${OBJ_LIST_OUT})
  69. # Makefile.L3
  70. set(DGEMM_BETA ../generic/gemm_beta.c)
  71. set(DGEMMKERNEL gemm_kernel_2x4_penryn.S)
  72. GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE")
  73. if (DGEMMINCOPY)
  74. GenerateNamedObjects(${DGEMMINCOPY} "DOUBLE")
  75. endif ()
  76. if (DGEMMITCOPY)
  77. GenerateNamedObjects(${DGEMMITCOPY} "DOUBLE")
  78. endif ()
  79. if (DGEMMONCOPY)
  80. GenerateNamedObjects(${DGEMMONCOPY} "DOUBLE")
  81. endif ()
  82. if (DGEMMOTCOPY)
  83. GenerateNamedObjects(${DGEMMOTCOPY} "DOUBLE")
  84. endif ()
  85. GenerateNamedObjects("${KERNELDIR}/${DGEMM_BETA}" "DOUBLE")
  86. GenerateCombinationObjects("${KERNELDIR}/${DGEMMKERNEL}" "LEFT;TRANSA" "R;N" "DOUBLE" "TRMMKERNEL" 2 "trmm_kernel")
  87. GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE" "UPPER;LN;TRSMKERNEL" "trsm_kernel_LN")
  88. GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE" "LT;TRSMKERNEL" "trsm_kernel_LT")
  89. GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE" "UPPER;RN;TRSMKERNEL" "trsm_kernel_RN")
  90. GenerateNamedObjects("${KERNELDIR}/${DGEMMKERNEL}" "DOUBLE" "RT;TRSMKERNEL" "trsm_kernel_RT")
  91. # These don't use a scheme that is easy to iterate over - the filenames have part of the DEFINE codes in them, for UPPER/TRANS but not for UNIT/OUTER. Also TRANS is not passed in as a define.
  92. # Could simplify it a bit by pairing up by -UUNIT/-DUNIT.
  93. GenerateNamedObjects("generic/trmm_uncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "UNIT" "trmm_iunucopy")
  94. GenerateNamedObjects("generic/trmm_uncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "" "trmm_iunncopy")
  95. GenerateNamedObjects("generic/trmm_uncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;UNIT" "trmm_ounucopy")
  96. GenerateNamedObjects("generic/trmm_uncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER" "trmm_ounncopy")
  97. GenerateNamedObjects("generic/trmm_lncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "LOWER;UNIT" "trmm_ilnucopy")
  98. GenerateNamedObjects("generic/trmm_lncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "LOWER" "trmm_ilnncopy")
  99. GenerateNamedObjects("generic/trmm_lncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;LOWER;UNIT" "trmm_olnucopy")
  100. GenerateNamedObjects("generic/trmm_lncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;LOWER" "trmm_olnncopy")
  101. GenerateNamedObjects("generic/trmm_utcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "UNIT" "trmm_iutucopy")
  102. GenerateNamedObjects("generic/trmm_utcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "" "trmm_iutncopy")
  103. GenerateNamedObjects("generic/trmm_utcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;UNIT" "trmm_outucopy")
  104. GenerateNamedObjects("generic/trmm_utcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER" "trmm_outncopy")
  105. GenerateNamedObjects("generic/trmm_ltcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "LOWER;UNIT" "trmm_iltucopy")
  106. GenerateNamedObjects("generic/trmm_ltcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "LOWER" "trmm_iltncopy")
  107. GenerateNamedObjects("generic/trmm_ltcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;LOWER;UNIT" "trmm_oltucopy")
  108. GenerateNamedObjects("generic/trmm_ltcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;LOWER" "trmm_oltncopy")
  109. GenerateNamedObjects("generic/trsm_uncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "UNIT" "trsm_iunucopy")
  110. GenerateNamedObjects("generic/trsm_uncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "" "trsm_iunncopy")
  111. GenerateNamedObjects("generic/trsm_uncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;UNIT" "trsm_ounucopy")
  112. GenerateNamedObjects("generic/trsm_uncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER" "trsm_ounncopy")
  113. GenerateNamedObjects("generic/trsm_lncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "LOWER;UNIT" "trsm_ilnucopy")
  114. GenerateNamedObjects("generic/trsm_lncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "LOWER" "trsm_ilnncopy")
  115. GenerateNamedObjects("generic/trsm_lncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;LOWER;UNIT" "trsm_olnucopy")
  116. GenerateNamedObjects("generic/trsm_lncopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;LOWER" "trsm_olnncopy")
  117. GenerateNamedObjects("generic/trsm_utcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "UNIT" "trsm_iutucopy")
  118. GenerateNamedObjects("generic/trsm_utcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "" "trsm_iutncopy")
  119. GenerateNamedObjects("generic/trsm_utcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;UNIT" "trsm_outucopy")
  120. GenerateNamedObjects("generic/trsm_utcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER" "trsm_outncopy")
  121. GenerateNamedObjects("generic/trsm_ltcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "LOWER;UNIT" "trsm_iltucopy")
  122. GenerateNamedObjects("generic/trsm_ltcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "LOWER" "trsm_iltncopy")
  123. GenerateNamedObjects("generic/trsm_ltcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;LOWER;UNIT" "trsm_oltucopy")
  124. GenerateNamedObjects("generic/trsm_ltcopy_${DGEMM_UNROLL_M}.c" "DOUBLE" "OUTER;LOWER" "trsm_oltncopy")
  125. GenerateNamedObjects("generic/symm_ucopy_${DGEMM_UNROLL_N}.c" "DOUBLE" "OUTER" "symm_outcopy")
  126. GenerateNamedObjects("generic/symm_ucopy_${DGEMM_UNROLL_N}.c" "DOUBLE" "" "symm_iutcopy")
  127. GenerateNamedObjects("generic/symm_lcopy_${DGEMM_UNROLL_N}.c" "DOUBLE" "LOWER;OUTER" "symm_oltcopy")
  128. GenerateNamedObjects("generic/symm_lcopy_${DGEMM_UNROLL_N}.c" "DOUBLE" "LOWER" "symm_iltcopy")
  129. if (NOT DEFINED DOMATCOPY_CN)
  130. set(DOMATCOPY_CN ../arm/omatcopy_cn.c)
  131. endif ()
  132. if (NOT DEFINED DOMATCOPY_RN)
  133. set(DOMATCOPY_RN ../arm/omatcopy_rn.c)
  134. endif ()
  135. if (NOT DEFINED DOMATCOPY_CT)
  136. set(DOMATCOPY_CT ../arm/omatcopy_ct.c)
  137. endif ()
  138. if (NOT DEFINED DOMATCOPY_RT)
  139. set(DOMATCOPY_RT ../arm/omatcopy_rt.c)
  140. endif ()
  141. GenerateNamedObjects("${KERNELDIR}/${DOMATCOPY_CN}" "DOUBLE" "" "domatcopy_k_cn")
  142. GenerateNamedObjects("${KERNELDIR}/${DOMATCOPY_RN}" "DOUBLE" "ROWM" "domatcopy_k_rn")
  143. GenerateNamedObjects("${KERNELDIR}/${DOMATCOPY_CT}" "DOUBLE" "" "domatcopy_k_ct")
  144. GenerateNamedObjects("${KERNELDIR}/${DOMATCOPY_RT}" "DOUBLE" "ROWM" "domatcopy_k_rt")
  145. # Makefile.LA
  146. #DBLASOBJS += dneg_tcopy$(TSUFFIX).$(SUFFIX) dlaswp_ncopy$(TSUFFIX).$(SUFFIX)
  147. set(DBLAS_OBJS ${DBLAS_OBJS} PARENT_SCOPE) # list append removes the scope from DBLAS_OBJS