29
30 /*
31 * functions to map backwards and forwards between logical or floating
32 * point immediates and their corresponding encodings. the mapping
33 * from encoding to immediate is required by the simulator. the reverse
34 * mapping is required by the OpenJDK assembler.
35 *
36 * a logical immediate value supplied to or returned from a map lookup
37 * is always 64 bits. this is sufficient for looking up 32 bit
38 * immediates or their encodings since a 32 bit immediate has the same
39 * encoding as the 64 bit immediate produced by concatenating the
40 * immediate with itself.
41 *
42 * a logical immediate encoding is 13 bits N:immr:imms (3 fields of
43 * widths 1:6:6 -- see the arm spec). they appear as bits [22:10] of a
44 * logical immediate instruction. encodings are supplied and returned
45 * as 32 bit values. if a given 13 bit immediate has no corresponding
46 * encoding then a map lookup will return 0xffffffff.
47 */
48
49 u_int64_t logical_immediate_for_encoding(u_int32_t encoding);
50 u_int32_t encoding_for_logical_immediate(u_int64_t immediate);
51 u_int64_t fp_immediate_for_encoding(u_int32_t imm8, int is_dp);
52 u_int32_t encoding_for_fp_immediate(float immediate);
53
54 #endif // _IMMEDIATE_H
|
29
30 /*
31 * functions to map backwards and forwards between logical or floating
32 * point immediates and their corresponding encodings. the mapping
33 * from encoding to immediate is required by the simulator. the reverse
34 * mapping is required by the OpenJDK assembler.
35 *
36 * a logical immediate value supplied to or returned from a map lookup
37 * is always 64 bits. this is sufficient for looking up 32 bit
38 * immediates or their encodings since a 32 bit immediate has the same
39 * encoding as the 64 bit immediate produced by concatenating the
40 * immediate with itself.
41 *
42 * a logical immediate encoding is 13 bits N:immr:imms (3 fields of
43 * widths 1:6:6 -- see the arm spec). they appear as bits [22:10] of a
44 * logical immediate instruction. encodings are supplied and returned
45 * as 32 bit values. if a given 13 bit immediate has no corresponding
46 * encoding then a map lookup will return 0xffffffff.
47 */
48
49 uint64_t logical_immediate_for_encoding(uint32_t encoding);
50 uint32_t encoding_for_logical_immediate(uint64_t immediate);
51 uint64_t fp_immediate_for_encoding(uint32_t imm8, int is_dp);
52 uint32_t encoding_for_fp_immediate(float immediate);
53
54 #endif // _IMMEDIATE_H
|