From f1dfcc71cb285d33c2c60f4ace2895f77ddd2083 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=B6tz=20Lindenmaier?= Date: Fri, 28 Mar 2003 09:31:16 +0000 Subject: [PATCH] size access with unit [r1003] --- ir/ir/irmode.c | 13 ++++++++++--- ir/ir/irmode.h | 7 +++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ir/ir/irmode.c b/ir/ir/irmode.c index 293749779..20b1bcf99 100644 --- a/ir/ir/irmode.c +++ b/ir/ir/irmode.c @@ -20,6 +20,7 @@ # include "array.h" #if 0 +static long long count = 0; # define ANNOUNCE() printf(__FILE__": call no. %lld (%s)\n", count++, __FUNCTION__) #else # define ANNOUNCE() ((void)0) @@ -29,7 +30,6 @@ * local values * * */ -static long long count = 0; /* dynamic array to hold all modes */ static ir_mode * modes; @@ -226,13 +226,20 @@ get_mode_sort(ir_mode* mode) return mode->sort; } -int -get_mode_size(ir_mode *mode) +INLINE int +get_mode_size_bits(ir_mode *mode) { ANNOUNCE(); return mode->size; } +int get_mode_size_bytes(ir_mode *mode) { + ANNOUNCE(); + int size = get_mode_size_bits(mode); + if ((size % 8) != 0) return -1; + return size / 8; +} + int get_mode_align (ir_mode *mode) { diff --git a/ir/ir/irmode.h b/ir/ir/irmode.h index 6e38611ef..91984b591 100644 --- a/ir/ir/irmode.h +++ b/ir/ir/irmode.h @@ -148,8 +148,11 @@ const char *get_mode_name(ir_mode *mode); /* A coarse classification of the mode */ mode_sort get_mode_sort(ir_mode *mode); -/* The size of values of the mode in bits. */ -int get_mode_size(ir_mode *mode); +/** The size of values of the mode in bits. */ +int get_mode_size_bits(ir_mode *mode); +/** The size of values of the mode in bytes. If the size is not + dividable by 8 returns -1. */ +int get_mode_size_bytes(ir_mode *mode); /* The alignment of values of the mode in bytes. */ int get_mode_align(ir_mode *mode); -- 2.20.1