Shift tests and fix for bad sradi decoding.

This commit is contained in:
Ben Vanik 2014-09-10 21:26:35 -07:00
parent 8666c3975a
commit feffe590f2
38 changed files with 935 additions and 10 deletions

View File

@ -1112,13 +1112,17 @@ XEEMITTER(sradix, 0x7C000674, XS)(PPCHIRBuilder& f, InstrData& i) {
// CA is set if any bits are shifted out of the right and if the result
// is negative.
assert_true(sh);
if (sh) {
uint64_t mask = XEMASK(64 - sh, 63);
Value* ca = f.And(f.Truncate(f.Shr(v, 63), INT8_TYPE),
f.IsTrue(f.And(v, f.LoadConstant(mask))));
f.StoreCA(ca);
v = f.Sha(v, sh);
} else {
f.StoreCA(f.LoadZero(INT8_TYPE));
}
f.StoreGPR(i.XS.RA, v);
if (i.XS.Rc) {
f.UpdateCR(0, v);
@ -1252,6 +1256,7 @@ void RegisterEmitCategoryALU() {
XEREGISTERINSTR(srwx, 0x7C000430);
XEREGISTERINSTR(sradx, 0x7C000634);
XEREGISTERINSTR(sradix, 0x7C000674);
XEREGISTERINSTR(sradix, 0x7C000676); // HACK
XEREGISTERINSTR(srawx, 0x7C000630);
XEREGISTERINSTR(srawix, 0x7C000670);
}

View File

@ -591,7 +591,11 @@ static InstrType instr_table_31_unprep[] = {
INSTRUCTION(srawix, 0x7C000670, X, General, srawix,
"Shift Right Algebraic Word Immediate"),
INSTRUCTION(sradix, 0x7C000674, XS, General, sradix,
"Shift Right Algebraic Doubleword Immediate"), // TODO
"Shift Right Algebraic Doubleword Immediate"),
INSTRUCTION(sradix, 0x7C000674, XS, General, sradix,
"Shift Right Algebraic Doubleword Immediate"),
INSTRUCTION(sradix, 0x7C000676, XS, General, sradix,
"Shift Right Algebraic Doubleword Immediate"), // HACK
INSTRUCTION(eieio, 0x7C0006AC, X, General, _,
"Enforce In-Order Execution of I/O Instruction"),
INSTRUCTION(sthbrx, 0x7C00072C, X, General, X_RT_RA0_RB,

View File

@ -4,6 +4,10 @@
Disassembly of section .text:
0000000000100000 <test_ori>:
0000000000100000 <test_ori_1>:
100000: 60 83 fe dc ori r3,r4,65244
100004: 4e 80 00 20 blr
0000000000100008 <test_ori_2>:
100008: 60 83 fe dc ori r3,r4,65244
10000c: 4e 80 00 20 blr

View File

@ -1 +1,2 @@
0000000000000000 t test_ori
0000000000000000 t test_ori_1
0000000000000008 t test_ori_2

Binary file not shown.

View File

@ -0,0 +1,33 @@
/cygdrive/d/dev/xenia/src/alloy/frontend/ppc/test/bin//instr_sld.o: file format elf64-powerpc
Disassembly of section .text:
0000000000100000 <test_sld_1>:
100000: 7c 83 28 36 sld r3,r4,r5
100004: 4e 80 00 20 blr
0000000000100008 <test_sld_2>:
100008: 7c 83 28 36 sld r3,r4,r5
10000c: 4e 80 00 20 blr
0000000000100010 <test_sld_3>:
100010: 7c 83 28 36 sld r3,r4,r5
100014: 4e 80 00 20 blr
0000000000100018 <test_sld_4>:
100018: 7c 83 28 36 sld r3,r4,r5
10001c: 4e 80 00 20 blr
0000000000100020 <test_sld_5>:
100020: 7c 83 28 36 sld r3,r4,r5
100024: 4e 80 00 20 blr
0000000000100028 <test_sld_6>:
100028: 7c 83 28 36 sld r3,r4,r5
10002c: 4e 80 00 20 blr
0000000000100030 <test_sld_7>:
100030: 7c 83 28 36 sld r3,r4,r5
100034: 4e 80 00 20 blr

View File

@ -0,0 +1,7 @@
0000000000000000 t test_sld_1
0000000000000008 t test_sld_2
0000000000000010 t test_sld_3
0000000000000018 t test_sld_4
0000000000000020 t test_sld_5
0000000000000028 t test_sld_6
0000000000000030 t test_sld_7

Binary file not shown.

View File

@ -0,0 +1,41 @@
/cygdrive/d/dev/xenia/src/alloy/frontend/ppc/test/bin//instr_slw.o: file format elf64-powerpc
Disassembly of section .text:
0000000000100000 <test_slw_1>:
100000: 7c 83 28 30 slw r3,r4,r5
100004: 4e 80 00 20 blr
0000000000100008 <test_slw_2>:
100008: 7c 83 28 30 slw r3,r4,r5
10000c: 4e 80 00 20 blr
0000000000100010 <test_slw_3>:
100010: 7c 83 28 30 slw r3,r4,r5
100014: 4e 80 00 20 blr
0000000000100018 <test_slw_4>:
100018: 7c 83 28 30 slw r3,r4,r5
10001c: 4e 80 00 20 blr
0000000000100020 <test_slw_5>:
100020: 7c 83 28 30 slw r3,r4,r5
100024: 4e 80 00 20 blr
0000000000100028 <test_slw_6>:
100028: 7c 83 28 30 slw r3,r4,r5
10002c: 4e 80 00 20 blr
0000000000100030 <test_slw_7>:
100030: 7c 83 28 30 slw r3,r4,r5
100034: 4e 80 00 20 blr
0000000000100038 <test_slw_8>:
100038: 7c 83 28 30 slw r3,r4,r5
10003c: 4e 80 00 20 blr
0000000000100040 <test_slw_9>:
100040: 7c 83 28 30 slw r3,r4,r5
100044: 4e 80 00 20 blr

View File

@ -0,0 +1,9 @@
0000000000000000 t test_slw_1
0000000000000008 t test_slw_2
0000000000000010 t test_slw_3
0000000000000018 t test_slw_4
0000000000000020 t test_slw_5
0000000000000028 t test_slw_6
0000000000000030 t test_slw_7
0000000000000038 t test_slw_8
0000000000000040 t test_slw_9

Binary file not shown.

View File

@ -0,0 +1,40 @@
/cygdrive/d/dev/xenia/src/alloy/frontend/ppc/test/bin//instr_srad.o: file format elf64-powerpc
Disassembly of section .text:
0000000000100000 <test_srad_1>:
100000: 7c 83 2e 34 srad r3,r4,r5
100004: 7c c0 01 14 adde r6,r0,r0
100008: 4e 80 00 20 blr
000000000010000c <test_srad_2>:
10000c: 7c 83 2e 34 srad r3,r4,r5
100010: 7c c0 01 14 adde r6,r0,r0
100014: 4e 80 00 20 blr
0000000000100018 <test_srad_3>:
100018: 7c 83 2e 34 srad r3,r4,r5
10001c: 7c c0 01 14 adde r6,r0,r0
100020: 4e 80 00 20 blr
0000000000100024 <test_srad_4>:
100024: 7c 83 2e 34 srad r3,r4,r5
100028: 7c c0 01 14 adde r6,r0,r0
10002c: 4e 80 00 20 blr
0000000000100030 <test_srad_5>:
100030: 7c 83 2e 34 srad r3,r4,r5
100034: 7c c0 01 14 adde r6,r0,r0
100038: 4e 80 00 20 blr
000000000010003c <test_srad_6>:
10003c: 7c 83 2e 34 srad r3,r4,r5
100040: 7c c0 01 14 adde r6,r0,r0
100044: 4e 80 00 20 blr
0000000000100048 <test_srad_7>:
100048: 7c 83 2e 34 srad r3,r4,r5
10004c: 7c c0 01 14 adde r6,r0,r0
100050: 4e 80 00 20 blr

View File

@ -0,0 +1,7 @@
0000000000000000 t test_srad_1
000000000000000c t test_srad_2
0000000000000018 t test_srad_3
0000000000000024 t test_srad_4
0000000000000030 t test_srad_5
000000000000003c t test_srad_6
0000000000000048 t test_srad_7

Binary file not shown.

View File

@ -0,0 +1,30 @@
/cygdrive/d/dev/xenia/src/alloy/frontend/ppc/test/bin//instr_sradi.o: file format elf64-powerpc
Disassembly of section .text:
0000000000100000 <test_sradi_1>:
100000: 7c 83 06 74 sradi r3,r4,0
100004: 7c c0 01 14 adde r6,r0,r0
100008: 4e 80 00 20 blr
000000000010000c <test_sradi_2>:
10000c: 7c 83 06 74 sradi r3,r4,0
100010: 7c c0 01 14 adde r6,r0,r0
100014: 4e 80 00 20 blr
0000000000100018 <test_sradi_3>:
100018: 7c 83 0e 74 sradi r3,r4,1
10001c: 7c c0 01 14 adde r6,r0,r0
100020: 4e 80 00 20 blr
0000000000100024 <test_sradi_4>:
100024: 7c 83 f6 76 sradi r3,r4,62
100028: 7c c0 01 14 adde r6,r0,r0
10002c: 4e 80 00 20 blr
0000000000100030 <test_sradi_5>:
100030: 7c 83 fe 76 sradi r3,r4,63
100034: 7c c0 01 14 adde r6,r0,r0
100038: 4e 80 00 20 blr

View File

@ -0,0 +1,5 @@
0000000000000000 t test_sradi_1
000000000000000c t test_sradi_2
0000000000000018 t test_sradi_3
0000000000000024 t test_sradi_4
0000000000000030 t test_sradi_5

Binary file not shown.

View File

@ -0,0 +1,50 @@
/cygdrive/d/dev/xenia/src/alloy/frontend/ppc/test/bin//instr_sraw.o: file format elf64-powerpc
Disassembly of section .text:
0000000000100000 <test_sraw_1>:
100000: 7c 83 2e 30 sraw r3,r4,r5
100004: 7c c0 01 14 adde r6,r0,r0
100008: 4e 80 00 20 blr
000000000010000c <test_sraw_2>:
10000c: 7c 83 2e 30 sraw r3,r4,r5
100010: 7c c0 01 14 adde r6,r0,r0
100014: 4e 80 00 20 blr
0000000000100018 <test_sraw_3>:
100018: 7c 83 2e 30 sraw r3,r4,r5
10001c: 7c c0 01 14 adde r6,r0,r0
100020: 4e 80 00 20 blr
0000000000100024 <test_sraw_4>:
100024: 7c 83 2e 30 sraw r3,r4,r5
100028: 7c c0 01 14 adde r6,r0,r0
10002c: 4e 80 00 20 blr
0000000000100030 <test_sraw_5>:
100030: 7c 83 2e 30 sraw r3,r4,r5
100034: 7c c0 01 14 adde r6,r0,r0
100038: 4e 80 00 20 blr
000000000010003c <test_sraw_6>:
10003c: 7c 83 2e 30 sraw r3,r4,r5
100040: 7c c0 01 14 adde r6,r0,r0
100044: 4e 80 00 20 blr
0000000000100048 <test_sraw_7>:
100048: 7c 83 2e 30 sraw r3,r4,r5
10004c: 7c c0 01 14 adde r6,r0,r0
100050: 4e 80 00 20 blr
0000000000100054 <test_sraw_8>:
100054: 7c 83 2e 30 sraw r3,r4,r5
100058: 7c c0 01 14 adde r6,r0,r0
10005c: 4e 80 00 20 blr
0000000000100060 <test_sraw_9>:
100060: 7c 83 2e 30 sraw r3,r4,r5
100064: 7c c0 01 14 adde r6,r0,r0
100068: 4e 80 00 20 blr

View File

@ -0,0 +1,9 @@
0000000000000000 t test_sraw_1
000000000000000c t test_sraw_2
0000000000000018 t test_sraw_3
0000000000000024 t test_sraw_4
0000000000000030 t test_sraw_5
000000000000003c t test_sraw_6
0000000000000048 t test_sraw_7
0000000000000054 t test_sraw_8
0000000000000060 t test_sraw_9

Binary file not shown.

View File

@ -0,0 +1,30 @@
/cygdrive/d/dev/xenia/src/alloy/frontend/ppc/test/bin//instr_srawi.o: file format elf64-powerpc
Disassembly of section .text:
0000000000100000 <test_srawi_1>:
100000: 7c 83 06 70 srawi r3,r4,0
100004: 7c c0 01 14 adde r6,r0,r0
100008: 4e 80 00 20 blr
000000000010000c <test_srawi_2>:
10000c: 7c 83 06 70 srawi r3,r4,0
100010: 7c c0 01 14 adde r6,r0,r0
100014: 4e 80 00 20 blr
0000000000100018 <test_srawi_3>:
100018: 7c 83 0e 70 srawi r3,r4,1
10001c: 7c c0 01 14 adde r6,r0,r0
100020: 4e 80 00 20 blr
0000000000100024 <test_srawi_4>:
100024: 7c 83 f6 70 srawi r3,r4,30
100028: 7c c0 01 14 adde r6,r0,r0
10002c: 4e 80 00 20 blr
0000000000100030 <test_srawi_5>:
100030: 7c 83 fe 70 srawi r3,r4,31
100034: 7c c0 01 14 adde r6,r0,r0
100038: 4e 80 00 20 blr

View File

@ -0,0 +1,5 @@
0000000000000000 t test_srawi_1
000000000000000c t test_srawi_2
0000000000000018 t test_srawi_3
0000000000000024 t test_srawi_4
0000000000000030 t test_srawi_5

Binary file not shown.

View File

@ -0,0 +1,33 @@
/cygdrive/d/dev/xenia/src/alloy/frontend/ppc/test/bin//instr_srd.o: file format elf64-powerpc
Disassembly of section .text:
0000000000100000 <test_srd_1>:
100000: 7c 83 2c 36 srd r3,r4,r5
100004: 4e 80 00 20 blr
0000000000100008 <test_srd_2>:
100008: 7c 83 2c 36 srd r3,r4,r5
10000c: 4e 80 00 20 blr
0000000000100010 <test_srd_3>:
100010: 7c 83 2c 36 srd r3,r4,r5
100014: 4e 80 00 20 blr
0000000000100018 <test_srd_4>:
100018: 7c 83 2c 36 srd r3,r4,r5
10001c: 4e 80 00 20 blr
0000000000100020 <test_srd_5>:
100020: 7c 83 2c 36 srd r3,r4,r5
100024: 4e 80 00 20 blr
0000000000100028 <test_srd_6>:
100028: 7c 83 2c 36 srd r3,r4,r5
10002c: 4e 80 00 20 blr
0000000000100030 <test_srd_7>:
100030: 7c 83 2c 36 srd r3,r4,r5
100034: 4e 80 00 20 blr

View File

@ -0,0 +1,7 @@
0000000000000000 t test_srd_1
0000000000000008 t test_srd_2
0000000000000010 t test_srd_3
0000000000000018 t test_srd_4
0000000000000020 t test_srd_5
0000000000000028 t test_srd_6
0000000000000030 t test_srd_7

Binary file not shown.

View File

@ -0,0 +1,41 @@
/cygdrive/d/dev/xenia/src/alloy/frontend/ppc/test/bin//instr_srw.o: file format elf64-powerpc
Disassembly of section .text:
0000000000100000 <test_srw_1>:
100000: 7c 83 2c 30 srw r3,r4,r5
100004: 4e 80 00 20 blr
0000000000100008 <test_srw_2>:
100008: 7c 83 2c 30 srw r3,r4,r5
10000c: 4e 80 00 20 blr
0000000000100010 <test_srw_3>:
100010: 7c 83 2c 30 srw r3,r4,r5
100014: 4e 80 00 20 blr
0000000000100018 <test_srw_4>:
100018: 7c 83 2c 30 srw r3,r4,r5
10001c: 4e 80 00 20 blr
0000000000100020 <test_srw_5>:
100020: 7c 83 2c 30 srw r3,r4,r5
100024: 4e 80 00 20 blr
0000000000100028 <test_srw_6>:
100028: 7c 83 2c 30 srw r3,r4,r5
10002c: 4e 80 00 20 blr
0000000000100030 <test_srw_7>:
100030: 7c 83 2c 30 srw r3,r4,r5
100034: 4e 80 00 20 blr
0000000000100038 <test_srw_8>:
100038: 7c 83 2c 30 srw r3,r4,r5
10003c: 4e 80 00 20 blr
0000000000100040 <test_srw_9>:
100040: 7c 83 2c 30 srw r3,r4,r5
100044: 4e 80 00 20 blr

View File

@ -0,0 +1,9 @@
0000000000000000 t test_srw_1
0000000000000008 t test_srw_2
0000000000000010 t test_srw_3
0000000000000018 t test_srw_4
0000000000000020 t test_srw_5
0000000000000028 t test_srw_6
0000000000000030 t test_srw_7
0000000000000038 t test_srw_8
0000000000000040 t test_srw_9

View File

@ -1,4 +1,4 @@
test_ori:
test_ori_1:
#_ REGISTER_IN r4 0xDEADBEEF00000000
ori r3, r4, 0xFEDC
@ -6,3 +6,12 @@ test_ori:
blr
#_ REGISTER_OUT r3 0xDEADBEEF0000FEDC
#_ REGISTER_OUT r4 0xDEADBEEF00000000
test_ori_2:
#_ REGISTER_IN r4 0xDEADBEEF10000000
ori r3, r4, 0xFEDC
blr
#_ REGISTER_OUT r3 0xDEADBEEF1000FEDC
#_ REGISTER_OUT r4 0xDEADBEEF10000000

View File

@ -0,0 +1,62 @@
test_sld_1:
#_ REGISTER_IN r4 1
#_ REGISTER_IN r5 0
sld r3, r4, r5
blr
#_ REGISTER_OUT r3 1
#_ REGISTER_OUT r4 1
#_ REGISTER_OUT r5 0
test_sld_2:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 0
sld r3, r4, r5
blr
#_ REGISTER_OUT r3 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 0
test_sld_3:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 1
sld r3, r4, r5
blr
#_ REGISTER_OUT r3 0xFFFFFFFFFFFFFFFE
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 1
test_sld_4:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 62
sld r3, r4, r5
blr
#_ REGISTER_OUT r3 0xc000000000000000
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 62
test_sld_5:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 63
sld r3, r4, r5
blr
#_ REGISTER_OUT r3 0x8000000000000000
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 63
test_sld_6:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 64
sld r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 64
test_sld_7:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 100
sld r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 100

View File

@ -0,0 +1,80 @@
test_slw_1:
#_ REGISTER_IN r4 1
#_ REGISTER_IN r5 0
slw r3, r4, r5
blr
#_ REGISTER_OUT r3 1
#_ REGISTER_OUT r4 1
#_ REGISTER_OUT r5 0
test_slw_2:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 0
slw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x00000000FFFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 0
test_slw_3:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 1
slw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x00000000FFFFFFFE
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 1
test_slw_4:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 63
slw r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 63
test_slw_5:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 64
slw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x00000000FFFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 64
test_slw_6:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 100
slw r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 100
test_slw_7:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 30
slw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x00000000c0000000
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 30
test_slw_8:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 31
slw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x0000000080000000
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 31
test_slw_9:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 32
slw r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 32

View File

@ -0,0 +1,76 @@
test_srad_1:
#_ REGISTER_IN r4 1
#_ REGISTER_IN r5 0
srad r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 1
#_ REGISTER_OUT r4 1
#_ REGISTER_OUT r5 0
#_ REGISTER_OUT r6 0
test_srad_2:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 0
srad r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 0
#_ REGISTER_OUT r6 0
test_srad_3:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 1
srad r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 1
#_ REGISTER_OUT r6 1
test_srad_4:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 62
srad r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 62
#_ REGISTER_OUT r6 1
test_srad_5:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 63
srad r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 63
#_ REGISTER_OUT r6 1
test_srad_6:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 64
srad r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 64
#_ REGISTER_OUT r6 1
test_srad_7:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 100
srad r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 100
#_ REGISTER_OUT r6 1

View File

@ -0,0 +1,44 @@
test_sradi_1:
#_ REGISTER_IN r4 1
sradi r3, r4, 0
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 1
#_ REGISTER_OUT r4 1
#_ REGISTER_OUT r6 0
test_sradi_2:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
sradi r3, r4, 0
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r6 0
test_sradi_3:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
sradi r3, r4, 1
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r6 1
test_sradi_4:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
sradi r3, r4, 62
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r6 1
test_sradi_5:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
sradi r3, r4, 63
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r6 1

View File

@ -0,0 +1,98 @@
test_sraw_1:
#_ REGISTER_IN r4 1
#_ REGISTER_IN r5 0
sraw r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 1
#_ REGISTER_OUT r4 1
#_ REGISTER_OUT r5 0
#_ REGISTER_OUT r6 0
test_sraw_2:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 0
sraw r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 0
#_ REGISTER_OUT r6 0
test_sraw_3:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 1
sraw r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 1
#_ REGISTER_OUT r6 1
test_sraw_4:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 63
sraw r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 63
#_ REGISTER_OUT r6 1
test_sraw_5:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 64
sraw r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 64
#_ REGISTER_OUT r6 0
test_sraw_6:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 100
sraw r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 100
#_ REGISTER_OUT r6 1
test_sraw_7:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 30
sraw r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 30
#_ REGISTER_OUT r6 1
test_sraw_8:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 31
sraw r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 31
#_ REGISTER_OUT r6 1
test_sraw_9:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 32
sraw r3, r4, r5
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 32
#_ REGISTER_OUT r6 1

View File

@ -0,0 +1,44 @@
test_srawi_1:
#_ REGISTER_IN r4 1
srawi r3, r4, 0
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 1
#_ REGISTER_OUT r4 1
#_ REGISTER_OUT r6 0
test_srawi_2:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
srawi r3, r4, 0
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r6 0
test_srawi_3:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
srawi r3, r4, 1
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r6 1
test_srawi_4:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
srawi r3, r4, 30
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r6 1
test_srawi_5:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
srawi r3, r4, 31
adde r6, r0, r0
blr
#_ REGISTER_OUT r3 0xffffffffffffffff
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r6 1

View File

@ -0,0 +1,62 @@
test_srd_1:
#_ REGISTER_IN r4 1
#_ REGISTER_IN r5 0
srd r3, r4, r5
blr
#_ REGISTER_OUT r3 1
#_ REGISTER_OUT r4 1
#_ REGISTER_OUT r5 0
test_srd_2:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 0
srd r3, r4, r5
blr
#_ REGISTER_OUT r3 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 0
test_srd_3:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 1
srd r3, r4, r5
blr
#_ REGISTER_OUT r3 0x7FFFFFFFFFFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 1
test_srd_4:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 62
srd r3, r4, r5
blr
#_ REGISTER_OUT r3 0x0000000000000003
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 62
test_srd_5:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 63
srd r3, r4, r5
blr
#_ REGISTER_OUT r3 0x0000000000000001
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 63
test_srd_6:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 64
srd r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 64
test_srd_7:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 100
srd r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 100

View File

@ -0,0 +1,80 @@
test_srw_1:
#_ REGISTER_IN r4 1
#_ REGISTER_IN r5 0
srw r3, r4, r5
blr
#_ REGISTER_OUT r3 1
#_ REGISTER_OUT r4 1
#_ REGISTER_OUT r5 0
test_srw_2:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 0
srw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x00000000FFFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 0
test_srw_3:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 1
srw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x000000007FFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 1
test_srw_4:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 63
srw r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 63
test_srw_5:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 64
srw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x00000000FFFFFFFF
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 64
test_srw_6:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 100
srw r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 100
test_srw_7:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 30
srw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x0000000000000003
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 30
test_srw_8:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 31
srw r3, r4, r5
blr
#_ REGISTER_OUT r3 0x0000000000000001
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 31
test_srw_9:
#_ REGISTER_IN r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_IN r5 32
srw r3, r4, r5
blr
#_ REGISTER_OUT r3 0
#_ REGISTER_OUT r4 0xFFFFFFFFFFFFFFFF
#_ REGISTER_OUT r5 32