mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.8 KiB
80 lines
1.8 KiB
// TITLE("Floating Point Chopped Arithmetic")
|
|
//++
|
|
//
|
|
// Copyright (c) 1993 Digital Equipment Corporation
|
|
//
|
|
// Module Name:
|
|
//
|
|
// chopt.s
|
|
//
|
|
// Abstract:
|
|
//
|
|
// This module implements routines for performing floating point arithmetic
|
|
// using the chopped rounding mode. These can be used to replace instances
|
|
// where (e.g., NT/Mips) the global rounding mode is set to chopped. For
|
|
// Alpha, the dynamic rounding mode has no effect on floating point code
|
|
// emitted by the current compilers.
|
|
//
|
|
// Author:
|
|
//
|
|
// Thomas Van Baak (tvb) 22-Feb-1993
|
|
//
|
|
// Environment:
|
|
//
|
|
// Any mode.
|
|
//
|
|
// Revision History:
|
|
//
|
|
//--
|
|
|
|
#include "ksalpha.h"
|
|
|
|
SBTTL("Chopped Arithmetic")
|
|
|
|
//
|
|
// Add chopped with software completion.
|
|
//
|
|
|
|
LEAF_ENTRY(_addtc)
|
|
|
|
addtsuc f16, f17, f0 // add operands - chopped
|
|
trapb // wait for possible trap
|
|
ret zero, (ra) // return
|
|
|
|
.end _addtc
|
|
|
|
//
|
|
// Divide chopped with software completion.
|
|
//
|
|
|
|
LEAF_ENTRY(_divtc)
|
|
|
|
divtsuc f16, f17, f0 // divide operands - chopped
|
|
trapb // wait for possible trap
|
|
ret zero, (ra) // return
|
|
|
|
.end _divtc
|
|
|
|
//
|
|
// Multiply chopped with software completion.
|
|
//
|
|
|
|
LEAF_ENTRY(_multc)
|
|
|
|
multsuc f16, f17, f0 // multiply operands - chopped
|
|
trapb // wait for possible trap
|
|
ret zero, (ra) // return
|
|
|
|
.end _multc
|
|
|
|
//
|
|
// Subtract chopped with software completion.
|
|
//
|
|
|
|
LEAF_ENTRY(_subtc)
|
|
|
|
subtsuc f16, f17, f0 // subtract operands - chopped
|
|
trapb // wait for possible trap
|
|
ret zero, (ra) // return
|
|
|
|
.end _subtc
|