OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/tags/gdb/gdb-6.8/gdb-6.8.openrisc-2.1/sim/testsuite/sim/sh64/media
    from Rev 24 to Rev 33
    Reverse comparison

Rev 24 → Rev 33

/mpermw.cgs
0,0 → 1,51
# sh testcase for mperm.w $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
init:
pta wrong, tr0
movi 27, r1
movi 0x1020, r0
shlli r0, 8, r0
ori r0, 0x30, r0
shlli r0, 8, r0
ori r0, 0x40, r0
shlli r0, 8, r0
ori r0, 0x50, r0
shlli r0, 8, r0
ori r0, 0x60, r0
shlli r0, 8, r0
ori r0, 0x70, r0
shlli r0, 8, r0
ori r0, 0x80, r0
 
mpermw:
mperm.w r0, r1, r2
 
check:
# Expect 0x7080506030401020.
movi 0x7080, r0
shlli r0, 8, r0
ori r0, 0x50, r0
shlli r0, 8, r0
ori r0, 0x60, r0
shlli r0, 8, r0
ori r0, 0x30, r0
shlli r0, 8, r0
ori r0, 0x40, r0
shlli r0, 8, r0
ori r0, 0x10, r0
shlli r0, 8, r0
ori r0, 0x20, r0
 
bne r0, r2, tr0
 
okay:
pass
 
wrong:
fail
/fmuld.cgs
0,0 → 1,30
# sh testcase for fmul.d $drg, $drh, $drf -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
init:
pta wrong, tr0
 
fmuld1:
movi 2, r0
fmov.qd r0, dr0
float.qd dr0, dr0
movi 3, r1
fmov.qd r1, dr2
float.qd dr2, dr2
fmul.d dr0, dr2, dr4
movi 6, r2
fmov.qd r2, dr6
float.qd dr6, dr6
fcmpeq.d dr4, dr6, r7
bnei r7, 1, tr0
 
okay:
pass
 
wrong:
fail
/ldxq.cgs
0,0 → 1,28
# sh testcase for ldx.q $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
ldxq1:
movi 20, r3
shlli r3, 8, r3
movi 0, r4
ldx.q r3, r4, r0
 
ldxq2:
movi 20, r3
shlli r3, 8, r3
movi 8, r4
ldx.q r3, r4, r0
 
ldxq3:
movi 20, r3
shlli r3, 8, r3
movi -8, r4
ldx.q r3, r4, r0
 
okay:
pass
/xor.cgs
0,0 → 1,54
# sh testcase for xor $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
init:
pta wrong, tr0
 
xor1:
# 0 xor 0 = 0.
movi 0, r0
movi 0, r1
xor r0, r1, r2
bnei r2, 0, tr0
 
xor2:
# 0 xor 1 = 1.
movi 0, r0
movi 1, r1
xor r0, r1, r2
bnei r2, 1, tr0
 
xor3:
# 1 xor 0 = 1.
movi 1, r0
movi 0, r1
xor r0, r1, r2
bnei r2, 1, tr0
 
xor4:
# 1 xor 1 = 0.
movi 1, r0
movi 1, r1
xor r0, r1, r2
bnei r2, 0, tr0
 
xor5:
movi 1, r0
shlli r0, 63, r0
ori r0, 1, r0
movi 3, r1
xor r0, r1, r2
andi r2, 255, r2
bnei r2, 2, tr0
 
okay:
pass
 
wrong:
fail
/putcon.cgs
0,0 → 1,30
# sh testcase for putcon $rm, $crj -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
pta wrong, tr0
 
putcon1:
movi 22, r0
putcon r0, cr0
getcon cr0, r1
bne r0, r1, tr0
 
putcon2:
movi 12, r0
shlli r0, 35, r0
putcon r0, cr20
getcon cr20, r20
bne r0, r20, tr0
 
okay:
pass
 
wrong:
fail
/alloco.cgs
0,0 → 1,10
# sh testcase for alloco $rm, $disp6x32 -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
alloco r0, 32
pass
/ldl.cgs
0,0 → 1,21
# sh testcase for ld.l $rm, $disp10x4, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
init:
movi 20, r3
shlli r3, 8, r3
 
ldl1:
ld.l r3, 0, r0
ldl2:
ld.l r3, -4, r0
ldl3:
ld.l r3, 4, r0
 
okay:
pass
/ocbi.cgs
0,0 → 1,10
# sh testcase for ocbi $rm, $disp6x32 -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
ocbi r0, 0
pass
/fstp.cgs
0,0 → 1,14
# sh testcase for fst.p $rm, $disp10x8, $fpf -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
.global fstp
fstp:
fst.p r0, 0, fp0
 
pass
/shardl.cgs
0,0 → 1,45
# sh testcase for shard.l $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
pta wrong, tr0
 
shardl1:
movi 0x1020, r0
shlli r0, 8, r0
ori r0, 0x30, r0
shlli r0, 8, r0
ori r0, 0x40, r0
shlli r0, 8, r0
ori r0, 0x50, r0
shlli r0, 8, r0
ori r0, 0x60, r0
shlli r0, 8, r0
ori r0, 0x70, r0
shlli r0, 8, r0
ori r0, 0x80, r0
 
movi 1, r1
shard.l r0, r1, r0
shard.l r0, r1, r0
shard.l r0, r1, r0
shard.l r0, r1, r0
shard.l r0, r1, r0
shard.l r0, r1, r0
shard.l r0, r1, r0
shard.l r0, r1, r0
movi 20, r1
shard.l r0, r1, r0
bnei r0, 5, tr0
 
okay:
pass
 
wrong:
fail
/ftrcdl.cgs
0,0 → 1,26
# sh testcase for ftrc.dl $drgh, $frf -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
.global ftrcdl
init:
pta wrong, tr0
 
ftrcdl:
movi -9, r0
fmov.qd r0, dr0
float.qd dr0, dr0
ftrc.dl dr0, fr0
fmov.sl fr0, r1
bne r0, r1, tr0
 
okay:
pass
 
wrong:
fail
/ldxw.cgs
0,0 → 1,29
# sh testcase for ldx.w $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
ldxw1:
movi 20, r3
shlli r3, 8, r3
movi 0, r4
ldx.w r3, r4, r0
 
ldxw2:
movi 20, r3
shlli r3, 8, r3
movi 2, r4
ldx.w r3, r4, r0
 
ldxw3:
movi 20, r3
shlli r3, 8, r3
movi -2, r4
ldx.w r3, r4, r0
 
okay:
pass
/ldxub.cgs
0,0 → 1,28
# sh testcase for ldx.ub $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
ldxub1:
movi 20, r3
shlli r3, 8, r3
movi 0, r4
ldx.ub r3, r4, r0
 
ldxub2:
movi 20, r3
shlli r3, 8, r3
movi 1, r4
ldx.ub r3, r4, r0
 
ldxub3:
movi 20, r3
shlli r3, 8, r3
movi -1, r4
ldx.ub r3, r4, r0
 
okay:
pass
/mshflow.cgs
0,0 → 1,14
# sh testcase for mshflo.w $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
.global mshflow
mshflow:
mshflo.w r0, r0, r0
 
pass
/mextr1.cgs
0,0 → 1,67
# sh testcase for mextr1 $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
# Put a distinguised bit pattern in R0.
movi 0x1020, r0
shlli r0, 8, r0
ori r0, 0x30, r0
shlli r0, 8, r0
ori r0, 0x40, r0
shlli r0, 8, r0
ori r0, 0x50, r0
shlli r0, 8, r0
ori r0, 0x60, r0
shlli r0, 8, r0
ori r0, 0x70, r0
shlli r0, 8, r0
ori r0, 0x80, r0
 
# Put another distinguished bit pattern in R1.
movi 0x1525, r1
shlli r1, 8, r1
ori r1, 0x35, r1
shlli r1, 8, r1
ori r1, 0x45, r1
shlli r1, 8, r1
ori r1, 0x55, r1
shlli r1, 8, r1
ori r1, 0x65, r1
shlli r1, 8, r1
ori r1, 0x75, r1
shlli r1, 8, r1
ori r1, 0x85, r1
mextr1:
mextr1 r0, r1, r2
 
check:
# Put the result in R3.
movi 0x2535, r3
shlli r3, 8, r3
ori r3, 0x45, r3
shlli r3, 8, r3
ori r3, 0x55, r3
shlli r3, 8, r3
ori r3, 0x65, r3
shlli r3, 8, r3
ori r3, 0x75, r3
shlli r3, 8, r3
ori r3, 0x85, r3
shlli r3, 8, r3
ori r3, 0x10, r3
 
pta wrong, tr0
bne r2, r3, tr0
 
okay:
pass
 
wrong:
fail
/msubsub.cgs
0,0 → 1,14
# sh testcase for msubs.ub $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
.global msubsub
msubsub:
msubs.ub r0, r0, r0
 
pass
/xori.cgs
0,0 → 1,48
# sh testcase for xori $rm, $imm6, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
init:
pta wrong, tr0
 
xori1:
# 0 xor 0 = 0.
movi 0, r0
xori r0, 0, r2
bnei r2, 0, tr0
 
xori2:
# 0 xor 1 = 1.
movi 0, r0
xori r0, 1, r2
bnei r2, 1, tr0
 
xori3:
# 1 xor 0 = 1.
movi 1, r0
xori r0, 0, r2
bnei r2, 1, tr0
 
xori4:
# 1 xor 1 = 0.
movi 1, r0
xori r0, 1, r2
bnei r2, 0, tr0
 
xori5:
movi 1, r0
shlli r0, 63, r0
ori r0, 1, r0
xori r0, 3, r2
andi r2, 255, r2
bnei r2, 2, tr0
 
okay:
pass
 
wrong:
fail
/mextr3.cgs
0,0 → 1,67
# sh testcase for mextr3 $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
# Put a distinguised bit pattern in R0.
movi 0x1020, r0
shlli r0, 8, r0
ori r0, 0x30, r0
shlli r0, 8, r0
ori r0, 0x40, r0
shlli r0, 8, r0
ori r0, 0x50, r0
shlli r0, 8, r0
ori r0, 0x60, r0
shlli r0, 8, r0
ori r0, 0x70, r0
shlli r0, 8, r0
ori r0, 0x80, r0
 
# Put another distinguished bit pattern in R1.
movi 0x1525, r1
shlli r1, 8, r1
ori r1, 0x35, r1
shlli r1, 8, r1
ori r1, 0x45, r1
shlli r1, 8, r1
ori r1, 0x55, r1
shlli r1, 8, r1
ori r1, 0x65, r1
shlli r1, 8, r1
ori r1, 0x75, r1
shlli r1, 8, r1
ori r1, 0x85, r1
mextr3:
mextr3 r0, r1, r2
 
check:
# Put the result in R3.
movi 0x4555, r3
shlli r3, 8, r3
ori r3, 0x65, r3
shlli r3, 8, r3
ori r3, 0x75, r3
shlli r3, 8, r3
ori r3, 0x85, r3
shlli r3, 8, r3
ori r3, 0x10, r3
shlli r3, 8, r3
ori r3, 0x20, r3
shlli r3, 8, r3
ori r3, 0x30, r3
 
pta wrong, tr0
bne r2, r3, tr0
 
okay:
pass
 
wrong:
fail
/fsqrts.cgs
0,0 → 1,27
# sh testcase for fsqrt.s $frgh, $frf -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
init:
pta wrong, tr0
movi 9, r0
fmov.ls r0, fr7
float.ls fr7, fr0
movi 3, r1
fmov.ls r1, fr7
float.ls fr7, fr2
 
fsqrts:
fsqrt.s fr0, fr1
fcmpeq.s fr1, fr2, r7
bnei r7, 1, tr0
 
okay:
pass
 
wrong:
fail
/msubl.cgs
0,0 → 1,14
# sh testcase for msub.l $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
.global msubl
msubl:
msub.l r0, r0, r0
 
pass
/fiprs.cgs
0,0 → 1,42
# sh testcase for fipr.s $fvg, $fvh, $frf -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
.macro _load val, fpreg
# This macro clobbers r0.
movi \val, r0
fmov.ls r0, \fpreg
float.ls \fpreg, \fpreg
.endm
 
start
 
.global fiprs
init:
pta wrong, tr0
 
_load 1, fr0
_load 2, fr1
_load 3, fr2
_load 4, fr3
_load 1, fr4
_load 2, fr5
_load 3, fr6
_load 4, fr7
 
fiprs:
fipr.s fv0, fv4, fr9
 
check:
_load 30, fr10
fcmpeq.s fr9, fr10, r7
bnei r7, 1, tr0
 
okay:
pass
 
wrong:
fail
/mextr5.cgs
0,0 → 1,67
# sh testcase for mextr5 $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
# Put a distinguised bit pattern in R0.
movi 0x1020, r0
shlli r0, 8, r0
ori r0, 0x30, r0
shlli r0, 8, r0
ori r0, 0x40, r0
shlli r0, 8, r0
ori r0, 0x50, r0
shlli r0, 8, r0
ori r0, 0x60, r0
shlli r0, 8, r0
ori r0, 0x70, r0
shlli r0, 8, r0
ori r0, 0x80, r0
 
# Put another distinguished bit pattern in R1.
movi 0x1525, r1
shlli r1, 8, r1
ori r1, 0x35, r1
shlli r1, 8, r1
ori r1, 0x45, r1
shlli r1, 8, r1
ori r1, 0x55, r1
shlli r1, 8, r1
ori r1, 0x65, r1
shlli r1, 8, r1
ori r1, 0x75, r1
shlli r1, 8, r1
ori r1, 0x85, r1
mextr5:
mextr5 r0, r1, r2
 
check:
# Put the result in R3.
movi 0x6575, r3
shlli r3, 8, r3
ori r3, 0x85, r3
shlli r3, 8, r3
ori r3, 0x10, r3
shlli r3, 8, r3
ori r3, 0x20, r3
shlli r3, 8, r3
ori r3, 0x30, r3
shlli r3, 8, r3
ori r3, 0x40, r3
shlli r3, 8, r3
ori r3, 0x50, r3
 
pta wrong, tr0
bne r2, r3, tr0
 
okay:
pass
 
wrong:
fail
/ptb.cgs
0,0 → 1,29
# sh testcase for ptb$likely $disp16, $tra -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
ptb0:
ptb foo, tr0
ptb:
ptb/l bar, tr1
ptb2:
ptb/u baz, tr2
movi 0, r0
bnei r0, 1, tr2
fail
 
.mode SHcompact
 
foo:
bar:
baz:
trapa #253
trapa #254
trapa #254
trapa #254
trapa #254
/mmull.cgs
0,0 → 1,14
# sh testcase for mmul.l $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
.global mmull
mmull:
mmul.l r0, r0, r0
 
pass
/mextr7.cgs
0,0 → 1,67
# sh testcase for mextr7 $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
# Put a distinguised bit pattern in R0.
movi 0x1020, r0
shlli r0, 8, r0
ori r0, 0x30, r0
shlli r0, 8, r0
ori r0, 0x40, r0
shlli r0, 8, r0
ori r0, 0x50, r0
shlli r0, 8, r0
ori r0, 0x60, r0
shlli r0, 8, r0
ori r0, 0x70, r0
shlli r0, 8, r0
ori r0, 0x80, r0
 
# Put another distinguished bit pattern in R1.
movi 0x1525, r1
shlli r1, 8, r1
ori r1, 0x35, r1
shlli r1, 8, r1
ori r1, 0x45, r1
shlli r1, 8, r1
ori r1, 0x55, r1
shlli r1, 8, r1
ori r1, 0x65, r1
shlli r1, 8, r1
ori r1, 0x75, r1
shlli r1, 8, r1
ori r1, 0x85, r1
mextr7:
mextr7 r0, r1, r2
 
check:
# Put the result in R3.
movi 0x8510, r3
shlli r3, 8, r3
ori r3, 0x20, r3
shlli r3, 8, r3
ori r3, 0x30, r3
shlli r3, 8, r3
ori r3, 0x40, r3
shlli r3, 8, r3
ori r3, 0x50, r3
shlli r3, 8, r3
ori r3, 0x60, r3
shlli r3, 8, r3
ori r3, 0x70, r3
 
pta wrong, tr0
bne r2, r3, tr0
 
okay:
pass
 
wrong:
fail
/fstxd.cgs
0,0 → 1,31
# sh testcase for fstx.d $rm, $rn, $drf -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
.global fstxd
fstxd:
movi 0x1020, r0
shlli r0, 8, r0
ori r0, 0x30, r0
shlli r0, 8, r0
ori r0, 0x40, r0
shlli r0, 8, r0
ori r0, 0x50, r0
shlli r0, 8, r0
ori r0, 0x60, r0
shlli r0, 8, r0
ori r0, 0x70, r0
shlli r0, 8, r0
ori r0, 0x80, r0
fmov.qd r0, dr0
movi 0x2800, r1
movi -8, r2
fstx.d r1, r2, dr0
 
okay:
pass
/sthiq.cgs
0,0 → 1,79
# sh testcase for sthi.q $rm, $disp6, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
pta wrong, tr0
 
movi 40, r0
shlli r0, 8, r0
movi 0x1020, r1
shlli r1, 8, r1
addi r1, 0x30, r1
shlli r1, 8, r1
addi r1, 0x40, r1
shlli r1, 8, r1
addi r1, 0x50, r1
shlli r1, 8, r1
addi r1, 0x60, r1
shlli r1, 8, r1
addi r1, 0x70, r1
shlli r1, 8, r1
addi r1, 0x80, r1
 
sthiq1:
sthi.q r0, 0, r1
 
sthiq2:
sthi.q r0, 1, r1
 
sthiq3:
sthi.q r0, 2, r1
 
sthiq4:
sthi.q r0, 3, r1
 
sthiq5:
sthi.q r0, 4, r1
 
sthiq6:
sthi.q r0, 5, r1
 
sthiq7:
sthi.q r0, 6, r1
 
sthiq8:
sthi.q r0, 7, r1
 
sthiq9:
sthi.q r0, -1, r1
 
sthiq10:
sthi.q r0, -2, r1
 
sthiq11:
sthi.q r0, -3, r1
 
sthiq12:
sthi.q r0, -4, r1
 
sthiq13:
sthi.q r0, -5, r1
 
sthiq14:
sthi.q r0, -6, r1
 
sthiq15:
sthi.q r0, -7, r1
 
okay:
pass
 
wrong:
fail
/rte.cgs
0,0 → 1,11
# sh testcase for rte -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
# Unimplemented.
rte
pass
/fabss.cgs
0,0 → 1,39
# sh testcase for fabs.s $frgh, $frf -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
init:
pta wrong, tr0
movi 0, r0
movi 1, r1
 
fabs0:
# Ensure fabs(-1) = 1.
fmov.ls r0, fr7
float.ls fr7, fr0
fmov.ls r1, fr7
float.ls fr7, fr1
fsub.s fr0, fr1, fr2
fabs.s fr2, fr3
fcmpeq.s fr3, fr1, r7
bnei r7, 1, tr0
 
fabs1:
# Ensure fabs(1) = 1.
fmov.ls r0, fr7
float.ls fr7, fr0
fmov.ls r1, fr7
float.ls fr7, fr1
fabs.s fr1, fr2
fcmpeq.s fr1, fr2, r7
bnei r7, 1, tr0
 
okay:
pass
 
wrong:
fail
/addzl.cgs
0,0 → 1,39
# sh testcase for addz.l $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
init:
pta wrong, tr0
 
addzl1:
movi 1, r0
movi 2, r1
addz.l r0, r1, r2
bnei r2, 3, tr0
 
addzl2:
movi 1, r0
shlli r0, 32, r0
addi r0, 2, r0
movi 1, r1
shlli r1, 32, r1
addi r1, 2, r1
addz.l r0, r1, r2
bnei r2, 4, tr0
 
addzl3:
movi 1, r0
shlli r0, 31, r0
addi r0, 2, r0
movi 2, r1
addz.l r0, r1, r2
okay:
pass
 
wrong:
fail
/floatls.cgs
0,0 → 1,12
# sh testcase for float.ls $frgh, $frf -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
movi 1, r0
fmov.ls r0, fr0
float.ls fr0, fr0
pass
/mcnvswub.cgs
0,0 → 1,14
# sh testcase for mcnvs.wub $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
.global mcnvswub
mcnvswub:
mcnvs.wub r0, r0, r0
 
pass
/fstxp.cgs
0,0 → 1,14
# sh testcase for fstx.p $rm, $rn, $fpf -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
.global fstxp
fstxp:
fstx.p r0, r0, fp0
 
pass
/prefi.cgs
0,0 → 1,10
# sh testcase for prefi $rm, $disp6x32 -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
prefi r0, 0
pass
/fmovsl.cgs
0,0 → 1,21
# sh testcase for fmov.sl $frgh, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
fmovsl:
pta wrong, tr0
movi 9, r0
fmov.ls r0, fr0
fmov.sl fr0, r1
bne r0, r1, tr0
 
okay:
pass
 
wrong:
fail
/mabsw.cgs
0,0 → 1,38
# sh testcase for mabs.w $rm, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
pta wrong, tr0
 
mabsw1:
# Pack { 1 3 5 7 } into R0.
_packw 1, 3, 5, 7, r0
 
mabs.l r0, r1
 
# Test for { 1 3 5 7 } in R0.
_packw 1, 3, 5, 7, r2
bne r0, r2, tr0
 
mabsw2:
# Pack { -1, -1, -1, -1 } into R0.
_packw 1, 1, 1, 1, r0
 
# Set the left sign bit
movi 1, r1
shlli r1, 63, r1
or r0, r1, r0
 
mabs.w r0, r2
 
okay:
pass
 
wrong:
fail
/cmpgt.cgs
0,0 → 1,43
# sh testcase for cmpgt $rm, $rn, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
pta wrong, tr0
movi 0, r0
movi 1, r1
movi 2, r2
movi 2, r3
movi 3, r4
 
cmpgt1:
cmpgt r2, r2, r7
bne r7, r0, tr0
 
cmpgt2:
cmpgt r2, r3, r7
bne r7, r0, tr0
 
cmpgt3:
cmpgt r4, r2, r7
bne r7, r1, tr0
 
cmpgt4:
movi 1, r2
shlli r2, 63, r2
movi 1, r3
shlli r3, 63, r3
addi r3, 1, r3
cmpgt r3, r2, r7
bne r7, r1, tr0
 
okay:
pass
 
wrong:
fail
/fcmpuns.cgs
0,0 → 1,26
# sh testcase for fcmpun.s $frg, $frh, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
init:
pta wrong, tr0
 
fcmpuns:
movi 0, r0
movi 1, r1
fmov.ls r0, fr0
float.ls fr0, fr0
fmov.ls r1, fr1
float.ls fr1, fr1
fcmpun.s fr0, fr1, r7
bnei r7, 0, tr0
 
okay:
pass
 
wrong:
fail
/lduw.cgs
0,0 → 1,22
# sh testcase for ld.uw $rm, $disp10, $rd -*- Asm -*-
# mach: all
# as: -isa=shmedia
# ld: -m shelf64
 
.include "media/testutils.inc"
 
start
 
init:
movi 20, r3
shlli r3, 8, r3
 
lduw1:
ld.uw r3, 0, r0
lduw2:
ld.uw r3, -2, r0
lduw3:
ld.uw r3, 2, r0
 
okay:
pass
/ChangeLog
0,0 → 1,102
2001-01-09 Ben Elliston <bje@redhat.com>
 
* nsb.cgs: Test consecutive bits of zeros as well as ones.
* ptb.cgs: Clean up.
 
2001-01-08 Ben Elliston <bje@redhat.com>
 
* fcmpund.cgs, fcmpuns.cgs: Complete test cases.
* fcnvds.cgs, fcnvsd.cgs, fgetscr.cgs, fiprs.cgs: Ditto.
* floatld.cgs, floatls.cgs, floatqd.cgs, floatqs.cgs: Ditto.
* fmuld.cgs, fmuls.cgs, fputscr.cgs, fstxp.cgs: Ditto.
* fsubd.cgs, fsubs.cgs, ftrcdl.cgs, ftrcdq.cgs: Ditto.
* ftrcsl.cgs, ftrcsq.cgs, ftrvs.cgs: Ditto.
* ldhil.cgs, ldhiq.cgs, ldlol.cgs, ldloq.cgs: Ditto.
* mabsl.cgs, mabsw.cgs, maddl.cgs, maddsl.cgs: Ditto.
* maddsub.cgs, maddsw.cgs, maddw.cgs: Ditto.
* mcmpeqb.cgs, mcmpeql.cgs, mcmpeqw.cgs: Ditto.
* mcmpgtl.cgs, mcmpgtub.cgs, mcmpgtw.cgs: Ditto.
* mcmv.cgs, mcnvslw.cgs, mcnvswb.cgs, mcnvswub.cgs: Ditto.
* mmacfxwl.cgs, mmacnfx-wl.cgs: Ditto.
* mmulfxl.cgs, mmulfxrpw.cgs, mmulfxw.cgs: Ditto.
* mmulhiwl.cgs, mmull.cgs, mmullowl.cgs: Ditto.
* mmulsumwq.cgs, mmulw.cgs, movi.cgs: Ditto.
* mpermw.cgs, msadubq.cgs: Ditto.
* mshaldsl.cgs, mshaldsw.cgs: Ditto.
* mshardl.cgs, mshardsq.cgs, mshardw.cgs: Ditto.
* mshfhib.cgs, mshfhil.cgs, mshfhiw.cgs: Ditto.
* mshflob.cgs, mshflol.cgs, mshflow.cgs: Ditto.
* mshlldl.cgs, mshlldw.cgs, mshlrdl.cgs: Ditto.
* mshlrdw.cgs, msubl.cgs, msubsl.cgs: Ditto.
* msubsub.cgs, msubsw.cgs, msubw.cgs: Ditto.
* mulsl.cgs, mulul.cgs: Ditto.
* ptabs.cgs, ptb.cgs, ptrel.cgs: Ditto.
* shard.cgs, shardl.cgs, shari.cgs, sharil.cgs: Ditto.
* shlld.cgs, shlldl.cgs, shlli.cgs, shllil.cgs: Ditto.
* shlrd.cgs, shlrdl.cgs, shlri.cgs, shlril.cgs: Ditto.
* sthil.cgs, sthiq.cgs, swapq.cgs, trapa.cgs: Ditto.
 
* testutils.inc (pass): Pass correct "syscall" number.
(fail): Ditto.
 
2000-12-13 Ben Elliston <bje@redhat.com>
 
* sub.cgs, subl.cgs: Complete test cases.
* ptrel.cgs: Likewise.
 
* shori.cgs: Test for zero extension of immediate operand.
* fcmpged.cgs, fcmpges.cgs, fldd.cgs: Complete test cases.
* fldp.cgs, flds.cgs, fldxd.cgs, fldxp.cgs: Likewise.
* fldxs.cgs, fmacs.cgs, fnegd.cgs, fnegs.cgs: Likewise.
* fsqrtd.cgs, fsqrts.cgs, fstd.cgs, fstp.cgs: Likewise.
* fsts.cgs, fstxd.cgs, fstxs.cgs: Likewise.
 
2000-12-12 Ben Elliston <bje@redhat.com>
 
* testutils.inc (pass): Use simple syscall mechanism.
(fail): Likewise.
(_packb, _packw, _packl): New macros for packing slices.
 
* stb.cgs, stq.cgs, stxb.cgs, stxq.cgs: Complete test cases.
* stl.cgs, stw.cgs, stxl.cgs, stxw.cgs: Likewise.
* ldl.cgs, ldq.cgs, ldub.cgs, lduw.cgs, ldw.cgs: Likewise.
* ldxb.cgs, ldxl.cgs, ldxq.cgs, ldxub.cgs: Likewise.
* ldxuw.cgs, ldxw.cgs, nsb.cgs, trapa.cgs: Likewise.
 
* fcmpeqd.cgs, fcmpeqs.cgs, fcmpgtd.cgs: Complete test cases.
* fcmpgts.cgs, fdivd.cgs, fdivs.cgs, fmovd.cgs: Likewise.
* fmovdq.cgs, fmovqd.cgs, fmovls.cgs, fmovs.cgs: Likewise.
* fmovsl.cgs: Likewise.
 
2000-12-11 Ben Elliston <bje@redhat.com>
 
* fabss.cgs, fabsd.cgs, fadds.cgs, faddd.cgs: Complete test cases.
* getcfg.cgs, getcon.cgs, gettr.cgs, icbi.cgs: Likewise.
* prefi.cgs, pta.cgs, ptabs.cgs, ptb.cgs: Likewise.
* putcon.cgs, putcfg.cgs, rte.cgs: Likewise.
 
* add.cgs, addi.cgs, addl.cgs, addil.cgs: Complete test cases.
* addl.cgs, addzl.cgs, alloco.cgs, and.cgs, andc.cgs: Likewise.
* andi.cgs, beq.cgs, beqi.cgs, bge.cgs, bgeu.cgs: Likewise.
* bgt.cgs, bgtu.cgs, blink.cgs, bne.cgs, bnei.cgs: Likewise.
* brk.cgs, byterev.cgs, cmpeq.cgs, cmpgt.cgs: Likewise.
* cmpgtu.cgs, cmveq.cgs, cmvne.cgs: Likewise.
 
2000-12-07 Ben Elliston <bje@redhat.com>
 
* mextr1.cgs, mextr2.cgs, mextr3.cgs: Complete test cases.
* mextr4.cgs, mextr5.cgs, mextr6.cgs, mextr7.cgs: Likewise.
 
2000-12-05 Ben Elliston <bje@redhat.com>
 
* nop.cgs, ocbi.cgs, ocbp.cgs, ocbwb.cgs: Complete test cases.
* or.cgs, ori.cgs, xor.cgs, xori.cgs: Ditto.
* sleep.cgs, synci.cgs, synco.cgs: Ditto.
 
2000-11-22 Ben Elliston <bje@redhat.com>
 
* *.cgs: Include "media/testutils.inc", not "testutils.inc" as
generated test cases do. Miscellaneous fixes.
 
* testutils.inc: New file.
* *.cgs: Generate test cases.
ChangeLog Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: mcmpgtub.cgs =================================================================== --- mcmpgtub.cgs (nonexistent) +++ mcmpgtub.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mcmpgt.ub $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mcmpgtub +mcmpgtub: + mcmpgt.ub r0, r0, r0 + + pass Index: mcmpgtw.cgs =================================================================== --- mcmpgtw.cgs (nonexistent) +++ mcmpgtw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mcmpgt.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mcmpgtw +mcmpgtw: + mcmpgt.w r0, r0, r0 + + pass Index: shlri.cgs =================================================================== --- shlri.cgs (nonexistent) +++ shlri.cgs (revision 33) @@ -0,0 +1,28 @@ +# sh testcase for shlri $rm, $imm, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +shlri1: + movi 128, r0 + shlri r0, 3, r2 + bnei r2, 16, tr0 + +shlri2: + movi -4, r0 + shlri r0, 2, r2 + addi r2, 1, r2 + beqi r2, 0, tr0 + +okay: + pass + +wrong: + fail Index: fadds.cgs =================================================================== --- fadds.cgs (nonexistent) +++ fadds.cgs (revision 33) @@ -0,0 +1,34 @@ +# sh testcase for fadd.s $frg, $frh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global fadds +init: + pta wrong, tr0 + movi 2, r0 + movi 3, r1 + +fadd0: + # Add 2 and 3. + fmov.ls r0, fr7 + float.ls fr7, fr0 + fmov.ls r1, fr7 + float.ls fr7, fr1 + fadd.s fr0, fr1, fr2 + # Check to make sure we got 5. + movi 5, r2 + fmov.ls r2, fr7 + float.ls fr7, fr3 + fcmpeq.s fr2, fr3, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: mshaldsw.cgs =================================================================== --- mshaldsw.cgs (nonexistent) +++ mshaldsw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshalds.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshaldsw +mshaldsw: + mshalds.w r0, r0, r0 + + pass Index: sharil.cgs =================================================================== --- sharil.cgs (nonexistent) +++ sharil.cgs (revision 33) @@ -0,0 +1,45 @@ +# sh testcase for shari.l $rm, $imm6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +sharil1: + movi 0x1020, r0 + shlli r0, 8, r0 + ori r0, 0x30, r0 + shlli r0, 8, r0 + ori r0, 0x40, r0 + shlli r0, 8, r0 + ori r0, 0x50, r0 + shlli r0, 8, r0 + ori r0, 0x60, r0 + shlli r0, 8, r0 + ori r0, 0x70, r0 + shlli r0, 8, r0 + ori r0, 0x80, r0 + + movi 1, r1 + shari.l r0, 1, r0 + shari.l r0, 1, r0 + shari.l r0, 1, r0 + shari.l r0, 1, r0 + shari.l r0, 1, r0 + shari.l r0, 1, r0 + shari.l r0, 1, r0 + shari.l r0, 1, r0 + shari.l r0, 20, r0 + bnei r0, 5, tr0 + +okay: + pass + +wrong: + fail + Index: shlldl.cgs =================================================================== --- shlldl.cgs (nonexistent) +++ shlldl.cgs (revision 33) @@ -0,0 +1,34 @@ +# sh testcase for shlld.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +shlldl1: + movi 1, r0 + shlli r0, 32, r0 + ori r0, 1, r0 + movi 1, r1 + shlli r1, 7, r1 + ori r1, 3, r1 + + shlld.l r0, r1, r2 + +check1: + bnei r2, 8, tr0 + +shlldl2: + movi 1, r0 + movi 31, r1 + shlld.l r0, r1, r2 + +okay: + pass + +wrong: + fail Index: fcnvsd.cgs =================================================================== --- fcnvsd.cgs (nonexistent) +++ fcnvsd.cgs (revision 33) @@ -0,0 +1,27 @@ +# sh testcase for fcnv.sd $frgh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +fcnvsd: + movi 9, r0 + fmov.ls r0, fr0 + float.ls fr0, fr0 + fcnv.sd fr0, dr2 + movi 9, r0 + fmov.qd r0, dr4 + float.qd dr4, dr4 + fcmpeq.d dr2, dr4, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: mcmpeqb.cgs =================================================================== --- mcmpeqb.cgs (nonexistent) +++ mcmpeqb.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mcmpeq.b $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mcmpeqb +mcmpeqb: + mcmpeq.b r0, r0, r0 + + pass Index: mmulfxl.cgs =================================================================== --- mmulfxl.cgs (nonexistent) +++ mmulfxl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mmulfx.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mmulfxl +mmulfxl: + mmulfx.l r0, r0, r0 + + pass Index: synci.cgs =================================================================== --- synci.cgs (nonexistent) +++ synci.cgs (revision 33) @@ -0,0 +1,10 @@ +# sh testcase for synci -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + synci + pass Index: flds.cgs =================================================================== --- flds.cgs (nonexistent) +++ flds.cgs (revision 33) @@ -0,0 +1,13 @@ +# sh testcase for fld.s $rm, $disp10x4, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + movi 0x2800, r0 + fld.s r0, 0, fr0 + fld.s r0, 4, fr0 + fld.s r0, -4, fr0 + pass Index: synco.cgs =================================================================== --- synco.cgs (nonexistent) +++ synco.cgs (revision 33) @@ -0,0 +1,10 @@ +# sh testcase for synco -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + synco + pass Index: maddw.cgs =================================================================== --- maddw.cgs (nonexistent) +++ maddw.cgs (revision 33) @@ -0,0 +1,29 @@ +# sh testcase for madd.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +maddw: + # Load { 1 2 3 4 } into R0. + _packw 1, 2, 3, 4, r0 + + # Load { 3 4 5 6 } into R1. + _packw 3, 4, 5, 6, r1 + + # Add slices to produce { 4 6 8 10 }. + madd.w r0, r1, r2 + + _packw 4, 6, 8, 10, r3 + bne r2, r3, tr0 + +okay: + pass + +wrong: + fail Index: fmovdq.cgs =================================================================== --- fmovdq.cgs (nonexistent) +++ fmovdq.cgs (revision 33) @@ -0,0 +1,23 @@ +# sh testcase for fmov.dq $drgh, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +fmovdq: + movi 4, r0 + fmov.qd r0, dr0 + fmov.dq dr0, r1 + bne r0, r1, tr0 + +okay: + pass + +wrong: + fail Index: fgetscr.cgs =================================================================== --- fgetscr.cgs (nonexistent) +++ fgetscr.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for fgetscr $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global fgetscr +fgetscr: + fgetscr fr0 + + pass Index: mcmpeql.cgs =================================================================== --- mcmpeql.cgs (nonexistent) +++ mcmpeql.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mcmpeq.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mcmpeql +mcmpeql: + mcmpeq.l r0, r0, r0 + + pass Index: stxq.cgs =================================================================== --- stxq.cgs (nonexistent) +++ stxq.cgs (revision 33) @@ -0,0 +1,29 @@ +# sh testcase for stx.q $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + movi -1, r7 + xori r7, 13, r7 + movi 40, r0 + shlli r0, 8, r0 + +stxq1: + movi 0, r1 + stx.q r0, r1, r7 + +stxq2: + movi 8, r1 + stx.q r0, r1, r7 + +stxq3: + movi -8, r1 + stx.q r0, r1, r7 + +okay: + pass Index: fnegs.cgs =================================================================== --- fnegs.cgs (nonexistent) +++ fnegs.cgs (revision 33) @@ -0,0 +1,35 @@ +# sh testcase for fneg.s $frgh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + movi 0, r0 + movi 1, r1 + +fnegs0: + # Ensure fnegs(0) = 0. + fmov.ls r0, fr7 + float.ls fr7, fr0 + fneg.s fr0, fr1 + fcmpeq.s fr0, fr1, r7 + bnei r7, 1, tr0 + +fnegs1: + # Ensure fnegs(fnegs(1)) = 1. + fmov.ls r1, fr7 + float.ls fr7, fr0 + fneg.s fr0, fr1 + fneg.s fr1, fr2 + fcmpeq.s fr0, fr2, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: addl.cgs =================================================================== --- addl.cgs (nonexistent) +++ addl.cgs (revision 33) @@ -0,0 +1,61 @@ +# sh testcase for add.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global addl +init: + pta wrong, tr0 + +addl0: + movi 1, r63 + add.l r63, r63, r1 + bnei r1, 0, tr0 + +addl1: + movi 10, r0 + movi 0, r1 + add.l r0, r1, r3 + movi 10, r4 + bne r3, r4, tr0 + +addl2: + movi 0, r0 + movi 10, r1 + add.l r0, r1, r2 + movi 10, r3 + bne r2, r3, tr0 + +addl3: + movi 10, r0 + add.l r63, r0, r1 + movi 10, r2 + bne r1, r2, tr0 + +addl4: + movi 10, r0 + add.l r0, r63, r1 + movi 10, r2 + bne r1, r2, tr0 + +addl5: + # Ensure top 32-bits are discarded when adding. + movi 10, r0 + shlli r0, 32, r0 + addi r0, 10, r0 + movi 10, r1 + shlli r1, 32, r1 + addi r1, 10, r1 + add.l r0, r1, r2 + movi 20, r3 + bne r2, r3, tr0 + +okay: + pass + +wrong: + fail Index: bne.cgs =================================================================== --- bne.cgs (nonexistent) +++ bne.cgs (revision 33) @@ -0,0 +1,23 @@ +# sh testcase for bne$likely $rm, $rn, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + movi 1, r0 + pta wrong, tr0 + pta okay, tr1 + +bne1: + bne r63, r63, tr0 +bne2: + bne r0, r63, tr1 +bad: + fail +okay: + pass +wrong: + fail Index: mshardw.cgs =================================================================== --- mshardw.cgs (nonexistent) +++ mshardw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshard.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshardw +mshardw: + mshard.w r0, r0, r0 + + pass Index: stxw.cgs =================================================================== --- stxw.cgs (nonexistent) +++ stxw.cgs (revision 33) @@ -0,0 +1,29 @@ +# sh testcase for stx.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + movi -1, r7 + xori r7, 13, r7 + movi 40, r0 + shlli r0, 8, r0 + +stxw1: + movi 0, r1 + stx.w r0, r1, r7 + +stxw2: + movi 2, r1 + stx.w r0, r1, r7 + +stxw3: + movi -2, r1 + stx.w r0, r1, r7 + +okay: + pass Index: mshfhiw.cgs =================================================================== --- mshfhiw.cgs (nonexistent) +++ mshfhiw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshfhi.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshfhiw +mshfhiw: + mshfhi.w r0, r0, r0 + + pass Index: msubsl.cgs =================================================================== --- msubsl.cgs (nonexistent) +++ msubsl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for msubs.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global msubsl +msubsl: + msubs.l r0, r0, r0 + + pass Index: andc.cgs =================================================================== --- andc.cgs (nonexistent) +++ andc.cgs (revision 33) @@ -0,0 +1,50 @@ +# sh testcase for andc $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +andc1: + # X . !X = 0. + movi 3, r0 + movi 3, r1 + andc r0, r1, r2 + bnei r2, 0, tr0 + +andc2: + # X . 0 = X. + movi 3, r0 + movi 0, r1 + andc r0, r1, r2 + bnei r2, 3, tr0 + +andc3: + # wide X . 0 = wide X. + movi 0x1020, r0 + shlli r0, 8, r0 + ori r0, 0x30, r0 + shlli r0, 8, r0 + ori r0, 0x40, r0 + shlli r0, 8, r0 + ori r0, 0x50, r0 + shlli r0, 8, r0 + ori r0, 0x60, r0 + shlli r0, 8, r0 + ori r0, 0x70, r0 + shlli r0, 8, r0 + ori r0, 0x80, r0 + movi 0, r1 + andc r0, r1, r2 + bne r0, r2, tr0 + +okay: + pass + +wrong: + fail Index: fmovls.cgs =================================================================== --- fmovls.cgs (nonexistent) +++ fmovls.cgs (revision 33) @@ -0,0 +1,26 @@ +# sh testcase for fmov.ls $rm, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +fmovls0: + movi 0, r0 + fmov.ls r0, fr0 + +fmovls1: + movi 1, r1 + fmov.ls r1, fr1 + +upper: + movi 1, r2 + shlli r2, 63, r2 + ori r2, 3, r2 + # Bit 63 should be ignored. + fmov.ls r2, fr2 + +okay: + pass Index: ldlol.cgs =================================================================== --- ldlol.cgs (nonexistent) +++ ldlol.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for ldlo.l $rm, $disp6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global ldlol +ldlol: + ldlo.l r0, 0, r0 + + pass Index: floatqs.cgs =================================================================== --- floatqs.cgs (nonexistent) +++ floatqs.cgs (revision 33) @@ -0,0 +1,12 @@ +# sh testcase for float.qs $drgh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + movi 1, r0 + fmov.qd r0, dr0 + float.qs dr0, fr1 + pass Index: andi.cgs =================================================================== --- andi.cgs (nonexistent) +++ andi.cgs (revision 33) @@ -0,0 +1,46 @@ +# sh testcase for andi $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +andi0: + # 0 and 0 is 0. + movi 0, r0 + andi r0, 0, r2 + bnei r2, 0, tr0 + +and1: + # 0 and 1 is 0. + movi 0, r0 + andi r0, 1, r2 + bnei r2, 0, tr0 + +and2: + # 1 and 0 is 0. + movi 1, r0 + andi r0, 0, r2 + bnei r2, 0, tr0 + +and3: + # 1 and 1 is 1. + movi 1, r0 + andi r0, 1, r2 + bnei r2, 1, tr0 + +and4: + movi 15, r0 + andi r0, 3, r2 + bnei r2, 3, tr0 + +okay: + pass + +wrong: + fail Index: maddsw.cgs =================================================================== --- maddsw.cgs (nonexistent) +++ maddsw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for madds.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global maddsw +maddsw: + madds.w r0, r0, r0 + + pass Index: fcnvds.cgs =================================================================== --- fcnvds.cgs (nonexistent) +++ fcnvds.cgs (revision 33) @@ -0,0 +1,27 @@ +# sh testcase for fcnv.ds $drgh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +fcnvds: + movi 9, r0 + fmov.qd r0, dr0 + float.qd dr0, dr0 + fcnv.ds dr0, fr3 + movi 9, r0 + fmov.ls r0, fr4 + float.ls fr4, fr4 + fcmpeq.s fr3, fr4, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: gettr.cgs =================================================================== --- gettr.cgs (nonexistent) +++ gettr.cgs (revision 33) @@ -0,0 +1,48 @@ +# sh testcase for gettr $trb, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + # tr0 is reserved. + # don't use it anywhere else in this test. + pta wrong, tr0 + +gettr1: + # Put garbage in r1, r2. + movi 20, r1 + movi 30, r2 + + pta foo, tr1 + pta foo, tr2 + +check1: + gettr tr1, r1 + gettr tr2, r2 + bne r1, r2, tr0 + +gettr2: + # Put garbage in r3, r4. + movi 21, r3 + movi 42, r4 + +check2: + pta foo, tr1 + gettr tr1, r2 + ptabs r2, tr2 + gettr tr2, r3 + ptabs r3, tr3 + gettr tr3, r4 + bne r2, r4, tr0 + +okay: + pass + +wrong: + fail + +foo: + nop Index: shllil.cgs =================================================================== --- shllil.cgs (nonexistent) +++ shllil.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for shlli.l $rm, $imm6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global shllil +shllil: + shlli.l r0, 0, r0 + + pass Index: stb.cgs =================================================================== --- stb.cgs (nonexistent) +++ stb.cgs (revision 33) @@ -0,0 +1,26 @@ +# sh testcase for st.b $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + movi -1, r7 + xori r7, 13, r7 + movi 40, r0 + shlli r0, 8, r0 + +stb1: + st.b r0, 0, r7 + +stb2: + st.b r0, 1, r7 + +stb3: + st.b r0, -1, r7 + +okay: + pass Index: fmovs.cgs =================================================================== --- fmovs.cgs (nonexistent) +++ fmovs.cgs (revision 33) @@ -0,0 +1,24 @@ +# sh testcase for fmov.s $frgh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +fmovs: + movi 8, r0 + fmov.ls r0, fr7 + float.ls fr7, fr0 + fmov.s fr0, fr1 + fcmpeq.s fr0, fr1, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: fdivd.cgs =================================================================== --- fdivd.cgs (nonexistent) +++ fdivd.cgs (revision 33) @@ -0,0 +1,39 @@ +# sh testcase for fdiv.d $drg, $drh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +fdivd1: + movi 1, r0 + fmov.qd r0, dr0 + float.qd dr0, dr0 + movi 2, r1 + fmov.qd r1, dr2 + float.qd dr2, dr2 + fdiv.d dr0, dr2, dr4 + +fdvid2: + movi 6, r0 + fmov.qd r0, dr0 + float.qd dr0, dr0 + movi 2, r1 + fmov.qd r1, dr2 + float.qd dr2, dr2 + fdiv.d dr0, dr2, dr4 + movi 3, r3 + fmov.qd r3, dr6 + float.qd dr6, dr6 + fcmpeq.d dr4, dr6, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: stlol.cgs =================================================================== --- stlol.cgs (nonexistent) +++ stlol.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for stlo.l $rm, $disp6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global stlol +stlol: + stlo.l r0, 0, r0 + + pass Index: shard.cgs =================================================================== --- shard.cgs (nonexistent) +++ shard.cgs (revision 33) @@ -0,0 +1,30 @@ +# sh testcase for shard $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +shard1: + movi 128, r0 + movi 3, r1 + shard r0, r1, r2 + bnei r2, 16, tr0 + +shard2: + movi -4, r0 + movi 2, r1 + shard r0, r1, r2 + addi r2, 1, r2 + bnei r2, 0, tr0 + +okay: + pass + +wrong: + fail Index: mmulfxrpw.cgs =================================================================== --- mmulfxrpw.cgs (nonexistent) +++ mmulfxrpw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mmulfxrp.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mmulfxrpw +mmulfxrpw: + mmulfxrp.w r0, r0, r0 + + pass Index: stl.cgs =================================================================== --- stl.cgs (nonexistent) +++ stl.cgs (revision 33) @@ -0,0 +1,26 @@ +# sh testcase for st.l $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + movi -1, r7 + xori r7, 13, r7 + movi 40, r0 + shlli r0, 8, r0 + +stl1: + st.l r0, 0, r7 + +stl2: + st.l r0, 4, r7 + +stl3: + st.l r0, -4, r7 + +okay: + pass Index: fcmpgts.cgs =================================================================== --- fcmpgts.cgs (nonexistent) +++ fcmpgts.cgs (revision 33) @@ -0,0 +1,36 @@ +# sh testcase for fcmpgt.s $frg, $frh, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +fcmpgt1: + movi 2, r0 + fmov.ls r0, fr0 + movi 1, r1 + fmov.ls r1, fr1 + float.ls fr0, fr2 + float.ls fr1, fr3 + fcmpgt.s fr2, fr3, r7 + bnei r7, 1, tr0 + +fcmpgt2: + movi 1, r0 + fmov.ls r0, fr0 + fmov.ls r0, fr1 + float.ls fr0, fr2 + float.ls fr1, fr3 + fcmpgt.s fr2, fr3, r7 + bnei r7, 0, tr0 + +okay: + pass + +wrong: + fail Index: fcmpged.cgs =================================================================== --- fcmpged.cgs (nonexistent) +++ fcmpged.cgs (revision 33) @@ -0,0 +1,46 @@ +# sh testcase for fcmpge.d $drg, $drh, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +fcmpge1: # 2 = 2. + movi 2, r0 + fmov.ls r0, fr0 + fmov.ls r0, fr1 + float.ld fr0, dr2 + float.ld fr1, dr4 + fcmpge.d dr2, dr4, r7 + bnei r7, 1, tr0 + +fcmpge2: # 4 > 2. + movi 4, r0 + fmov.ls r0, fr0 + movi 2, r0 + fmov.ls r0, fr1 + float.ld fr0, dr2 + float.ld fr1, dr4 + fcmpge.d dr2, dr4, r7 + bnei r7, 1, tr0 + +fcmpge3: # 2 < 4. + movi 2, r0 + fmov.ls r0, fr0 + movi 4, r0 + fmov.ls r0, fr1 + float.ld fr0, dr2 + float.ld fr1, dr4 + fcmpge.d dr2, dr4, r7 + bnei r7, 0, tr0 + +okay: + pass + +wrong: + fail Index: mshlrdl.cgs =================================================================== --- mshlrdl.cgs (nonexistent) +++ mshlrdl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshlrd.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshlrdl +mshlrdl: + mshlrd.l r0, r0, r0 + + pass Index: cmpeq.cgs =================================================================== --- cmpeq.cgs (nonexistent) +++ cmpeq.cgs (revision 33) @@ -0,0 +1,42 @@ +# sh testcase for cmpeq $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + movi 0, r0 + movi 1, r1 + movi 2, r2 + movi 2, r3 + movi 3, r4 + +cmpeq1: + cmpeq r2, r2, r7 + bne r7, r1, tr0 + +cmpeq2: + cmpeq r2, r3, r7 + bne r7, r1, tr0 + +cmpeq3: + cmpeq r2, r4, r7 + bne r7, r0, tr0 + +cmpeq4: + movi 1, r2 + shlli r2, 63, r2 + movi 1, r3 + shlli r3, 63, r3 + cmpeq r2, r3, r7 + bne r7, r1, tr0 + +okay: + pass + +wrong: + fail Index: trapa.cgs =================================================================== --- trapa.cgs (nonexistent) +++ trapa.cgs (revision 33) @@ -0,0 +1,11 @@ +# sh testcase for trapa $rm -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + # This performs a trap to emit "pass". + movi 253, r0 + trapa r0 Index: mmulsumwq.cgs =================================================================== --- mmulsumwq.cgs (nonexistent) +++ mmulsumwq.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mmulsum.wq $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mmulsumwq +mmulsumwq: + mmulsum.wq r0, r0, r0 + + pass Index: ptabs.cgs =================================================================== --- ptabs.cgs (nonexistent) +++ ptabs.cgs (revision 33) @@ -0,0 +1,25 @@ +# sh testcase for ptabs$likely $rn, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global ptabs +ptabs: + movi 16, r0 + shlli r0, 8, r0 + # Add one to stay in SHmedia mode. + addi r0, 29, r0 + ptabs r0, tr0 + + # Now jump. + beqi r63, 0, tr0 + +wrong: + fail + +okay: + pass Index: mshlldw.cgs =================================================================== --- mshlldw.cgs (nonexistent) +++ mshlldw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshlld.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshlldw +mshlldw: + mshlld.w r0, r0, r0 + + pass Index: shlli.cgs =================================================================== --- shlli.cgs (nonexistent) +++ shlli.cgs (revision 33) @@ -0,0 +1,30 @@ +# sh testcase for shlli $rm, $imm6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +shlli: + movi 1, r0 + shlli r0, 3, r0 + bnei r0, 8, tr0 + +shlli2: + shlli r0, 3, r0 + +shlli3: + # Shift all bits out of sight. + shlli r0, 63, r0 + bnei r0, 0, tr0 + +okay: + pass + +wrong: + fail Index: bgt.cgs =================================================================== --- bgt.cgs (nonexistent) +++ bgt.cgs (revision 33) @@ -0,0 +1,32 @@ +# sh testcase for bgt$likely $rm, $rn, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + +init: + pta wrong, tr0 + +bgt1: + movi 1, r0 + movi -1, r1 + bgt r1, r0, tr0 + +bgt2: + bgt r0, r0, tr0 + +bgt3: + pta okay, tr1 + movi -1, r0 + movi 1, r1 + bgt r0, r1, tr0 + +okay: + pass + +wrong: + fail Index: addil.cgs =================================================================== --- addil.cgs (nonexistent) +++ addil.cgs (revision 33) @@ -0,0 +1,49 @@ +# sh testcase for addi.l $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +addil0: + movi 1, r63 + addi.l r63, 0, r1 + bnei r1, 0, tr0 + +addil1: + movi 10, r0 + addi.l r0, 0, r3 + bnei r3, 10, tr0 + +addil2: + movi 0, r0 + addi.l r0, 10, r2 + bnei r2, 10, tr0 + +addil3: + addi.l r63, 10, r1 + bnei r1, 10, tr0 + +addil4: + movi 10, r0 + addi.l r0, 0, r1 + bnei r1, 10, tr0 + +addil5: + # Ensure top 32-bits are discarded when adding. + movi 10, r0 + shlli r0, 32, r0 + addi r0, 10, r0 + addi.l r0, 10, r2 + bnei r2, 20, tr0 + +okay: + pass + +wrong: + fail Index: fcmpeqd.cgs =================================================================== --- fcmpeqd.cgs (nonexistent) +++ fcmpeqd.cgs (revision 33) @@ -0,0 +1,36 @@ +# sh testcase for fcmpeq.d $drg, $drh, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +fcmpeq1: + movi 1, r0 + fmov.ls r0, fr0 + fmov.ls r0, fr1 + float.ld fr0, dr2 + float.ld fr1, dr4 + fcmpeq.d dr2, dr2, r7 + bnei r7, 1, tr0 + +fcmpeq2: + movi 1, r0 + fmov.ls r0, fr0 + movi 2, r1 + fmov.ls r1, fr1 + float.ld fr0, dr4 + float.ld fr1, dr6 + fcmpeq.d dr4, dr6, r7 + bnei r7, 0, tr0 + +okay: + pass + +wrong: + fail Index: maddsub.cgs =================================================================== --- maddsub.cgs (nonexistent) +++ maddsub.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for madds.ub $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global maddsub +maddsub: + madds.ub r0, r0, r0 + + pass Index: fldxs.cgs =================================================================== --- fldxs.cgs (nonexistent) +++ fldxs.cgs (revision 33) @@ -0,0 +1,16 @@ +# sh testcase for fldx.s $rm, $rn, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + movi 0x2800, r0 + movi 0, r1 + fldx.s r0, r1, fr0 + movi 4, r1 + fldx.s r0, r1, fr0 + movi -4, r1 + fldx.s r0, r1, fr0 + pass Index: mshardsq.cgs =================================================================== --- mshardsq.cgs (nonexistent) +++ mshardsq.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshards.q $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshardsq +mshardsq: + mshards.q r0, r0, r0 + + pass Index: shori.cgs =================================================================== --- shori.cgs (nonexistent) +++ shori.cgs (revision 33) @@ -0,0 +1,35 @@ +# sh testcase for shori $imm16, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +shori1: + movi 1, r0 + shori 7, r0 + # check it. + andi r0, 15, r7 + bnei r7, 7, tr0 + shlri r0, 16, r0 + bnei r0, 1, tr0 + +shori2: + # Test for zero extension bug reported by + # Alexandre Oliva . + movi 0, r0 + shori 65535, r0 + # check it. + movi 0xffff, r1 + bne r0, r1, tr0 + +okay: + pass + +wrong: + fail Index: fputscr.cgs =================================================================== --- fputscr.cgs (nonexistent) +++ fputscr.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for fputscr $frgh -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global fputscr +fputscr: + fputscr fr0 + + pass Index: ldxb.cgs =================================================================== --- ldxb.cgs (nonexistent) +++ ldxb.cgs (revision 33) @@ -0,0 +1,28 @@ +# sh testcase for ldx.b $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +ldxb1: + movi 20, r3 + shlli r3, 8, r3 + movi 0, r4 + ldx.b r3, r4, r0 + +ldxb2: + movi 20, r3 + shlli r3, 8, r3 + movi 1, r4 + ldx.b r3, r4, r0 + +ldxb3: + movi 20, r3 + shlli r3, 8, r3 + movi -1, r4 + ldx.b r3, r4, r0 + +okay: + pass Index: mcnvslw.cgs =================================================================== --- mcnvslw.cgs (nonexistent) +++ mcnvslw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mcnvs.lw $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mcnvslw +mcnvslw: + mcnvs.lw r0, r0, r0 + + pass Index: mshflob.cgs =================================================================== --- mshflob.cgs (nonexistent) +++ mshflob.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshflo.b $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshflob +mshflob: + mshflo.b r0, r0, r0 + + pass Index: nop.cgs =================================================================== --- nop.cgs (nonexistent) +++ nop.cgs (revision 33) @@ -0,0 +1,10 @@ +# sh testcase for nop -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + nop + pass Index: ldhil.cgs =================================================================== --- ldhil.cgs (nonexistent) +++ ldhil.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for ldhi.l $rm, $disp6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global ldhil +ldhil: + ldhi.l r0, 0, r0 + + pass Index: ftrcsl.cgs =================================================================== --- ftrcsl.cgs (nonexistent) +++ ftrcsl.cgs (revision 33) @@ -0,0 +1,26 @@ +# sh testcase for ftrc.sl $frgh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global ftrcsl +init: + pta wrong, tr0 + +ftrcsl: + movi -9, r0 + fmov.ls r0, fr0 + float.ls fr0, fr0 + ftrc.sl fr0, fr1 + fmov.sl fr1, r1 + bne r0, r1, tr0 + +okay: + pass + +wrong: + fail Index: cmpgtu.cgs =================================================================== --- cmpgtu.cgs (nonexistent) +++ cmpgtu.cgs (revision 33) @@ -0,0 +1,43 @@ +# sh testcase for cmpgtu $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + movi 0, r0 + movi 1, r1 + movi 2, r2 + movi 2, r3 + movi 3, r4 + +cmpgt1: + cmpgtu r2, r2, r7 + bne r7, r0, tr0 + +cmpgt2: + cmpgtu r2, r3, r7 + bne r7, r0, tr0 + +cmpgt3: + cmpgtu r4, r2, r7 + bne r7, r1, tr0 + +cmpgt4: + movi 1, r2 + shlli r2, 63, r2 + movi 1, r3 + shlli r3, 63, r3 + addi r3, 1, r3 + cmpgtu r3, r2, r7 + bne r7, r1, tr0 + +okay: + pass + +wrong: + fail Index: ldxl.cgs =================================================================== --- ldxl.cgs (nonexistent) +++ ldxl.cgs (revision 33) @@ -0,0 +1,28 @@ +# sh testcase for ldx.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +ldxl1: + movi 20, r3 + shlli r3, 8, r3 + movi 0, r4 + ldx.l r3, r4, r0 + +ldxl2: + movi 20, r3 + shlli r3, 8, r3 + movi 4, r4 + ldx.l r3, r4, r0 + +ldxl3: + movi 20, r3 + shlli r3, 8, r3 + movi -4, r4 + ldx.l r3, r4, r0 + +okay: + pass Index: fsqrtd.cgs =================================================================== --- fsqrtd.cgs (nonexistent) +++ fsqrtd.cgs (revision 33) @@ -0,0 +1,27 @@ +# sh testcase for fsqrt.d $frgh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + movi 9, r0 + fmov.ls r0, fr7 + float.ld fr7, dr0 + movi 3, r1 + fmov.ls r1, fr7 + float.ld fr7, dr2 + +fsqrtd: + fsqrt.d dr0, dr4 + fcmpeq.d dr2, dr4, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: mshflol.cgs =================================================================== --- mshflol.cgs (nonexistent) +++ mshflol.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshflo.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshflol +mshflol: + mshflo.l r0, r0, r0 + + pass Index: cmvne.cgs =================================================================== --- cmvne.cgs (nonexistent) +++ cmvne.cgs (revision 33) @@ -0,0 +1,32 @@ +# sh testcase for cmvne $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + + movi 0, r0 + movi 1, r1 + movi 2, r2 + movi 21, r3 + +cmvne: + # Zap r7. + movi 0, r7 + + cmvne r1, r2, r7 + bne r2, r7, tr0 + + cmvne r0, r3, r7 + # Make sure r7 is still equal to r2. + bne r2, r7, tr0 + +okay: + pass + +wrong: + fail Index: mmacfxwl.cgs =================================================================== --- mmacfxwl.cgs (nonexistent) +++ mmacfxwl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mmacfx.wl $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mmacfxwl +mmacfxwl: + mmacfx.wl r0, r0, r0 + + pass Index: fabsd.cgs =================================================================== --- fabsd.cgs (nonexistent) +++ fabsd.cgs (revision 33) @@ -0,0 +1,39 @@ +# sh testcase for fabs.d $drgh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + movi 0, r0 + movi 1, r1 + +fabs0: + # Ensure fabs(-1) = 1. + fmov.ls r0, fr7 + float.ld fr7, dr0 + fmov.ls r1, fr7 + float.ld fr7, dr2 + fsub.d dr0, dr2, dr4 + fabs.d dr4, dr6 + fcmpeq.d dr6, dr2, r7 + bnei r7, 1, tr0 + +fabs1: + # Ensure fabs(1) = 1. + fmov.ls r0, fr7 + float.ld fr7, dr0 + fmov.ls r1, fr7 + float.ld fr7, dr2 + fabs.d dr2, dr4 + fcmpeq.d dr2, dr4, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: fsts.cgs =================================================================== --- fsts.cgs (nonexistent) +++ fsts.cgs (revision 33) @@ -0,0 +1,34 @@ +# sh testcase for fst.s $rm, $disp10x4, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global fsts +fsts: + movi 0x1020, r0 + shlli r0, 8, r0 + ori r0, 0x30, r0 + shlli r0, 8, r0 + ori r0, 0x40, r0 + shlli r0, 8, r0 + ori r0, 0x50, r0 + shlli r0, 8, r0 + ori r0, 0x60, r0 + shlli r0, 8, r0 + ori r0, 0x70, r0 + shlli r0, 8, r0 + ori r0, 0x80, r0 + # Set target address. + movi 0x2800, r1 + fmov.ls r0, fr0 + + fst.s r1, 0, fr0 + fst.s r1, 4, fr0 + fst.s r1, -4, fr0 + +okay: + pass Index: or.cgs =================================================================== --- or.cgs (nonexistent) +++ or.cgs (revision 33) @@ -0,0 +1,44 @@ +# sh testcase for or $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +or1: + movi 0, r0 + or r0, r0, r1 + bnei r1, 0, tr0 + +or2: + movi 0, r0 + movi 1, r1 + or r0, r1, r2 + bnei r2, 1, tr0 + +or3: + movi 1, r0 + movi 0, r1 + or r0, r1, r2 + bnei r2, 1, tr0 + +or4: + movi 1, r0 + or r0, r0, r1 + bnei r1, 1, tr0 + +or5: + movi 1, r0 + shlli r0, 63, r0 + movi 1, r1 + or r0, r1, r2 + +okay: + pass + +wrong: + fail Index: beqi.cgs =================================================================== --- beqi.cgs (nonexistent) +++ beqi.cgs (revision 33) @@ -0,0 +1,40 @@ +# sh testcase for beqi$likely $rm, $imm6, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global beqi +init: + # Load up the branch target registers. + pta beqi2, tr0 + pta beqi3, tr1 + pta wrong, tr2 + +beqi1: + # Always true, so branch likely. + movi 1, r0 + beqi/l r0, 1, tr0 + # We should branch over this. + fail + +beqi2: + movi 22, r3 + beqi r3, 22, tr1 + # We should branch over this. + fail + +beqi3: + movi 27, r7 + # We shouldn't branch here. + beqi/u r7, 23, tr2 + # We should proceed to pass here. + +okay: + pass + +wrong: + fail Index: ldq.cgs =================================================================== --- ldq.cgs (nonexistent) +++ ldq.cgs (revision 33) @@ -0,0 +1,21 @@ +# sh testcase for ld.q $rm, $disp10x8, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + movi 20, r3 + shlli r3, 8, r3 + +ldl1: + ld.q r3, 0, r0 +ldl2: + ld.q r3, -8, r0 +ldl3: + ld.q r3, 8, r0 + +okay: + pass Index: mextr2.cgs =================================================================== --- mextr2.cgs (nonexistent) +++ mextr2.cgs (revision 33) @@ -0,0 +1,67 @@ +# sh testcase for mextr2 $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + # Put a distinguised bit pattern in R0. + movi 0x1020, r0 + shlli r0, 8, r0 + ori r0, 0x30, r0 + shlli r0, 8, r0 + ori r0, 0x40, r0 + shlli r0, 8, r0 + ori r0, 0x50, r0 + shlli r0, 8, r0 + ori r0, 0x60, r0 + shlli r0, 8, r0 + ori r0, 0x70, r0 + shlli r0, 8, r0 + ori r0, 0x80, r0 + + # Put another distinguished bit pattern in R1. + movi 0x1525, r1 + shlli r1, 8, r1 + ori r1, 0x35, r1 + shlli r1, 8, r1 + ori r1, 0x45, r1 + shlli r1, 8, r1 + ori r1, 0x55, r1 + shlli r1, 8, r1 + ori r1, 0x65, r1 + shlli r1, 8, r1 + ori r1, 0x75, r1 + shlli r1, 8, r1 + ori r1, 0x85, r1 + +mextr2: + mextr2 r0, r1, r2 + +check: + # Put the result in R3. + movi 0x3545, r3 + shlli r3, 8, r3 + ori r3, 0x55, r3 + shlli r3, 8, r3 + ori r3, 0x65, r3 + shlli r3, 8, r3 + ori r3, 0x75, r3 + shlli r3, 8, r3 + ori r3, 0x85, r3 + shlli r3, 8, r3 + ori r3, 0x10, r3 + shlli r3, 8, r3 + ori r3, 0x20, r3 + + pta wrong, tr0 + bne r2, r3, tr0 + +okay: + pass + +wrong: + fail Index: fsubs.cgs =================================================================== --- fsubs.cgs (nonexistent) +++ fsubs.cgs (revision 33) @@ -0,0 +1,36 @@ +# sh testcase for fsub.s $frg, $frh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global fsubs +init: + pta wrong, tr0 + +fsubs: + movi 9, r0 + fmov.ls r0, fr0 + float.ls fr0, fr0 + + movi 3, r0 + fmov.ls r0, fr1 + float.ls fr1, fr1 + + fsub.s fr0, fr1, fr2 + + movi 6, r0 + fmov.ls r0, fr3 + float.ls fr3, fr3 + + fcmpeq.s fr2, fr3, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: bgeu.cgs =================================================================== --- bgeu.cgs (nonexistent) +++ bgeu.cgs (revision 33) @@ -0,0 +1,47 @@ +# sh testcase for bgeu$likely $rm, $rn, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global bgeu +init: + movi 0, r0 + +bgeu1: + # Compare r0 with itself. + pta bgeu2, tr0 + bgeu/l r0, r0, tr0 + # We should branch here. + fail + +bgeu2: + movi 1, r1 + movi 1, r2 + pta bge3, tr0 + bgeu r1, r2, tr0 + # We should branch here. + fail + +bge3: + movi -1, r1 + movi 1, r2 + # We SHOULD branch here. + pta bge4, tr0 + bgeu r1, r2, tr0 + fail + +bge4: + movi 1, r1 + movi -1, r2 + # We should not branch here. + pta wrong, tr0 + bgeu r1, r2, tr0 +okay: + pass + +wrong: + fail Index: mextr4.cgs =================================================================== --- mextr4.cgs (nonexistent) +++ mextr4.cgs (revision 33) @@ -0,0 +1,67 @@ +# sh testcase for mextr4 $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + # Put a distinguised bit pattern in R0. + movi 0x1020, r0 + shlli r0, 8, r0 + ori r0, 0x30, r0 + shlli r0, 8, r0 + ori r0, 0x40, r0 + shlli r0, 8, r0 + ori r0, 0x50, r0 + shlli r0, 8, r0 + ori r0, 0x60, r0 + shlli r0, 8, r0 + ori r0, 0x70, r0 + shlli r0, 8, r0 + ori r0, 0x80, r0 + + # Put another distinguished bit pattern in R1. + movi 0x1525, r1 + shlli r1, 8, r1 + ori r1, 0x35, r1 + shlli r1, 8, r1 + ori r1, 0x45, r1 + shlli r1, 8, r1 + ori r1, 0x55, r1 + shlli r1, 8, r1 + ori r1, 0x65, r1 + shlli r1, 8, r1 + ori r1, 0x75, r1 + shlli r1, 8, r1 + ori r1, 0x85, r1 + +mextr4: + mextr4 r0, r1, r2 + +check: + # Put the result in R3. + movi 0x5565, r3 + shlli r3, 8, r3 + ori r3, 0x75, r3 + shlli r3, 8, r3 + ori r3, 0x85, r3 + shlli r3, 8, r3 + ori r3, 0x10, r3 + shlli r3, 8, r3 + ori r3, 0x20, r3 + shlli r3, 8, r3 + ori r3, 0x30, r3 + shlli r3, 8, r3 + ori r3, 0x40, r3 + + pta wrong, tr0 + bne r2, r3, tr0 + +okay: + pass + +wrong: + fail Index: ftrcdq.cgs =================================================================== --- ftrcdq.cgs (nonexistent) +++ ftrcdq.cgs (revision 33) @@ -0,0 +1,24 @@ +# sh testcase for ftrc.dq $drgh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +ftrcdq: + movi -9, r0 + fmov.qd r0, dr0 + float.qd dr0, dr0 + ftrc.dq dr0, dr2 + fmov.dq dr2, r1 + bne r0, r1, tr0 + +okay: + pass + +wrong: + fail Index: ocbp.cgs =================================================================== --- ocbp.cgs (nonexistent) +++ ocbp.cgs (revision 33) @@ -0,0 +1,10 @@ +# sh testcase for ocbp $rm, $disp6x32 -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + ocbp r0, 0 + pass Index: sthil.cgs =================================================================== --- sthil.cgs (nonexistent) +++ sthil.cgs (revision 33) @@ -0,0 +1,55 @@ +# sh testcase for sthi.l $rm, $disp6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + + movi 40, r0 + shlli r0, 8, r0 + + movi 0x1020, r1 + shlli r1, 8, r1 + addi r1, 0x30, r1 + shlli r1, 8, r1 + addi r1, 0x40, r1 + shlli r1, 8, r1 + addi r1, 0x50, r1 + shlli r1, 8, r1 + addi r1, 0x60, r1 + shlli r1, 8, r1 + addi r1, 0x70, r1 + shlli r1, 8, r1 + addi r1, 0x80, r1 + +sthil1: + sthi.l r0, 0, r1 + +sthil2: + sthi.l r0, 1, r1 + +sthil3: + sthi.l r0, 2, r1 + +sthil4: + sthi.l r0, 3, r1 + +sthil5: + sthi.l r0, -1, r1 + +sthil6: + sthi.l r0, -2, r1 + +sthil7: + sthi.l r0, -3, r1 + +okay: + pass + +wrong: + fail Index: pta.cgs =================================================================== --- pta.cgs (nonexistent) +++ pta.cgs (revision 33) @@ -0,0 +1,26 @@ +# sh testcase for pta$likely $disp16, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +pta0: + pta foo, tr0 +pta1: + pta/l bar, tr1 +pta2: + pta/u baz, tr2 + movi 0, r0 + bnei r0, 1, tr2 + fail + +foo: +bar: +baz: + pass + fail + fail + fail + fail Index: floatld.cgs =================================================================== --- floatld.cgs (nonexistent) +++ floatld.cgs (revision 33) @@ -0,0 +1,12 @@ +# sh testcase for float.ld $frgh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + movi 1, r0 + fmov.ls r0, fr0 + float.ld fr0, dr0 + pass Index: mextr6.cgs =================================================================== --- mextr6.cgs (nonexistent) +++ mextr6.cgs (revision 33) @@ -0,0 +1,67 @@ +# sh testcase for mextr6 $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + # Put a distinguised bit pattern in R0. + movi 0x1020, r0 + shlli r0, 8, r0 + ori r0, 0x30, r0 + shlli r0, 8, r0 + ori r0, 0x40, r0 + shlli r0, 8, r0 + ori r0, 0x50, r0 + shlli r0, 8, r0 + ori r0, 0x60, r0 + shlli r0, 8, r0 + ori r0, 0x70, r0 + shlli r0, 8, r0 + ori r0, 0x80, r0 + + # Put another distinguished bit pattern in R1. + movi 0x1525, r1 + shlli r1, 8, r1 + ori r1, 0x35, r1 + shlli r1, 8, r1 + ori r1, 0x45, r1 + shlli r1, 8, r1 + ori r1, 0x55, r1 + shlli r1, 8, r1 + ori r1, 0x65, r1 + shlli r1, 8, r1 + ori r1, 0x75, r1 + shlli r1, 8, r1 + ori r1, 0x85, r1 + +mextr6: + mextr6 r0, r1, r2 + +check: + # Put the result in R3. + movi 0x7585, r3 + shlli r3, 8, r3 + ori r3, 0x10, r3 + shlli r3, 8, r3 + ori r3, 0x20, r3 + shlli r3, 8, r3 + ori r3, 0x30, r3 + shlli r3, 8, r3 + ori r3, 0x40, r3 + shlli r3, 8, r3 + ori r3, 0x50, r3 + shlli r3, 8, r3 + ori r3, 0x60, r3 + + pta wrong, tr0 + bne r2, r3, tr0 + +okay: + pass + +wrong: + fail Index: ptrel.cgs =================================================================== --- ptrel.cgs (nonexistent) +++ ptrel.cgs (revision 33) @@ -0,0 +1,22 @@ +# sh testcase for ptrel$likely $rn, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + # Add one to stay in SHmedia mode. + movi 53, r0 + ptrel r0, tr0 + movi 0, r0 + # Always branch. + bnei r0, 1, tr0 + fail + fail + fail + fail + fail + pass + fail + fail Index: ldw.cgs =================================================================== --- ldw.cgs (nonexistent) +++ ldw.cgs (revision 33) @@ -0,0 +1,21 @@ +# sh testcase for ld.w $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + movi 20, r3 + shlli r3, 8, r3 + +ldw1: + ld.w r3, 0, r0 +ldw2: + ld.w r3, -2, r0 +ldw3: + ld.w r3, 2, r0 + +okay: + pass Index: ldub.cgs =================================================================== --- ldub.cgs (nonexistent) +++ ldub.cgs (revision 33) @@ -0,0 +1,22 @@ +# sh testcase for ld.ub $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + movi 20, r3 + shlli r3, 8, r3 + +ldub1: + ld.ub r3, 0, r0 +ldub2: + ld.ub r3, -1, r0 +ldub3: + ld.ub r3, 1, r0 + +okay: + pass Index: fmuls.cgs =================================================================== --- fmuls.cgs (nonexistent) +++ fmuls.cgs (revision 33) @@ -0,0 +1,31 @@ +# sh testcase for fmul.s $frg, $frh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +fmuls1: + movi 2, r0 + fmov.ls r0, fr0 + float.ls fr0, fr0 + movi 3, r1 + fmov.ls r1, fr1 + float.ls fr1, fr1 + fmul.s fr0, fr1, fr2 + movi 6, r2 + fmov.ls r2, fr3 + float.ls fr3, fr3 + fcmpeq.s fr2, fr3, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: ori.cgs =================================================================== --- ori.cgs (nonexistent) +++ ori.cgs (revision 33) @@ -0,0 +1,41 @@ +# sh testcase for ori $rm, $imm10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +or1: + movi 0, r0 + ori r0, 0, r1 + bnei r1, 0, tr0 + +or2: + movi 0, r0 + ori r0, 1, r2 + bnei r2, 1, tr0 + +or3: + movi 1, r0 + ori r0, 0, r2 + bnei r2, 1, tr0 + +or4: + movi 1, r0 + ori r0, 1, r1 + bnei r1, 1, tr0 + +or5: + movi 1, r0 + shlli r0, 63, r0 + ori r0, 1, r2 + +okay: + pass + +wrong: + fail Index: fcmpund.cgs =================================================================== --- fcmpund.cgs (nonexistent) +++ fcmpund.cgs (revision 33) @@ -0,0 +1,26 @@ +# sh testcase for fcmpun.d $drg, $drh, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +fcmpund: + movi 0, r0 + movi 1, r1 + fmov.qd r0, dr0 + float.qd dr0, dr0 + fmov.qd r1, dr2 + float.qd dr2, dr2 + fcmpun.d dr0, dr2, r7 + bnei r7, 0, tr0 + +okay: + pass + +wrong: + fail Index: msubw.cgs =================================================================== --- msubw.cgs (nonexistent) +++ msubw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for msub.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global msubw +msubw: + msub.w r0, r0, r0 + + pass Index: mabsl.cgs =================================================================== --- mabsl.cgs (nonexistent) +++ mabsl.cgs (revision 33) @@ -0,0 +1,39 @@ +# sh testcase for mabs.l $rm, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mabsl +init: + pta wrong, tr0 + +mabsl1: + # Pack { 1 3 } into R0. + _packl 1, 3, r0 + + mabs.l r0, r1 + + # Test for { 1 3 } in R0. + _packl 1, 3, r2 + bne r0, r2, tr0 + +mabsl2: + # Pack { -1, -1 } into R0. + _packl 1, 1, r0 + + # Set the left sign bit. + movi 1, r1 + shlli r1, 63, r1 + or r0, r1, r0 + + mabs.l r0, r2 + +okay: + pass + +wrong: + fail Index: mmulhiwl.cgs =================================================================== --- mmulhiwl.cgs (nonexistent) +++ mmulhiwl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mmulhi.wl $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mmulhiwl +mmulhiwl: + mmulhi.wl r0, r0, r0 + + pass Index: getcfg.cgs =================================================================== --- getcfg.cgs (nonexistent) +++ getcfg.cgs (revision 33) @@ -0,0 +1,10 @@ +# sh testcase for getcfg $rm, $disp6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + getcfg r0, 0, r0 + pass Index: mmulw.cgs =================================================================== --- mmulw.cgs (nonexistent) +++ mmulw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mmul.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mmulw +mmulw: + mmul.w r0, r0, r0 + + pass Index: faddd.cgs =================================================================== --- faddd.cgs (nonexistent) +++ faddd.cgs (revision 33) @@ -0,0 +1,33 @@ +# sh testcase for fadd.d $drg, $drh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + movi 2, r0 + movi 3, r1 + +fadd0: + # Add 2 and 3. + fmov.ls r0, fr7 + float.ld fr7, dr0 + fmov.ls r1, fr7 + float.ld fr7, dr2 + fadd.d dr0, dr2, dr4 + # Check to make sure we got 5. + movi 5, r2 + fmov.ls r2, fr7 + float.ld fr7, dr6 + fcmpeq.d dr4, dr6, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: ldxuw.cgs =================================================================== --- ldxuw.cgs (nonexistent) +++ ldxuw.cgs (revision 33) @@ -0,0 +1,29 @@ +# sh testcase for ldx.uw $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +ldxuw1: + movi 20, r3 + shlli r3, 8, r3 + movi 0, r4 + ldx.uw r3, r4, r0 + +ldxuw2: + movi 20, r3 + shlli r3, 8, r3 + movi 2, r4 + ldx.uw r3, r4, r0 + +ldxuw3: + movi 20, r3 + shlli r3, 8, r3 + movi -2, r4 + ldx.uw r3, r4, r0 + +okay: + pass Index: mcmpgtl.cgs =================================================================== --- mcmpgtl.cgs (nonexistent) +++ mcmpgtl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mcmpgt.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mcmpgtl +mcmpgtl: + mcmpgt.l r0, r0, r0 + + pass Index: subl.cgs =================================================================== --- subl.cgs (nonexistent) +++ subl.cgs (revision 33) @@ -0,0 +1,38 @@ +# sh testcase for sub.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +subl1: + # Test that the top 32 bits are ignored. + movi 1, r0 + shlli r0, 32, r0 + ori r0, 7, r0 + + movi 1, r1 + shlli r1, 32, r1 + ori r1, 2, r1 + + sub.l r0, r1, r2 + bnei r2, 5, tr0 + +subl2: + # Test that 0 - 1 is sign extended. + movi 0, r0 + movi 1, r1 + sub.l r0, r1, r2 + addi r2, 1, r2 + bnei r2, 0, tr0 + +okay: + pass + +wrong: + fail Index: beq.cgs =================================================================== --- beq.cgs (nonexistent) +++ beq.cgs (revision 33) @@ -0,0 +1,52 @@ +# sh testcase for beq$likely $rm, $rn, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global beq +init: + # Load up the branch target registers. + pta beq2, tr0 + pta beq3, tr1 + pta wrong, tr2 + +beq1: + # Compare r0 with itself. + # Always true, so branch likely. + movi 1, r0 + beq/l r0, r0, tr0 + # We should branch over this. + fail + +beq2: + # Ensure high order bits are compared, too. + movi 1, r0 + shlli r0, 35, r0 + addi r0, 10, r0 + movi 1, r1 + shlli r1, 35, r1 + addi r1, 10, r1 + beq r0, r1, tr1 + # We should branch over this, too. + fail + +beq3: + movi 1, r0 + shlli r0, 35, r0 + addi r0, 10, r0 + movi 2, r1 + shlli r1, 35, r1 + addi r1, 9, r1 + # Unlikely we'll branch! + beq/u r0, r1, tr2 + # We should proceed to pass here. + +okay: + pass + +wrong: + fail Index: mshaldsl.cgs =================================================================== --- mshaldsl.cgs (nonexistent) +++ mshaldsl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshalds.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshaldsl +mshaldsl: + mshalds.l r0, r0, r0 + + pass Index: fstxs.cgs =================================================================== --- fstxs.cgs (nonexistent) +++ fstxs.cgs (revision 33) @@ -0,0 +1,30 @@ +# sh testcase for fstx.s $rm, $rn, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + .global fstxs +fstxs: + movi 0x1020, r0 + shlli r0, 8, r0 + ori r0, 0x30, r0 + shlli r0, 8, r0 + ori r0, 0x40, r0 + shlli r0, 8, r0 + ori r0, 0x50, r0 + shlli r0, 8, r0 + ori r0, 0x60, r0 + shlli r0, 8, r0 + ori r0, 0x70, r0 + shlli r0, 8, r0 + ori r0, 0x80, r0 + fmov.ls r0, fr0 + movi 0x2800, r1 + movi -8, r2 + fstx.s r1, r2, fr0 + +okay: + pass Index: mmullowl.cgs =================================================================== --- mmullowl.cgs (nonexistent) +++ mmullowl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mmullo.wl $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mmullowl +mmullowl: + mmullo.wl r0, r0, r0 + + pass Index: fldd.cgs =================================================================== --- fldd.cgs (nonexistent) +++ fldd.cgs (revision 33) @@ -0,0 +1,13 @@ +# sh testcase for fld.d $rm, $disp10x8, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + movi 0x2800, r0 + fld.d r0, 0, dr0 + fld.d r0, 8, dr0 + fld.d r0, -8, dr0 + pass Index: shlrd.cgs =================================================================== --- shlrd.cgs (nonexistent) +++ shlrd.cgs (revision 33) @@ -0,0 +1,30 @@ +# sh testcase for shlrd $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +shlrd1: + movi 128, r0 + movi 3, r1 + shlrd r0, r1, r2 + bnei r2, 16, tr0 + +shlrd2: + movi -4, r0 + movi 2, r1 + shlrd r0, r1, r2 + addi r2, 1, r2 + beqi r2, 0, tr0 + +okay: + pass + +wrong: + fail Index: mshfhib.cgs =================================================================== --- mshfhib.cgs (nonexistent) +++ mshfhib.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshfhi.b $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshfhib +mshfhib: + mshfhi.b r0, r0, r0 + + pass Index: stxb.cgs =================================================================== --- stxb.cgs (nonexistent) +++ stxb.cgs (revision 33) @@ -0,0 +1,29 @@ +# sh testcase for stx.b $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + movi -1, r7 + xori r7, 13, r7 + movi 40, r0 + shlli r0, 8, r0 + +stxb1: + movi 0, r1 + stx.b r0, r1, r7 + +stxb2: + movi 1, r1 + stx.b r0, r1, r7 + +stxb3: + movi -1, r1 + stx.b r0, r1, r7 + +okay: + pass Index: maddl.cgs =================================================================== --- maddl.cgs (nonexistent) +++ maddl.cgs (revision 33) @@ -0,0 +1,29 @@ +# sh testcase for madd.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +maddl: + # Load { 1 2 } into r0. + _packl 1, 2, r0 + # Load { 3 4 } into r1. + _packl 3, 4, r1 + + # Add slices to produce { 4 6 }. + madd.l r0, r1, r2 + + _packl 4, 6, r3 + bne r2, r3, tr0 + +okay: + pass + +wrong: + fail Index: fnegd.cgs =================================================================== --- fnegd.cgs (nonexistent) +++ fnegd.cgs (revision 33) @@ -0,0 +1,35 @@ +# sh testcase for fneg.d $drgh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + movi 0, r0 + movi 1, r1 + +fnegd0: + # Ensure fnegd(0) = 0. + fmov.ls r0, fr7 + float.ld fr7, dr0 + fneg.d dr0, dr2 + fcmpeq.d dr0, dr2, r7 + bnei r7, 1, tr0 + +fnegd1: + # Ensure fnegd(fnegd(1)) = 1. + fmov.ls r1, fr7 + float.ld fr7, dr0 + fneg.d dr0, dr2 + fneg.d dr2, dr4 + fcmpeq.d dr0, dr4, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: fldp.cgs =================================================================== --- fldp.cgs (nonexistent) +++ fldp.cgs (revision 33) @@ -0,0 +1,16 @@ +# sh testcase for fld.p $rm, $disp10x8, $fpf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + movi 0x2800, r0 + +fldp: + fld.p r0, 0, fp0 + fld.p r0, 8, fp2 + fld.p r0, -8, fp4 + pass Index: add.cgs =================================================================== --- add.cgs (nonexistent) +++ add.cgs (revision 33) @@ -0,0 +1,47 @@ +# sh testcase for add $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global add +init: + pta wrong, tr0 +add: + movi 10, r0 + movi 0, r1 + add r0, r1, r3 + movi 10, r4 + bne r3, r4, tr0 + +add0: + movi 1, r63 + add r63, r63, r1 + bnei r1, 0, tr0 + +add2: + movi 0, r0 + movi 10, r1 + add r0, r1, r3 + movi 10, r4 + bne r3, r4, tr0 + +add3: + movi 10, r1 + add r63, r1, r3 + movi 10, r4 + bne r3, r4, tr0 + +add4: + movi 10, r1 + add r1, r63, r3 + movi 10, r4 + bne r3, r4, tr0 + +okay: + pass +wrong: + fail Index: shlrdl.cgs =================================================================== --- shlrdl.cgs (nonexistent) +++ shlrdl.cgs (revision 33) @@ -0,0 +1,37 @@ +# sh testcase for shlrd.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +shlrdl1: + movi 1, r0 + shlli r0, 32, r0 + ori r0, 8, r0 + movi 1, r1 + shlli r1, 7, r1 + ori r1, 3, r1 + + shlrd.l r0, r1, r2 + +check1: + bnei r2, 1, tr0 + +shlrdl2: + movi 1, r0 + shlli r0, 31, r0 + movi 31, r1 + shlld.l r0, r1, r2 + bnei r2, 0, tr0 + +okay: + pass + +wrong: + fail Index: stxl.cgs =================================================================== --- stxl.cgs (nonexistent) +++ stxl.cgs (revision 33) @@ -0,0 +1,29 @@ +# sh testcase for stx.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + movi -1, r7 + xori r7, 13, r7 + movi 40, r0 + shlli r0, 8, r0 + +stxl1: + movi 0, r1 + stx.l r0, r1, r7 + +stxl2: + movi 4, r1 + stx.l r0, r1, r7 + +stxl3: + movi -4, r1 + stx.l r0, r1, r7 + +okay: + pass Index: mshardl.cgs =================================================================== --- mshardl.cgs (nonexistent) +++ mshardl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshard.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshardl +mshardl: + mshard.l r0, r0, r0 + + pass Index: mshfhil.cgs =================================================================== --- mshfhil.cgs (nonexistent) +++ mshfhil.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshfhi.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshfhil +mshfhil: + mshfhi.l r0, r0, r0 + + pass Index: floatqd.cgs =================================================================== --- floatqd.cgs (nonexistent) +++ floatqd.cgs (revision 33) @@ -0,0 +1,12 @@ +# sh testcase for float.qd $drgh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + movi 1, r0 + fmov.qd r0, dr0 + float.qd dr0, dr2 + pass Index: mulsl.cgs =================================================================== --- mulsl.cgs (nonexistent) +++ mulsl.cgs (revision 33) @@ -0,0 +1,54 @@ +# sh testcase for muls.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mulsl +init: + pta wrong, tr0 + +mulsl1: + movi 0, r0 + muls.l r0, r0, r1 + bnei r1, 0, tr0 + +mulsl2: + movi 0, r0 + movi 1, r1 + muls.l r0, r1, r2 + bnei r2, 0, tr0 + +mulsl3: + movi 1, r0 + movi 0, r1 + muls.l r0, r1, r2 + bnei r2, 0, tr0 + +mulsl4: + movi 1, r0 + movi 1, r1 + muls.l r0, r1, r2 + bnei r2, 1, tr0 + +mulsl5: + movi 2, r0 + movi 9, r1 + muls.l r0, r1, r2 + bnei r2, 18, tr0 + +mulsl6: + movi 2, r0 + movi -9, r1 + muls.l r0, r1, r2 + bnei r2, -18, tr0 + +okay: + pass + +wrong: + fail + Index: mmulfxw.cgs =================================================================== --- mmulfxw.cgs (nonexistent) +++ mmulfxw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mmulfx.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mmulfxw +mmulfxw: + mmulfx.w r0, r0, r0 + + pass Index: addi.cgs =================================================================== --- addi.cgs (nonexistent) +++ addi.cgs (revision 33) @@ -0,0 +1,37 @@ +# sh testcase for addi $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +addi1: + movi 1, r0 + addi r0, 10, r0 + bnei r0, 11, tr0 + +addi2: + movi 10, r0 + addi r0, 1, r0 + bnei r0, 11, tr0 + +addi3: + movi 10, r0 + addi r0, -1, r0 + bnei r0, 9, tr0 + +addi4: + movi 20, r0 + addi r0, -2, r0 + bnei r0, 18, tr0 + +okay: + pass + +wrong: + fail Index: mcmv.cgs =================================================================== --- mcmv.cgs (nonexistent) +++ mcmv.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mcmv $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mcmv +mcmv: + mcmv r0, r0, r0 + + pass Index: maddsl.cgs =================================================================== --- maddsl.cgs (nonexistent) +++ maddsl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for madds.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global maddsl +maddsl: + madds.l r0, r0, r0 + + pass Index: ftrvs.cgs =================================================================== --- ftrvs.cgs (nonexistent) +++ ftrvs.cgs (revision 33) @@ -0,0 +1,67 @@ +# sh testcase for ftrv.s $mtrxg, $fvh, $fvf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + .macro _load val, fpreg + # This macro clobbers r0. + movi \val, r0 + fmov.ls r0, \fpreg + float.ls \fpreg, \fpreg + .endm + + start + +init: + pta wrong, tr0 + + _load 1, fr0 + _load 2, fr4 + _load 3, fr8 + _load 4, fr12 + _load 5, fr1 + _load 6, fr5 + _load 7, fr9 + _load 8, fr13 + _load 9, fr2 + _load 10, fr6 + _load 11, fr10 + _load 12, fr14 + _load 13, fr3 + _load 14, fr7 + _load 15, fr11 + _load 16, fr15 + + _load 1, fr16 + _load 2, fr17 + _load 3, fr18 + _load 4, fr19 + +ftrvs: + ftrv.s mtrx0, fv16, fv20 + +check: + _load 30, fr0 + _load 70, fr1 + _load 110, fr2 + _load 150, fr3 + + fcmpeq.s fr0, fr20, r0 + bnei r0, 1, tr0 + + fcmpeq.s fr1, fr21, r0 + bnei r0, 1, tr0 + + fcmpeq.s fr2, fr22, r0 + bnei r0, 1, tr0 + + fcmpeq.s fr3, fr23, r0 + bnei r0, 1, tr0 + +okay: + pass + +wrong: + fail Index: icbi.cgs =================================================================== --- icbi.cgs (nonexistent) +++ icbi.cgs (revision 33) @@ -0,0 +1,10 @@ +# sh testcase for icbi $rm, $disp6x32 -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + icbi r0, 0 + pass Index: sleep.cgs =================================================================== --- sleep.cgs (nonexistent) +++ sleep.cgs (revision 33) @@ -0,0 +1,10 @@ +# sh testcase for sleep -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + sleep + pass Index: mcmpeqw.cgs =================================================================== --- mcmpeqw.cgs (nonexistent) +++ mcmpeqw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mcmpeq.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mcmpeqw +mcmpeqw: + mcmpeq.w r0, r0, r0 + + pass Index: ldloq.cgs =================================================================== --- ldloq.cgs (nonexistent) +++ ldloq.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for ldlo.q $rm, $disp6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global ldloq +ldloq: + ldlo.q r0, 0, r0 + + pass Index: fmovd.cgs =================================================================== --- fmovd.cgs (nonexistent) +++ fmovd.cgs (revision 33) @@ -0,0 +1,24 @@ +# sh testcase for fmov.d $drgh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +fmovd: + movi 4, r0 + fmov.qd r0, dr0 + float.qd dr0, dr2 + fmov.d dr2, dr4 + fcmpeq.d dr2, dr4, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: bnei.cgs =================================================================== --- bnei.cgs (nonexistent) +++ bnei.cgs (revision 33) @@ -0,0 +1,23 @@ +# sh testcase for bnei$likely $rm, $imm6, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + movi 1, r0 + pta wrong, tr0 + pta okay, tr1 + +bnei1: + bnei r63, 0, tr0 +bnei2: + bnei r0, 3, tr1 +bad: + fail +okay: + pass +wrong: + fail Index: brk.cgs =================================================================== --- brk.cgs (nonexistent) +++ brk.cgs (revision 33) @@ -0,0 +1,11 @@ +# sh testcase for brk -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + # brk will cause the sim to trap, so avoid it. + pass + brk Index: getcon.cgs =================================================================== --- getcon.cgs (nonexistent) +++ getcon.cgs (revision 33) @@ -0,0 +1,29 @@ +# sh testcase for getcon $crk, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +getcon1: + movi 22, r0 + putcon r0, cr0 + getcon cr0, r1 + bne r0, r1, tr0 + +getcon2: + movi 12, r0 + shlli r0, 35, r0 + putcon r0, cr20 + getcon cr20, r20 + bne r0, r20, tr0 + +okay: + pass + +wrong: + fail Index: mcnvswb.cgs =================================================================== --- mcnvswb.cgs (nonexistent) +++ mcnvswb.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mcnvs.wb $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mcnvswb +mcnvswb: + mcnvs.wb r0, r0, r0 + + pass Index: msubsw.cgs =================================================================== --- msubsw.cgs (nonexistent) +++ msubsw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for msubs.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global msubsw +msubsw: + msubs.w r0, r0, r0 + + pass Index: fcmpgtd.cgs =================================================================== --- fcmpgtd.cgs (nonexistent) +++ fcmpgtd.cgs (revision 33) @@ -0,0 +1,36 @@ +# sh testcase for fcmpgt.d $drg, $drh, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +fcmpgt1: + movi 2, r0 + fmov.qd r0, dr0 + movi 1, r1 + fmov.qd r1, dr2 + float.qd dr0, dr4 + float.qd dr2, dr6 + fcmpgt.d dr4, dr6, r7 + bnei r7, 1, tr0 + +fcmpgt2: + movi 1, r0 + fmov.qd r0, dr0 + fmov.qd r0, dr2 + float.qd dr0, dr4 + float.qd dr2, dr6 + fcmpgt.d dr4, dr6, r7 + bnei r7, 0, tr0 + +okay: + pass + +wrong: + fail Index: putcfg.cgs =================================================================== --- putcfg.cgs (nonexistent) +++ putcfg.cgs (revision 33) @@ -0,0 +1,10 @@ +# sh testcase for putcfg $rm, $disp6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + putcfg r0, 0, r0 + pass Index: fmacs.cgs =================================================================== --- fmacs.cgs (nonexistent) +++ fmacs.cgs (revision 33) @@ -0,0 +1,39 @@ +# sh testcase for fmac.s $frg, $frh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +fmacs: + movi 2, r0 + fmov.ls r0, fr0 + float.ls fr0, fr0 + + movi 3, r1 + fmov.ls r1, fr1 + float.ls fr1, fr1 + + movi 4, r2 + fmov.ls r2, fr2 + float.ls fr2, fr2 + + fmac.s fr0, fr1, fr2 + + movi 10, r3 + fmov.ls r3, fr3 + float.ls fr3, fr3 + + fcmpeq.s fr2, fr3, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: swapq.cgs =================================================================== --- swapq.cgs (nonexistent) +++ swapq.cgs (revision 33) @@ -0,0 +1,36 @@ +# sh testcase for swap.q $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + movi 10, r0 + shlli r0, 8, r0 + ori r0, 20, r0 + shlli r0, 8, r0 + ori r0, 30, r0 + shlli r0, 8, r0 + ori r0, 40, r0 + shlli r0, 8, r0 + ori r0, 50, r0 + shlli r0, 8, r0 + ori r0, 60, r0 + shlli r0, 8, r0 + ori r0, 70, r0 + shlli r0, 8, r0 + ori r0, 80, r0 + + # Set up two address operands. + + movi 40, r1 + shlli r1, 8, r1 + movi 8, r2 + +swapq: + swap.q r1, r2, r0 + +okay: + pass Index: ocbwb.cgs =================================================================== --- ocbwb.cgs (nonexistent) +++ ocbwb.cgs (revision 33) @@ -0,0 +1,10 @@ +# sh testcase for ocbwb $rm, $disp6x32 -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + ocbwb r0, 0 + pass Index: msadubq.cgs =================================================================== --- msadubq.cgs (nonexistent) +++ msadubq.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for msad.ubq $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global msadubq +msadubq: + msad.ubq r0, r0, r0 + + pass Index: fmovqd.cgs =================================================================== --- fmovqd.cgs (nonexistent) +++ fmovqd.cgs (revision 33) @@ -0,0 +1,22 @@ +# sh testcase for fmov.qd $rm, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +fmovdq: + movi 4, r0 + fmov.qd r0, dr0 + fmov.dq dr0, r1 + bne r0, r1, tr0 + +okay: + pass + +wrong: + fail Index: shlril.cgs =================================================================== --- shlril.cgs (nonexistent) +++ shlril.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for shlri.l $rm, $imm6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global shlril +shlril: + shlri.l r0, 0, r0 + + pass Index: bge.cgs =================================================================== --- bge.cgs (nonexistent) +++ bge.cgs (revision 33) @@ -0,0 +1,40 @@ +# sh testcase for bge$likely $rm, $rn, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global bge +init: + pta bge2, tr0 + pta bge3, tr1 + pta wrong, tr2 + movi 0, r0 + +bge1: + # Compare r0 with itself. + bge/l r0, r0, tr0 + # We should branch here. + fail + +bge2: + movi 1, r1 + movi 1, r2 + bge r1, r2, tr1 + # We should branch here. + fail + +bge3: + movi -1, r1 + movi 1, r2 + bge r1, r2, tr2 + # We should not branch here. + +okay: + pass + +wrong: + fail Index: mshlldl.cgs =================================================================== --- mshlldl.cgs (nonexistent) +++ mshlldl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshlld.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshlldl +mshlldl: + mshlld.l r0, r0, r0 + + pass Index: blink.cgs =================================================================== --- blink.cgs (nonexistent) +++ blink.cgs (revision 33) @@ -0,0 +1,17 @@ +# sh testcase for blink $trb, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +blink: + pta target, tr0 + gettr tr0, r1 + ptabs r1, tr0 + blink tr0, r0 + fail + +target: + pass Index: fldxd.cgs =================================================================== --- fldxd.cgs (nonexistent) +++ fldxd.cgs (revision 33) @@ -0,0 +1,16 @@ +# sh testcase for fldx.d $rm, $rn, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + movi 0x2800, r0 + movi 0, r1 + fldx.d r0, r1, dr0 + movi 8, r1 + fldx.d r0, r1, dr0 + movi -8, r1 + fldx.d r0, r1, dr0 + pass Index: stloq.cgs =================================================================== --- stloq.cgs (nonexistent) +++ stloq.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for stlo.q $rm, $disp6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global stloq +stloq: + stlo.q r0, 0, r0 + + pass Index: shari.cgs =================================================================== --- shari.cgs (nonexistent) +++ shari.cgs (revision 33) @@ -0,0 +1,28 @@ +# sh testcase for shari $rm, $imm, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +shari1: + movi 128, r0 + shari r0, 3, r2 + bnei r2, 16, tr0 + +shari2: + movi -4, r0 + shari r0, 2, r2 + addi r2, 1, r2 + bnei r2, 0, tr0 + +okay: + pass + +wrong: + fail Index: shlld.cgs =================================================================== --- shlld.cgs (nonexistent) +++ shlld.cgs (revision 33) @@ -0,0 +1,36 @@ +# sh testcase for shlld $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +shlld1: + movi 1, r0 + movi 5, r1 + shlld r0, r1, r2 + movi 32, r7 + bne r2, r7, tr0 + +shlld2: + movi 2, r1 + shlld r2, r1, r3 + movi 128, r7 + bne r3, r7, tr0 + +shlld3: + movi 32, r1 + shlld r0, r1, r7 + shlld r7, r1, r2 + bnei r2, 0, tr0 + +okay: + pass + +wrong: + fail Index: stq.cgs =================================================================== --- stq.cgs (nonexistent) +++ stq.cgs (revision 33) @@ -0,0 +1,26 @@ +# sh testcase for st.q $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + movi -1, r7 + xori r7, 13, r7 + movi 40, r0 + shlli r0, 8, r0 + +stq1: + st.q r0, 0, r7 + +stq2: + st.q r0, 8, r7 + +stq3: + st.q r0, -8, r7 + +okay: + pass Index: mmacnfx-wl.cgs =================================================================== --- mmacnfx-wl.cgs (nonexistent) +++ mmacnfx-wl.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mmacnfx.wl $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mmacnfx_wl +mmacnfx_wl: + mmacnfx.wl r0, r0, r0 + + pass Index: movi.cgs =================================================================== --- movi.cgs (nonexistent) +++ movi.cgs (revision 33) @@ -0,0 +1,29 @@ +# sh testcase for movi $imm16, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +movi0: + movi 0, r0 + bnei r0, 0, tr0 +movi1: + movi 1, r0 + bnei r0, 1, tr0 +movi2: + movi 23, r0 + bnei r0, 23, tr0 +movn: + movi -1, r0 + addi r0, 1, r0 + bnei r0, 0, tr0 + +okay: + pass +wrong: + fail Index: cmveq.cgs =================================================================== --- cmveq.cgs (nonexistent) +++ cmveq.cgs (revision 33) @@ -0,0 +1,32 @@ +# sh testcase for cmveq $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + + movi 0, r0 + movi 1, r1 + movi 2, r2 + movi 21, r3 + +cmveq: + # Zap r7. + movi 0, r7 + + cmveq r0, r2, r7 + bne r2, r7, tr0 + + cmveq r1, r3, r7 + # Make sure r7 is still equal to r2. + bne r2, r7, tr0 + +okay: + pass + +wrong: + fail Index: fdivs.cgs =================================================================== --- fdivs.cgs (nonexistent) +++ fdivs.cgs (revision 33) @@ -0,0 +1,39 @@ +# sh testcase for fdiv.s $frg, $frh, $frf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +fdivs1: + movi 1, r0 + fmov.ls r0, fr0 + float.ls fr0, fr0 + movi 2, r1 + fmov.ls r1, fr1 + float.ls fr1, fr1 + fdiv.s fr0, fr1, fr2 + +fdvis2: + movi 6, r0 + fmov.ls r0, fr0 + float.ls fr0, fr0 + movi 2, r1 + fmov.ls r1, fr1 + float.ls fr1, fr1 + fdiv.s fr0, fr1, fr2 + movi 3, r3 + fmov.ls r3, fr3 + float.ls fr3, fr3 + fcmpeq.s fr2, fr3, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail Index: stw.cgs =================================================================== --- stw.cgs (nonexistent) +++ stw.cgs (revision 33) @@ -0,0 +1,26 @@ +# sh testcase for st.q $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + movi -1, r7 + xori r7, 13, r7 + movi 40, r0 + shlli r0, 8, r0 + +stw1: + st.w r0, 0, r7 + +stw2: + st.w r0, 2, r7 + +stw3: + st.w r0, -2, r7 + +okay: + pass Index: fldxp.cgs =================================================================== --- fldxp.cgs (nonexistent) +++ fldxp.cgs (revision 33) @@ -0,0 +1,22 @@ +# sh testcase for fldx.p $rm, $rn, $fpf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + movi 0x2800, r0 + +fldxp: + movi 0, r1 + fldx.p r0, r1, fp0 + + movi 8, r1 + fldx.p r0, r1, fp2 + + movi -8, r1 + fldx.p r0, r1, fp4 + + pass Index: mshlrdw.cgs =================================================================== --- mshlrdw.cgs (nonexistent) +++ mshlrdw.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for mshlrd.w $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mshlrdw +mshlrdw: + mshlrd.w r0, r0, r0 + + pass Index: byterev.cgs =================================================================== --- byterev.cgs (nonexistent) +++ byterev.cgs (revision 33) @@ -0,0 +1,67 @@ +# sh testcase for byterev $rm, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + pta wrong, tr0 +init: + # Put a distinctive pattern in r0. + movi 10, r0 + shlli r0, 8, r0 + ori r0, 20, r0 + shlli r0, 8, r0 + ori r0, 30, r0 + shlli r0, 8, r0 + ori r0, 40, r0 + shlli r0, 8, r0 + ori r0, 50, r0 + shlli r0, 8, r0 + ori r0, 60, r0 + shlli r0, 8, r0 + ori r0, 70, r0 + shlli r0, 8, r0 + ori r0, 80, r0 + +byterev: + byterev r0, r1 + +check: + andi r1, 255, r2 + movi 10, r3 + bne r2, r3, tr0 + shlri r1, 8, r1 + andi r1, 255, r2 + movi 20, r3 + bne r2, r3, tr0 + shlri r1, 8, r1 + andi r1, 255, r2 + movi 30, r3 + bne r2, r3, tr0 + shlri r1, 8, r1 + andi r1, 255, r2 + movi 40, r3 + bne r2, r3, tr0 + shlri r1, 8, r1 + andi r1, 255, r2 + movi 50, r3 + bne r2, r3, tr0 + shlri r1, 8, r1 + andi r1, 255, r2 + movi 60, r3 + bne r2, r3, tr0 + shlri r1, 8, r1 + andi r1, 255, r2 + movi 70, r3 + bne r2, r3, tr0 + shlri r1, 8, r1 + andi r1, 255, r2 + movi 80, r3 + bne r2, r3, tr0 + +okay: + pass +wrong: + fail Index: nsb.cgs =================================================================== --- nsb.cgs (nonexistent) +++ nsb.cgs (revision 33) @@ -0,0 +1,66 @@ +# sh testcase for nsb $rm, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + pta wrong, tr0 + +nsb0: + movi 0, r0 + nsb r0, r1 +check0: + movi 63, r4 + bne r1, r4, tr0 + +nsb1: + # set up a loop target reg. + pta again1, tr1 + # r4 holds the loop count. + movi 62, r4 + movi 1, r0 +again1: + nsb r0, r1 + bne r1, r4, tr0 + # okay? go around again. + shlli r0, 1, r0 + addi r4, -1, r4 + bnei r4, 0, tr1 + +nsb2: + # set up a loop target reg. + pta again2, tr1 + # r4 holds the loop count. + movi 63, r4 + movi -1, r0 +again2: + nsb r0, r1 + bne r1, r4, tr0 + # okay? go around again. + shlli r0, 1, r0 + addi r4, -1, r4 + bnei r4, 0, tr1 + +nsb3: + movi 1, r0 + shlli r0, 63, r0 + nsb r0, r1 +check3: + movi 0, r4 + bne r1, r4, tr0 + +nsb4: + movi 7, r0 + shlli r0, 61, r0 + nsb r0, r1 +check4: + movi 2, r4 + bne r1, r4, tr0 + +okay: + pass +wrong: + fail Index: fcmpges.cgs =================================================================== --- fcmpges.cgs (nonexistent) +++ fcmpges.cgs (revision 33) @@ -0,0 +1,46 @@ +# sh testcase for fcmpge.s $frg, $frh, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +fcmpge1: # 2 = 2. + movi 2, r0 + fmov.ls r0, fr0 + fmov.ls r0, fr1 + float.ls fr0, fr2 + float.ls fr1, fr3 + fcmpge.s fr2, fr3, r7 + bnei r7, 1, tr0 + +fcmpge2: # 3 > 2. + movi 3, r0 + fmov.ls r0, fr0 + movi 2, r0 + fmov.ls r0, fr1 + float.ls fr0, fr2 + float.ls fr1, fr3 + fcmpge.s fr2, fr3, r7 + bnei r7, 1, tr0 + +fcmpge3: # 2 < 3. + movi 2, r0 + fmov.ls r0, fr0 + movi 3, r0 + fmov.ls r0, fr1 + float.ls fr0, fr2 + float.ls fr1, fr3 + fcmpge.s fr2, fr3, r7 + bnei r7, 0, tr0 + +okay: + pass + +wrong: + fail Index: sub.cgs =================================================================== --- sub.cgs (nonexistent) +++ sub.cgs (revision 33) @@ -0,0 +1,42 @@ +# sh testcase for sub $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + movi 0, r0 + movi 1, r1 + +sub1: + # 0 - 0 = 0. + sub r0, r0, r2 + bnei r2, 0, tr0 + +sub2: + # 1 - 0 = 1. + sub r1, r0, r2 + bnei r2, 1, tr0 + +sub3: + # 0 - 1 = -1. + sub r0, r1, r2 + addi r2, 1, r2 + bnei r2, 0, tr0 + +sub4: + # 5 - 2 = 3. + movi 5, r0 + movi 2, r1 + sub r0, r1, r2 + bnei r2, 3, tr0 + +okay: + pass + +wrong: + fail Index: testutils.inc =================================================================== --- testutils.inc (nonexistent) +++ testutils.inc (revision 33) @@ -0,0 +1,51 @@ +# Support macros for the assembly test cases. + + .macro start + .text + .global start +start: + .endm + + .macro pass + movi 253, r0 + trapa r0 + .endm + + .macro fail + movi 254, r0 + trapa r0 + .endm + + .macro _packb v1 v2 v3 v4 v5 v6 v7 v8 reg + movi \v1, \reg + shlli \reg, 8, \reg + addi \reg, \v2, \reg + shlli \reg, 8, \reg + addi \reg, \v3, \reg + shlli \reg, 8, \reg + addi \reg, \v4, \reg + shlli \reg, 8, \reg + addi \reg, \v5, \reg + shlli \reg, 8, \reg + addi \reg, \v6, \reg + shlli \reg, 8, \reg + addi \reg, \v7, \reg + shlli \reg, 8, \reg + addi \reg, \v8, \reg + .endm + + .macro _packw v1 v2 v3 v4 reg + movi \v1, \reg + shlli \reg, 16, \reg + addi \reg, \v2, \reg + shlli \reg, 16, \reg + addi \reg, \v3, \reg + shlli \reg, 16, \reg + addi \reg, \v4, \reg + .endm + + .macro _packl v1 v2 reg + movi \v1, \reg + shlli \reg, 32, \reg + addi \reg, \v2, \reg + .endm Index: mulul.cgs =================================================================== --- mulul.cgs (nonexistent) +++ mulul.cgs (revision 33) @@ -0,0 +1,54 @@ +# sh testcase for mulu.l $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global mulul +init: + pta wrong, tr0 + +mulul1: + movi 0, r0 + mulu.l r0, r0, r1 + bnei r1, 0, tr0 + +mulul2: + movi 0, r0 + movi 1, r1 + mulu.l r0, r1, r2 + bnei r2, 0, tr0 + +mulul3: + movi 1, r0 + movi 0, r1 + mulu.l r0, r1, r2 + bnei r2, 0, tr0 + +mulul4: + movi 1, r0 + movi 1, r1 + mulu.l r0, r1, r2 + bnei r2, 1, tr0 + +mulul5: + movi 2, r0 + movi 9, r1 + mulu.l r0, r1, r2 + bnei r2, 18, tr0 + +mulul6: + movi 2, r0 + movi -9, r1 + mulu.l r0, r1, r2 + beqi r2, -18, tr0 + +okay: + pass + +wrong: + fail + Index: fcmpeqs.cgs =================================================================== --- fcmpeqs.cgs (nonexistent) +++ fcmpeqs.cgs (revision 33) @@ -0,0 +1,36 @@ +# sh testcase for fcmpeq.s $frg, $frh, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +fcmpeq1: + movi 1, r0 + fmov.ls r0, fr0 + fmov.ls r0, fr1 + float.ls fr0, fr2 + float.ls fr1, fr3 + fcmpeq.s fr2, fr3, r7 + bnei r7, 1, tr0 + +fcmpeq2: + movi 1, r0 + fmov.ls r0, fr0 + movi 2, r1 + fmov.ls r1, fr1 + float.ls fr0, fr2 + float.ls fr1, fr3 + fcmpeq.s fr2, fr3, r7 + bnei r7, 0, tr0 + +okay: + pass + +wrong: + fail Index: fstd.cgs =================================================================== --- fstd.cgs (nonexistent) +++ fstd.cgs (revision 33) @@ -0,0 +1,34 @@ +# sh testcase for fst.d $rm, $disp10x8, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global fstd +fstd: + movi 0x1020, r0 + shlli r0, 8, r0 + ori r0, 0x30, r0 + shlli r0, 8, r0 + ori r0, 0x40, r0 + shlli r0, 8, r0 + ori r0, 0x50, r0 + shlli r0, 8, r0 + ori r0, 0x60, r0 + shlli r0, 8, r0 + ori r0, 0x70, r0 + shlli r0, 8, r0 + ori r0, 0x80, r0 + # Set target address. + movi 0x2800, r1 + fmov.qd r0, dr0 + + fst.d r1, 0, dr0 + fst.d r1, 8, dr0 + fst.d r1, -8, dr0 + +okay: + pass Index: ldhiq.cgs =================================================================== --- ldhiq.cgs (nonexistent) +++ ldhiq.cgs (revision 33) @@ -0,0 +1,14 @@ +# sh testcase for ldhi.q $rm, $disp6, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global ldhiq +ldhiq: + ldhi.q r0, 0, r0 + + pass Index: bgtu.cgs =================================================================== --- bgtu.cgs (nonexistent) +++ bgtu.cgs (revision 33) @@ -0,0 +1,36 @@ +# sh testcase for bgtu$likely $rm, $rn, $tra -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + +init: + pta wrong, tr0 + +bgtu1: + movi 1, r0 + movi -1, r1 + pta bgt2, tr1 + bgtu r1, r0, tr1 + fail + +bgt2: + bgtu r0, r0, tr0 + +bgt3: + pta okay, tr1 + movi -1, r0 + movi 1, r1 + pta okay, tr1 + bgtu r0, r1, tr1 + fail + +okay: + pass + +wrong: + fail Index: ldb.cgs =================================================================== --- ldb.cgs (nonexistent) +++ ldb.cgs (revision 33) @@ -0,0 +1,21 @@ +# sh testcase for ld.b $rm, $disp10, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start +init: + movi 20, r3 + shlli r3, 8, r3 + +ldb1: + ld.b r3, 0, r0 +ldb2: + ld.b r3, -1, r0 +ldb3: + ld.b r3, 1, r0 + +okay: + pass Index: and.cgs =================================================================== --- and.cgs (nonexistent) +++ and.cgs (revision 33) @@ -0,0 +1,68 @@ +# sh testcase for and $rm, $rn, $rd -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +and0: + # 0 and 0 is 0. + movi 0, r0 + movi 0, r1 + and r0, r1, r2 + bnei r2, 0, tr0 + +and1: + # 0 and 1 is 0. + movi 0, r0 + movi 1, r1 + and r0, r1, r2 + bnei r2, 0, tr0 + +and2: + # 1 and 0 is 0. + movi 1, r0 + movi 0, r1 + and r0, r1, r2 + bnei r2, 0, tr0 + +and3: + # 1 and 1 is 1. + movi 1, r0 + movi 1, r1 + and r0, r1, r2 + bnei r2, 1, tr0 + +and4: + movi 1, r0 + shlli r0, 63, r0 + movi 1, r1 + shlli r1, 63, r1 + and r0, r1, r2 + # Check it. + movi 1, r3 + shlli r3, 63, r3 + bne r2, r3, tr0 + +and5: + movi 1, r0 + shlli r0, 63, r0 + movi 1, r1 + shlli r1, 63, r1 + ori r1, 1, r1 + and r0, r1, r2 + # Check it. + movi 1, r3 + shlli r1, 63, r1 + bne r1, r2, tr0 + +okay: + pass + +wrong: + fail Index: ftrcsq.cgs =================================================================== --- ftrcsq.cgs (nonexistent) +++ ftrcsq.cgs (revision 33) @@ -0,0 +1,25 @@ +# sh testcase for ftrc.sq $frgh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + +init: + pta wrong, tr0 + +ftrcsq: + movi -9, r0 + fmov.ls r0, fr0 + float.ls fr0, fr0 + ftrc.sq fr0, dr2 + fmov.dq dr2, r1 + bne r0, r1, tr0 + +okay: + pass + +wrong: + fail Index: fsubd.cgs =================================================================== --- fsubd.cgs (nonexistent) +++ fsubd.cgs (revision 33) @@ -0,0 +1,36 @@ +# sh testcase for fsub.d $drg, $drh, $drf -*- Asm -*- +# mach: all +# as: -isa=shmedia +# ld: -m shelf64 + + .include "media/testutils.inc" + + start + + .global fsubd +init: + pta wrong, tr0 + +fsubd: + movi 9, r0 + fmov.qd r0, dr0 + float.qd dr0, dr0 + + movi 3, r0 + fmov.qd r0, dr2 + float.qd dr2, dr2 + + fsub.d dr0, dr2, dr4 + + movi 6, r0 + fmov.qd r0, dr6 + float.qd dr6, dr6 + + fcmpeq.d dr4, dr6, r7 + bnei r7, 1, tr0 + +okay: + pass + +wrong: + fail

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.