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 }