printf("TEST bbit0: %s\n", t1 == 0x08 ? "PASS" : "FAIL");
printf("TEST bbit1: %s\n", t2 == 0xF7 ? "PASS" : "FAIL");
+ long int lt1 = 0;
+ long int lt2 = 0;
+ long int lt3 = 0xff00000000;
+ long int lt4 = 0x100000000;
+ /* Take 0x100000000 and loop until 35th bit is set
+ by incrementing 0x100000000 at a time. */
+ __asm__ volatile(
+ ".set noreorder" "\n\t"
+ "move $t0, $zero" "\n\t"
+ "move $t1, %1" "\n\t"
+ "label4:" "\n\t"
+ "dadd $t0, $t0, $t1" "\n\t"
+ "bbit032 $t0, 0x3, label4" "\n\t"
+ "nop" "\n\t"
+ "move %0, $t0" "\n\t"
+ ".set reorder" "\n\t"
+ : "=r" (lt1)
+ : "r" (lt4)
+ : "t0", "t1");
+ /* Take 0xff00000000 and loop until 35th bit is cleared
+ by decrementing 0x100000000 at a time. */
+ __asm__ volatile(
+ ".set noreorder" "\n\t"
+ "move $t0, %1" "\n\t"
+ "move $t1, %2" "\n\t"
+ "label3:" "\n\t"
+ "dadd $t0, $t0, $t1" "\n\t"
+ "bbit132 $t0, 0x3, label3" "\n\t"
+ "nop" "\n\t"
+ "move %0, $t0" "\n\t"
+ ".set reorder" "\n\t"
+ : "=r" (lt2)
+ : "r" (lt3), "r" (-lt4)
+ : "t0", "t1");
+
+ printf("TEST bbit032: %s\n", lt1 == 0x0800000000 ? "PASS" : "FAIL");
+ printf("TEST bbit132: %s\n", lt2 == 0xF700000000 ? "PASS" : "FAIL");
+
#endif
return 0;
}