1 public class LongLogicTests {
   2 
   3     private static final long IMM = 0xf0f0f0f0f0f0f0f0L;
   4     private static final long NO_IMM = 0x123456d5123456d5L;
   5     private static long test_and(long a, long b) {
   6         return a & b;
   7     }
   8 
   9     private static long test_andc1(long a) {
  10         // Generates immediate instruction.
  11         return a & IMM;
  12     }
  13 
  14     private static long test_andc2(long a) {
  15         // Generates non-immediate instruction.
  16         return a & NO_IMM;
  17     }
  18 
  19     private static long test_or(long a, long b) {
  20         return a | b;
  21     }
  22 
  23     private static long test_orc1(long a) {
  24         // Generates immediate instruction.
  25         return a | IMM;
  26     }
  27 
  28     private static long test_orc2(long a) {
  29         // Generates non-immediate instruction.
  30         return a | NO_IMM;
  31     }
  32 
  33     private static long test_xor(long a, long b) {
  34         return a ^ b;
  35     }
  36 
  37     private static long test_xorc1(long a) {
  38         // Generates immediate instruction.
  39         return a ^ IMM;
  40     }
  41 
  42     private static long test_xorc2(long a) {
  43         // Generates non-immediate instruction.
  44         return a ^ NO_IMM;
  45     }
  46 
  47     private static void assertThat(boolean assertion) {
  48         if (! assertion) {
  49             throw new AssertionError();
  50         }
  51     }
  52 
  53     public static void main(String[] args) {
  54 
  55         assertThat(test_and(0x21, 0x31) == 0x21);
  56         assertThat(test_andc1(0xaaaaaaaaaaaaaaaaL) == 0xa0a0a0a0a0a0a0a0L);
  57         assertThat(test_andc2(0xaaaaaaaaaaaaaaaaL) == 0x0220028002200280L);
  58 
  59         assertThat(test_or(0x21, 0x31) == 0x31);
  60         assertThat(test_orc1(0xaaaaaaaaaaaaaaaaL) == 0xfafafafafafafafaL);
  61         assertThat(test_orc2(0xaaaaaaaaaaaaaaaaL) == 0xbabefeffbabefeffL);
  62 
  63         assertThat(test_xor(0x21, 0x31) == 16);
  64         assertThat(test_xorc1(0xaaaaaaaaaaaaaaaaL) == 0x5a5a5a5a5a5a5a5aL);
  65         assertThat(test_xorc2(0xaaaaaaaaaaaaaaaaL) == 0xb89efc7fb89efc7fL);
  66     }
  67 }
  68