diff options
Diffstat (limited to 'sim/testsuite/mips/utils-r6.inc')
-rw-r--r-- | sim/testsuite/mips/utils-r6.inc | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/sim/testsuite/mips/utils-r6.inc b/sim/testsuite/mips/utils-r6.inc new file mode 100644 index 0000000..b5c88e5 --- /dev/null +++ b/sim/testsuite/mips/utils-r6.inc @@ -0,0 +1,150 @@ + .macro fp_assert a, b + beq \a, \b, 1f + nop + j _fail + nop +1: + .endm + + .macro r6ck_1r inst, a, ret + li $4, \a + li $6, \ret + \inst $7, $4 + fp_assert $6, $7 + .endm + + .macro r6ck_1dr inst, a, ret + ld $4, \a + ld $6, \ret + \inst $7, $4 + fp_assert $6, $7 + .endm + + .macro r6ck_2r inst, a, b, ret + li $4, \a + li $5, \b + li $6, \ret + \inst $7, $4, $5 + fp_assert $6, $7 + .endm + + .macro r6ck_2dr inst, a, b, ret + ld $4, \a + ld $5, \b + ld $6, \ret + \inst $7, $4, $5 + fp_assert $6, $7 + .endm + + .macro r6ck_2dr1i inst, a, b, imm, ret + ld $4, \a + ld $5, \b + ld $6, \ret + \inst $7, $4, $5, \imm + fp_assert $6, $7 + .endm + + .macro r6ck_1r1i inst, a, imm, ret + li $4, \a + li $6, \ret + \inst $7, $4, \imm + fp_assert $6, $7 + .endm + + .macro r6ck_1dr1i inst, a, imm, ret + ld $4, \a + ld $6, \ret + \inst $7, $4, \imm + fp_assert $6, $7 + .endm + + .macro r6ck_0dr1i inst, a, imm, ret + ld $4, \a + ld $6, \ret + \inst $4, $4, \imm + fp_assert $6, $4 + .endm + + .macro r6ck_2r1i inst, a, b, imm, ret + li $4, \a + li $5, \b + li $6, \ret + \inst $7, $4, $5, \imm + fp_assert $6, $7 + .endm + + .macro r6ck_3s inst, a, b, c, ret + li $4, \a + li $5, \b + li $6, \c + li $7, \ret + mtc1 $4, $f2 + mtc1 $5, $f4 + mtc1 $6, $f6 + \inst $f2, $f4, $f6 + mfc1 $8, $f2 + fp_assert $7, $8 + .endm + + .macro r6ck_2s inst, a, b, ret + li $4, \a + li $5, \b + li $6, \ret + mtc1 $4, $f2 + mtc1 $5, $f4 + \inst $f2, $f4 + mfc1 $7, $f2 + fp_assert $6, $7 + .endm + + .macro r6ck_2d inst, a, b, ret + .data +1: .dword \a +2: .dword \b +3: .dword \ret + .text + la $4, 1b + la $5, 2b + la $6, 3b + ldc1 $f2, 0($4) + ldc1 $f4, 0($5) + lw $7, 0($6) + lw $8, 4($6) + \inst $f2, $f4 + + #simulate dmfc1 + mfhc1 $9, $f2 + mfc1 $10, $f2 + fp_assert $7, $9 + fp_assert $8, $10 + .endm + + .macro r6ck_3d inst, a, b, c, ret + .data +1: .dword \a +2: .dword \b +3: .dword \c +4: .dword \ret + .text + la $4, 1b + la $5, 2b + la $6, 3b + la $2, 4b + ldc1 $f2, 0($4) + ldc1 $f4, 0($5) + ldc1 $f6, 0($6) + lw $7, 0($2) + lw $8, 4($2) + \inst $f2, $f4, $f6 + + #simulate dmfc1 + mfhc1 $9, $f2 + mfc1 $10, $f2 + fp_assert $7, $9 + fp_assert $8, $10 + .endm + +.text +GetPC: + move $6, $ra + jr $ra |