hpl_misc.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /*
  2. * -- High Performance Computing Linpack Benchmark (HPL)
  3. * HPL - 2.0 - September 10, 2008
  4. * Antoine P. Petitet
  5. * University of Tennessee, Knoxville
  6. * Innovative Computing Laboratory
  7. * (C) Copyright 2000-2008 All Rights Reserved
  8. *
  9. * -- Copyright notice and Licensing terms:
  10. *
  11. * Redistribution and use in source and binary forms, with or without
  12. * modification, are permitted provided that the following conditions
  13. * are met:
  14. *
  15. * 1. Redistributions of source code must retain the above copyright
  16. * notice, this list of conditions and the following disclaimer.
  17. *
  18. * 2. Redistributions in binary form must reproduce the above copyright
  19. * notice, this list of conditions, and the following disclaimer in the
  20. * documentation and/or other materials provided with the distribution.
  21. *
  22. * 3. All advertising materials mentioning features or use of this
  23. * software must display the following acknowledgement:
  24. * This product includes software developed at the University of
  25. * Tennessee, Knoxville, Innovative Computing Laboratory.
  26. *
  27. * 4. The name of the University, the name of the Laboratory, or the
  28. * names of its contributors may not be used to endorse or promote
  29. * products derived from this software without specific written
  30. * permission.
  31. *
  32. * -- Disclaimer:
  33. *
  34. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  35. * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  36. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  37. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY
  38. * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  39. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  40. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  41. * DATA OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  42. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  43. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  44. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  45. */
  46. #ifndef HPL_MISC_H
  47. #define HPL_MISC_H
  48. /*
  49. * ---------------------------------------------------------------------
  50. * Include files
  51. * ---------------------------------------------------------------------
  52. */
  53. #ifdef __STDC__
  54. #define STDC_HEADERS
  55. #endif
  56. #include <stdio.h>
  57. #include <stdlib.h>
  58. #include <string.h>
  59. #ifdef STDC_HEADERS
  60. #include <stdarg.h>
  61. #define STDC_ARGS(p) p
  62. #else
  63. #include <varargs.h>
  64. #define STDC_ARGS(p) ()
  65. #endif
  66. #ifdef HPL_CALL_VSIPL
  67. #include <vsip.h>
  68. #endif
  69. /*
  70. * ---------------------------------------------------------------------
  71. * #define macro constants
  72. * ---------------------------------------------------------------------
  73. */
  74. #define HPL_rone 1.0
  75. #define HPL_rtwo 2.0
  76. #define HPL_rzero 0.0
  77. /*
  78. * ---------------------------------------------------------------------
  79. * #define macros definitions
  80. * ---------------------------------------------------------------------
  81. */
  82. #define Mabs( a_ ) ( ( (a_) < 0 ) ? -(a_) : (a_) )
  83. #define Mmin( a_, b_ ) ( ( (a_) < (b_) ) ? (a_) : (b_) )
  84. #define Mmax( a_, b_ ) ( ( (a_) > (b_) ) ? (a_) : (b_) )
  85. #define Mfloor(a,b) (((a)>0) ? (((a)/(b))) : (-(((-(a))+(b)-1)/(b))))
  86. #define Mceil(a,b) ( ( (a)+(b)-1 ) / (b) )
  87. #define Miceil(a,b) (((a)>0) ? ((((a)+(b)-1)/(b))) : (-((-(a))/(b))))
  88. #define Mupcase(C) (((C)>96 && (C)<123) ? (C) & 0xDF : (C))
  89. #define Mlowcase(C) (((C)>64 && (C)< 91) ? (C) | 32 : (C))
  90. /*
  91. * Mptr returns a pointer to a_( i_, j_ ) for readability reasons and
  92. * also less silly errors ...
  93. */
  94. #define Mptr( a_, i_, j_, lda_ ) \
  95. ( (a_) + (size_t)(i_) + (size_t)(j_)*(size_t)(lda_) )
  96. /*
  97. * Align pointer
  98. */
  99. #define HPL_PTR( ptr_, al_ ) \
  100. ( ( ( (size_t)(ptr_)+(al_)-1 ) / (al_) ) * (al_) )
  101. #endif
  102. /*
  103. * End of hpl_misc.h
  104. */