@@ -149,49 +149,53 @@ component_build_aes_armce () {
149149 scripts/config.py set MBEDTLS_AES_USE_HARDWARE_ONLY
150150
151151 msg " MBEDTLS_AES_USE_HARDWARE_ONLY, clang, aarch64"
152- make -B library/aesce.o CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a+crypto"
152+ make -B library/aesce.o library/aesce.s CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a+crypto"
153+ msg " clang, test aarch64 crypto instructions built"
154+ grep -E ' aes[a-z]+\s*[qv]' library/aesce.s
153155
154156 msg " MBEDTLS_AES_USE_HARDWARE_ONLY, clang, arm"
155- make -B library/aesce.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
157+ make -B library/aesce.o library/aesce.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
158+ msg " clang, test A32 crypto instructions built"
159+ grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
156160
157161 msg " MBEDTLS_AES_USE_HARDWARE_ONLY, clang, thumb"
158- make -B library/aesce.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
162+ make -B library/aesce.o library/aesce.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
163+ msg " clang, test T32 crypto instructions built"
164+ grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
159165
160166 scripts/config.py unset MBEDTLS_AES_USE_HARDWARE_ONLY
161167
162- msg " no MBEDTLS_AES_USE_HARDWARE_ONLY, clang, aarch64"
163- make -B library/aesce.o CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a+crypto"
164-
165- msg " no MBEDTLS_AES_USE_HARDWARE_ONLY, clang, arm"
166- make -B library/aesce.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
167-
168- msg " no MBEDTLS_AES_USE_HARDWARE_ONLY, clang, thumb"
169- make -B library/aesce.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
168+ msg " MBEDTLS_AES_USE_both, clang, aarch64"
169+ make -B library/aesce.o library/aesce.s CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a+crypto"
170+ msg " clang, test aarch64 crypto instructions built"
171+ grep -E ' aes[a-z]+\s*[qv]' library/aesce.s
170172
171- # test for presence of AES instructions
172- scripts/config.py set MBEDTLS_AES_USE_HARDWARE_ONLY
173+ msg " MBEDTLS_AES_USE_both, clang, arm "
174+ make -B library/aesce.o library/aesce.s CC=clang CFLAGS= " --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm "
173175 msg " clang, test A32 crypto instructions built"
174- make -B library/aesce.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
175- grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
176+ grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
177+
178+ msg " MBEDTLS_AES_USE_both, clang, thumb"
179+ make -B library/aesce.o library/aesce.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
176180 msg " clang, test T32 crypto instructions built"
177- make -B library/aesce.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
178- grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
179- msg " clang, test aarch64 crypto instructions built"
180- make -B library/aesce.o CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a -S"
181- grep -E ' aes[a-z]+\s*[qv]' library/aesce.o
181+ grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
182182
183- # test for absence of AES instructions
184- scripts/config.py unset MBEDTLS_AES_USE_HARDWARE_ONLY
185183 scripts/config.py unset MBEDTLS_AESCE_C
184+
185+ msg " no MBEDTLS_AESCE_C, clang, aarch64"
186+ make -B library/aesce.o library/aesce.s CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a"
187+ msg " clang, test aarch64 crypto instructions not built"
188+ not grep -E ' aes[a-z]+\s*[qv]' library/aesce.s
189+
190+ msg " no MBEDTLS_AESCE_C, clang, arm"
191+ make -B library/aesce.o library/aesce.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72 -marm"
186192 msg " clang, test A32 crypto instructions not built"
187- make -B library/aesce.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
188- not grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
193+ not grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
194+
195+ msg " no MBEDTLS_AESCE_C, clang, thumb"
196+ make -B library/aesce.o library/aesce.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32 -mthumb"
189197 msg " clang, test T32 crypto instructions not built"
190- make -B library/aesce.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
191- not grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.o
192- msg " clang, test aarch64 crypto instructions not built"
193- make -B library/aesce.o CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a -S"
194- not grep -E ' aes[a-z]+\s*[qv]' library/aesce.o
198+ not grep -E ' aes[0-9a-z]+.[0-9]\s*[qv]' library/aesce.s
195199}
196200
197201support_build_sha_armce () {
@@ -202,67 +206,59 @@ support_build_sha_armce () {
202206component_build_sha_armce () {
203207 scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
204208
205-
206209 # Test variations of SHA256 Armv8 crypto extensions
207210 scripts/config.py set MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
208211 msg " MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, aarch64"
209- make -B library/sha256.o CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a"
212+ make -B library/sha256.o library/sha256.s CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a+crypto"
213+ msg " MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, test aarch64 crypto instructions built"
214+ grep -E ' sha256[a-z0-9]+\s+[qv]' library/sha256.s
215+
210216 msg " MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, arm"
211- make -B library/sha256.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
217+ make -B library/sha256.o library/sha256.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm"
218+ msg " MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY clang, test A32 crypto instructions built"
219+ grep -E ' sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
212220 scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY
213221
214222
215223 # test the deprecated form of the config option
216224 scripts/config.py set MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
217225 msg " MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY clang, thumb"
218- make -B library/sha256.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
226+ make -B library/sha256.o library/sha256.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
227+ msg " MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY clang, test T32 crypto instructions built"
228+ grep -E ' sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
219229 scripts/config.py unset MBEDTLS_SHA256_USE_A64_CRYPTO_ONLY
220230
221231 scripts/config.py set MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
222232 msg " MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT clang, aarch64"
223- make -B library/sha256.o CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a"
233+ make -B library/sha256.o library/sha256.s CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a+crypto"
234+ msg " MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT clang, test aarch64 crypto instructions built"
235+ grep -E ' sha256[a-z0-9]+\s+[qv]' library/sha256.s
224236 scripts/config.py unset MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT
225237
226238
227239 # test the deprecated form of the config option
228240 scripts/config.py set MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
229241 msg " MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT clang, arm"
230- make -B library/sha256.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -std=c99"
242+ make -B library/sha256.o library/sha256.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -std=c99"
243+
231244 msg " MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT clang, thumb"
232- make -B library/sha256.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
245+ make -B library/sha256.o library/sha256.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb"
246+ msg " MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT clang, test T32 crypto instructions built"
247+ grep -E ' sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
233248 scripts/config.py unset MBEDTLS_SHA256_USE_A64_CRYPTO_IF_PRESENT
234249
235-
236- # examine the disassembly for presence of SHA instructions
237- for opt in MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_ONLY MBEDTLS_SHA256_USE_ARMV8_A_CRYPTO_IF_PRESENT; do
238- scripts/config.py set ${opt}
239- msg " ${opt} clang, test A32 crypto instructions built"
240- make -B library/sha256.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S"
241- grep -E ' sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
242-
243- msg " ${opt} clang, test T32 crypto instructions built"
244- make -B library/sha256.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S"
245- grep -E ' sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
246-
247- msg " ${opt} clang, test aarch64 crypto instructions built"
248- make -B library/sha256.o CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a -S"
249- grep -E ' sha256[a-z0-9]+\s+[qv]' library/sha256.o
250- scripts/config.py unset ${opt}
251- done
252-
253-
254250 # examine the disassembly for absence of SHA instructions
255251 msg " clang, test A32 crypto instructions not built"
256- make -B library/sha256.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72+crypto -marm -S "
257- not grep -E ' sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
252+ make -B library/sha256.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a72 -marm"
253+ not grep -E ' sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
258254
259255 msg " clang, test T32 crypto instructions not built"
260- make -B library/sha256.o CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32+crypto -mthumb -S "
261- not grep -E ' sha256[a-z0-9]+.32\s+[qv]' library/sha256.o
256+ make -B library/sha256.s CC=clang CFLAGS=" --target=arm-linux-gnueabihf -mcpu=cortex-a32 -mthumb"
257+ not grep -E ' sha256[a-z0-9]+.32\s+[qv]' library/sha256.s
262258
263259 msg " clang, test aarch64 crypto instructions not built"
264- make -B library/sha256.o CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a -S "
265- not grep -E ' sha256[a-z0-9]+\s+[qv]' library/sha256.o
260+ make -B library/sha256.s CC=clang CFLAGS=" --target=aarch64-linux-gnu -march=armv8-a"
261+ not grep -E ' sha256[a-z0-9]+\s+[qv]' library/sha256.s
266262}
267263
268264component_test_m32_no_asm () {
0 commit comments