URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 157 |
Rev 223 |
.include "t-macros.i"
|
.include "t-macros.i"
|
|
|
start
|
start
|
|
|
;; The d10v implements negated addition for subtraction
|
;; The d10v implements negated addition for subtraction
|
|
|
.macro check_sub2w s x y r c v
|
.macro check_sub2w s x y r c v
|
|
|
;; clear carry
|
;; clear carry
|
ldi r6,#0x8004
|
ldi r6,#0x8004
|
mvtc r6,cr0
|
mvtc r6,cr0
|
|
|
;; load opnds
|
;; load opnds
|
ld2w r6, @(1f,r0)
|
ld2w r6, @(1f,r0)
|
ld2w r8, @(2f,r0)
|
ld2w r8, @(2f,r0)
|
.data
|
.data
|
1: .long \x
|
1: .long \x
|
2: .long \y
|
2: .long \y
|
.text
|
.text
|
|
|
;; subtract
|
;; subtract
|
SUB2W r6, r8
|
SUB2W r6, r8
|
|
|
;; verify result
|
;; verify result
|
ld2w r10, @(1f,r0)
|
ld2w r10, @(1f,r0)
|
.data
|
.data
|
1: .long \r
|
1: .long \r
|
.text
|
.text
|
cmpeq r6, r10
|
cmpeq r6, r10
|
brf0f 2f
|
brf0f 2f
|
cmpeq r7, r11
|
cmpeq r7, r11
|
brf0t 3f
|
brf0t 3f
|
2: ldi r4, 1
|
2: ldi r4, 1
|
ldi r0, \s
|
ldi r0, \s
|
trap 15
|
trap 15
|
3:
|
3:
|
|
|
;; verify carry
|
;; verify carry
|
mvfc r6, cr0
|
mvfc r6, cr0
|
and3 r6, r6, #1
|
and3 r6, r6, #1
|
cmpeqi r6, #\c
|
cmpeqi r6, #\c
|
brf0t 1f
|
brf0t 1f
|
ldi r4, 1
|
ldi r4, 1
|
ldi r0, \s
|
ldi r0, \s
|
trap 15
|
trap 15
|
1:
|
1:
|
.endm
|
.endm
|
|
|
check_sub2w 1 0x00000000 0x00000000 0x00000000 1 0
|
check_sub2w 1 0x00000000 0x00000000 0x00000000 1 0
|
check_sub2w 2 0x00000000 0x00000001 0xffffffff 0 0
|
check_sub2w 2 0x00000000 0x00000001 0xffffffff 0 0
|
check_sub2w 3 0x00000001 0x00000000 0x00000001 1 0
|
check_sub2w 3 0x00000001 0x00000000 0x00000001 1 0
|
check_sub2w 3 0x00000001 0x00000001 0x00000000 1 0
|
check_sub2w 3 0x00000001 0x00000001 0x00000000 1 0
|
check_sub2w 5 0x00000000 0x80000000 0x80000000 0 1
|
check_sub2w 5 0x00000000 0x80000000 0x80000000 0 1
|
check_sub2w 6 0x80000000 0x00000001 0x7fffffff 1 1
|
check_sub2w 6 0x80000000 0x00000001 0x7fffffff 1 1
|
check_sub2w 7 0x7fffffff 0x7fffffff 0x00000000 1 0
|
check_sub2w 7 0x7fffffff 0x7fffffff 0x00000000 1 0
|
|
|
exit0
|
exit0
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.