aboutsummaryrefslogblamecommitdiffstats
path: root/lib/hipe/rtl/hipe_rtl_arith_32.erl
blob: a8a6043cda4a18eb06a1e9f4145b7e58f7015d77 (plain) (tree)

















































                                                                         
%% -*- erlang-indent-level: 2 -*-
%%
%% %CopyrightBegin%
%% 
%% Copyright Ericsson AB 2003-2009. All Rights Reserved.
%% 
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
%% 
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
%% 
%% %CopyrightEnd%
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright (c) 2002 by Erik Johansson.  
%% ====================================================================
%%  Filename : 	hipe_rtl_arith_32.erl
%%  Module   :	hipe_rtl_arith_32
%%  Purpose  :  To implement 32-bit RTL-arithmetic 
%%  Notes    :  The arithmetic works on 32-bit signed integers. 
%%              The implementation is taken from the implementation
%%              of arithmetic on SPARC.
%%              XXX: This code is seldom used, and hence also
%%                   seldom tested. 
%%                   Look here for strange bugs appearing when
%%                   turning on rtl_prop.
%%
%%  History  :	* 2002-10-23 Erik Stenman ([email protected]): Created.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

-module(hipe_rtl_arith_32).

-export([eval_alu/3, eval_alub/4, eval_cond/3, eval_cond_bits/5]).

-define(BITS, 32).
-define(SIGN_BIT, 31).
-define(WORDMASK,         16#ffffffff).
-define(MAX_SIGNED_INT,   16#7fffffff).
-define(MIN_SIGNED_INT,  -16#80000000).
-define(MAX_UNSIGNED_INT, 16#ffffffff).

-include("../main/hipe.hrl").    %% for ?EXIT

-include("hipe_rtl_arith.inc").