# if defined (HAS_DARN)
if ( L == 0)
- __asm__ __volatile__("darn %0,0" : "=r"(val));
+ __asm__ __volatile__(".machine push; .machine power9;" \
+ "darn %0,0; .machine pop;" : "=r"(val));
else if (L == 1)
- __asm__ __volatile__("darn %0,1" : "=r"(val));
+ __asm__ __volatile__(".machine push; .machine power9;" \
+ "darn %0,1; .machine pop;" : "=r"(val));
else if (L == 2)
- __asm__ __volatile__("darn %0,2" : "=r"(val));
+ __asm__ __volatile__(".machine push; .machine power9;"
+ "darn %0,2; .machine pop;" : "=r"(val));
# endif
return val;
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
]], [[
- __asm__ __volatile__("darn 1,0 ");
+ __asm__ __volatile__(".machine power9; darn 1,0 ");
]])], [
ac_asm_have_darn_inst=yes
AC_MSG_RESULT([yes])
/* The random number instruction returns 0xFFFFFFFFFFFFFFFFULL on error
and an unsigned 64-bit value between 0 and 0xFFFFFFFFFFFFFFFEULL on
success. */
- __asm__ __volatile__ ("darn %0,0" : "=r" (rand));
+ __asm__ __volatile__ (".machine push; .machine power9;" \
+ "darn %0,0; .machine pop" : "=r" (rand));
if (rand == ERROR) {
success = FALSE;
printf ("Error darn 0 result = 0%llx not in expected range.\n", rand);
}
- __asm__ __volatile__ ("darn %0,1" : "=r" (rand));
+ __asm__ __volatile__ (".machine push; .machine power9;" \
+ "darn %0,1; .machine pop" : "=r" (rand));
if (rand == ERROR) {
success = FALSE;
printf ("Error darn 1 result = 0%llx not in expected range.\n", rand);
}
- __asm__ __volatile__ ("darn %0,2" : "=r" (rand));
+ __asm__ __volatile__ (".machine push; .machine power9;" \
+ "darn %0,2; .machine pop" : "=r" (rand));
if (rand == ERROR) {
success = FALSE;
printf ("Error darn 2 result = 0%llx not in expected range.\n", rand);