kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

rv64_large_imm_li.c (764B)


      1 /* Large integer immediates that span the LUI/ADDIW/SLLI/ADDI expansion
      2  * the rv64 backend uses to materialize 64-bit constants. Each test
      3  * value picks a constant where the naive ADDI alone won't work. */
      4 static long long large_imm_a(void) { return 0x1234567890abcdefLL; }
      5 static long long large_imm_b(void) { return -0x7fffffff0000abcdLL; }
      6 static long long large_imm_c(void) { return 0xffffffff7fffffffLL; }
      7 static long long large_imm_d(void) { return 0xdeadbeefcafef00dLL; }
      8 
      9 int test_main(void) {
     10   if (large_imm_a() != 0x1234567890abcdefLL) return 1;
     11   if (large_imm_b() != -0x7fffffff0000abcdLL) return 2;
     12   if (large_imm_c() != (long long)0xffffffff7fffffffULL) return 3;
     13   if (large_imm_d() != (long long)0xdeadbeefcafef00dULL) return 4;
     14   return 42;
     15 }