📄 mdmx-ob.s
字号:
# MDMX .OB op tests.# mach: mips64 sb1# as: -mabi=eabi# as(mips64): -mabi=eabi -mdmx# ld: -N -Ttext=0x80010000# output: *\\npass\\n .include "testutils.inc" .include "utils-mdmx.inc" setup .set noreorder .ent DIAGDIAG: enable_mdmx ### ### Non-accumulator, non-CC-using .ob format ops. ### ### Key: v = vector ### ev = vector of single element ### cv = vector of constant. ### writemsg "add.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd add.ob $f10, $f8, $f9 ck_ob $f10, 0x7799bbddffffffff writemsg "add.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd add.ob $f10, $f8, $f9[6] ck_ob $f10, 0x8899aabbccddeeff writemsg "add.ob (cv)" ld_ob $f8, 0x1122334455667788 add.ob $f10, $f8, 0x10 ck_ob $f10, 0x2132435465768798 writemsg "alni.ob" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd alni.ob $f10, $f8, $f9, 3 ck_ob $f10, 0x4455667788667788 writemsg "alnv.ob" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd li $4, 5 alnv.ob $f10, $f8, $f9, $4 ck_ob $f10, 0x66778866778899aa writemsg "and.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd and.ob $f10, $f8, $f9 ck_ob $f10, 0x0022000000224488 writemsg "and.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd and.ob $f10, $f8, $f9[4] ck_ob $f10, 0x1100110011001188 writemsg "and.ob (cv)" ld_ob $f8, 0x1122334455667788 and.ob $f10, $f8, 0x1e ck_ob $f10, 0x1002120414061608 writemsg "max.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd max.ob $f10, $f8, $f9 ck_ob $f10, 0x66778899aabbccdd writemsg "max.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd max.ob $f10, $f8, $f9[7] ck_ob $f10, 0x6666666666667788 writemsg "max.ob (cv)" ld_ob $f8, 0x1122334455667788 max.ob $f10, $f8, 0x15 ck_ob $f10, 0x1522334455667788 writemsg "min.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd min.ob $f10, $f8, $f9 ck_ob $f10, 0x1122334455667788 writemsg "min.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd min.ob $f10, $f8, $f9[7] ck_ob $f10, 0x1122334455666666 writemsg "min.ob (cv)" ld_ob $f8, 0x1122334455667788 min.ob $f10, $f8, 0x15 ck_ob $f10, 0x1115151515151515 writemsg "mul.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x0001020304050607 mul.ob $f10, $f8, $f9 ck_ob $f10, 0x002266ccffffffff writemsg "mul.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x0001020304050607 mul.ob $f10, $f8, $f9[4] ck_ob $f10, 0x336699ccffffffff writemsg "mul.ob (cv)" ld_ob $f8, 0x1122334455667788 mul.ob $f10, $f8, 2 ck_ob $f10, 0x22446688aacceeff writemsg "nor.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd nor.ob $f10, $f8, $f9 ck_ob $f10, 0x8888442200000022 writemsg "nor.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd nor.ob $f10, $f8, $f9[6] ck_ob $f10, 0x8888888888888800 writemsg "nor.ob (cv)" ld_ob $f8, 0x1122334455667788 nor.ob $f10, $f8, 0x08 ck_ob $f10, 0xe6d5c4b3a2918077 writemsg "or.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd or.ob $f10, $f8, $f9 ck_ob $f10, 0x7777bbddffffffdd writemsg "or.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd or.ob $f10, $f8, $f9[6] ck_ob $f10, 0x77777777777777ff writemsg "or.ob (cv)" ld_ob $f8, 0x1122334455667788 or.ob $f10, $f8, 0x08 ck_ob $f10, 0x192a3b4c5d6e7f88 writemsg "shfl.mixh.ob" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd shfl.mixh.ob $f10, $f8, $f9 ck_ob $f10, 0x1166227733884499 writemsg "shfl.mixl.ob" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd shfl.mixl.ob $f10, $f8, $f9 ck_ob $f10, 0x55aa66bb77cc88dd writemsg "shfl.pach.ob" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd shfl.pach.ob $f10, $f8, $f9 ck_ob $f10, 0x113355776688aacc writemsg "shfl.upsl.ob" ld_ob $f8, 0x1122334455667788 shfl.upsl.ob $f10, $f8, $f8 ck_ob $f10, 0x005500660077ff88 writemsg "sll.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x0001020304050607 sll.ob $f10, $f8, $f9 ck_ob $f10, 0x1144cc2050c0c000 writemsg "sll.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x0001020304050607 sll.ob $f10, $f8, $f9[3] ck_ob $f10, 0x1020304050607080 writemsg "sll.ob (cv)" ld_ob $f8, 0x1122334455667788 sll.ob $f10, $f8, 1 ck_ob $f10, 0x22446688aaccee10 writemsg "srl.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x0001020304050607 srl.ob $f10, $f8, $f9 ck_ob $f10, 0x11110c0805030101 writemsg "srl.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x0001020304050607 srl.ob $f10, $f8, $f9[3] ck_ob $f10, 0x0102030405060708 writemsg "srl.ob (cv)" ld_ob $f8, 0x1122334455667788 srl.ob $f10, $f8, 1 ck_ob $f10, 0x081119222a333b44 writemsg "sub.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x0001020304050607 sub.ob $f10, $f8, $f9 ck_ob $f10, 0x1121314151617181 writemsg "sub.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd sub.ob $f10, $f8, $f9[7] ck_ob $f10, 0x0000000000001122 writemsg "sub.ob (cv)" ld_ob $f8, 0x1122334455667788 sub.ob $f10, $f8, 0x10 ck_ob $f10, 0x0112233445566778 writemsg "xor.ob (v)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd xor.ob $f10, $f8, $f9 ck_ob $f10, 0x7755bbddffddbb55 writemsg "xor.ob (ev)" ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd xor.ob $f10, $f8, $f9[6] ck_ob $f10, 0x66554433221100ff writemsg "xor.ob (cv)" ld_ob $f8, 0x1122334455667788 xor.ob $f10, $f8, 0x08 ck_ob $f10, 0x192a3b4c5d6e7f80 ### ### Accumulator .ob format ops (in order: rd/wr, math, scale/round) ### ### Key: v = vector ### ev = vector of single element ### cv = vector of constant. ### writemsg "wacl.ob / rac[hml].ob" ld_ob $f8, 0x8001028304850687 ld_ob $f9, 0x1011121314151617 wacl.ob $f8, $f9 ck_acc_ob 0xff0000ff00ff00ff, 0x8001028304850687, 0x1011121314151617 # Note: relies on data left in accumulator by previous test. writemsg "wach.ob / rac[hml].ob" ld_ob $f8, 0x2021222324252627 wach.ob $f8 ck_acc_ob 0x2021222324252627, 0x8001028304850687, 0x1011121314151617 writemsg "adda.ob (v)" ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000 ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd adda.ob $f8, $f9 ck_acc_ob 0x0001020304050607, 0x0000000000010101, 0x7799bbddff214365 writemsg "adda.ob (ev)" ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000 ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd adda.ob $f8, $f9[2] ck_acc_ob 0x0001020304050607, 0x0000000001010101, 0xccddeeff10213243 writemsg "adda.ob (cv)" ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000 ld_ob $f8, 0x1122334455667788 adda.ob $f8, 0x1f ck_acc_ob 0x0001020304050607, 0x0000000000000000, 0x30415263748596a7 writemsg "addl.ob (v)" ld_acc_ob 0x0001020304050607, 0x0000000000000000, 0x0000000000000000 ld_ob $f8, 0x1122334455667788 ld_ob $f9, 0x66778899aabbccdd
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -