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