@@ -38,6 +38,9 @@ AM_CONDITIONAL([CPU_PPC64LE], [test "$CPU" = "ppc64le"])
38
38
AM_CONDITIONAL([ CPU_RISCV64] , [ test "$CPU" = "riscv64"] )
39
39
AM_CONDITIONAL([ CPU_UNDEFINED] , [ test "x$CPU" = "x"] )
40
40
AM_CONDITIONAL([ HAVE_RVV] , [ false] )
41
+ AM_CONDITIONAL([ HAVE_ZBC] , [ false] )
42
+ AM_CONDITIONAL([ HAVE_ZVBC] , [ false] )
43
+ AM_CONDITIONAL([ HAVE_ZVBB] , [ false] )
41
44
42
45
# Check for programs
43
46
AC_PROG_CC_STDC
@@ -57,7 +60,7 @@ case "${CPU}" in
57
60
58
61
riscv64)
59
62
60
- AC_MSG_CHECKING ( [ checking RVV support] )
63
+ AC_MSG_CHECKING ( [ RVV support] )
61
64
AC_COMPILE_IFELSE (
62
65
[ AC_LANG_PROGRAM ( [ ] , [
63
66
__asm__ volatile(
@@ -70,11 +73,64 @@ case "${CPU}" in
70
73
[ AC_DEFINE ( [ HAVE_RVV] , [ 0] , [ Disable RVV instructions] )
71
74
AM_CONDITIONAL([ HAVE_RVV] , [ false] ) rvv=no]
72
75
)
76
+ AC_MSG_RESULT ( [ $rvv] )
77
+ AC_MSG_CHECKING ( [ ZBC support] )
78
+ AC_COMPILE_IFELSE (
79
+ [ AC_LANG_PROGRAM ( [ ] , [
80
+ __asm__ volatile(
81
+ ".option arch, +zbc\n"
82
+ "clmul zero, zero, zero\n"
83
+ "clmulh zero, zero, zero\n"
84
+ );
85
+ ] ) ] ,
86
+ [ AC_DEFINE ( [ HAVE_ZBC] , [ 1] , [ Enable ZBC instructions] )
87
+ AM_CONDITIONAL([ HAVE_ZBC] , [ true] ) zbc=yes] ,
88
+ [ AC_DEFINE ( [ HAVE_ZBC] , [ 0] , [ Disable ZBC instructions] )
89
+ AM_CONDITIONAL([ HAVE_ZBC] , [ false] ) zbc=no]
90
+ )
91
+ AC_MSG_RESULT ( [ $zbc] )
92
+ AC_MSG_CHECKING ( [ ZVBC support] )
93
+ AC_COMPILE_IFELSE (
94
+ [ AC_LANG_PROGRAM ( [ ] , [
95
+ __asm__ volatile(
96
+ ".option arch, +v, +zvbc\n"
97
+ "vsetivli zero, 2, e64, m1, ta, ma\n"
98
+ "vmv.s.x v0, zero\n"
99
+ "vclmul.vv v0, v0, v0\n"
100
+ "vclmulh.vv v0, v0, v0\n"
101
+ );
102
+ ] ) ] ,
103
+ [ AC_DEFINE ( [ HAVE_ZVBC] , [ 1] , [ Enable ZVBC instructions] )
104
+ AM_CONDITIONAL([ HAVE_ZVBC] , [ true] ) zvbc=yes] ,
105
+ [ AC_DEFINE ( [ HAVE_ZVBC] , [ 0] , [ Disable ZVBC instructions] )
106
+ AM_CONDITIONAL([ HAVE_ZVBC] , [ false] ) zvbc=no]
107
+ )
108
+ AC_MSG_RESULT ( [ $zvbc] )
109
+ AC_MSG_CHECKING ( [ ZVBB support] )
110
+ AC_COMPILE_IFELSE (
111
+ [ AC_LANG_PROGRAM ( [ ] , [
112
+ __asm__ volatile(
113
+ ".option arch, +v, +zvbb\n"
114
+ "vsetivli zero, 2, e64, m1, ta, ma\n"
115
+ "vmv.s.x v0, zero\n"
116
+ "vrev8.v v0, v0\n"
117
+ );
118
+ ] ) ] ,
119
+ [ AC_DEFINE ( [ HAVE_ZVBB] , [ 1] , [ Enable ZVBB instructions] )
120
+ AM_CONDITIONAL([ HAVE_ZVBB] , [ true] ) zvbb=yes] ,
121
+ [ AC_DEFINE ( [ HAVE_ZVBB] , [ 0] , [ Disable ZVBB instructions] )
122
+ AM_CONDITIONAL([ HAVE_ZVBB] , [ false] ) zvbb=no]
123
+ )
73
124
if test "x$rvv" = "xyes"; then
74
- CFLAGS+=" -march=rv64gcv"
75
- CCASFLAGS+=" -march=rv64gcv"
76
- fi
77
- AC_MSG_RESULT ( [ $rvv] )
125
+ if test "x$zbc" = "xyes" && test "x$zvbc" = "xyes" && test "x$zvbb" = "xyes"; then
126
+ CFLAGS+=" -march=rv64gcv_zbc_zvbc_zvbb"
127
+ CCASFLAGS+=" -march=rv64gcv_zbc_zvbc_zvbb"
128
+ else
129
+ CFLAGS+=" -march=rv64gcv"
130
+ CCASFLAGS+=" -march=rv64gcv"
131
+ fi
132
+ fi
133
+ AC_MSG_RESULT ( [ $zvbb] )
78
134
;;
79
135
80
136
*)
@@ -239,4 +295,4 @@ AC_MSG_RESULT([
239
295
ldflags: ${LDFLAGS}
240
296
241
297
debug: ${enable_debug}
242
- ] )
298
+ ] )
0 commit comments