Fixing SHR constant prop and new cntlz tests.

This commit is contained in:
Ben Vanik
2015-05-12 18:59:45 -07:00
parent 48ae4b65fb
commit cbdfd09e0f
9 changed files with 80 additions and 369 deletions

View File

@@ -8,14 +8,37 @@ Disassembly of section .text:
100000: 7c a6 00 74 cntlzd r6,r5
100004: 4e 80 00 20 blr
0000000000100008 <test_cntlzd_2>:
100008: 7c a6 00 74 cntlzd r6,r5
10000c: 4e 80 00 20 blr
0000000000100008 <test_cntlzd_1_constant>:
100008: 38 a0 00 00 li r5,0
10000c: 7c a6 00 74 cntlzd r6,r5
100010: 4e 80 00 20 blr
0000000000100010 <test_cntlzd_3>:
100010: 7c a6 00 74 cntlzd r6,r5
100014: 4e 80 00 20 blr
0000000000100014 <test_cntlzd_2>:
100014: 7c a6 00 74 cntlzd r6,r5
100018: 4e 80 00 20 blr
0000000000100018 <test_cntlzd_4>:
100018: 7c a6 00 74 cntlzd r6,r5
10001c: 4e 80 00 20 blr
000000000010001c <test_cntlzd_2_constant>:
10001c: 38 a0 00 01 li r5,1
100020: 7c a6 00 74 cntlzd r6,r5
100024: 4e 80 00 20 blr
0000000000100028 <test_cntlzd_3>:
100028: 7c a6 00 74 cntlzd r6,r5
10002c: 4e 80 00 20 blr
0000000000100030 <test_cntlzd_3_constant>:
100030: 38 a0 00 00 li r5,0
100034: 7c a5 28 f8 not r5,r5
100038: 7c a6 00 74 cntlzd r6,r5
10003c: 4e 80 00 20 blr
0000000000100040 <test_cntlzd_4>:
100040: 7c a6 00 74 cntlzd r6,r5
100044: 4e 80 00 20 blr
0000000000100048 <test_cntlzd_4_constant>:
100048: 38 a0 00 00 li r5,0
10004c: 7c a5 28 f8 not r5,r5
100050: 78 a5 f8 42 rldicl r5,r5,63,1
100054: 7c a6 00 74 cntlzd r6,r5
100058: 4e 80 00 20 blr

View File

@@ -1,4 +1,8 @@
0000000000000000 t test_cntlzd_1
0000000000000008 t test_cntlzd_2
0000000000000010 t test_cntlzd_3
0000000000000018 t test_cntlzd_4
0000000000000008 t test_cntlzd_1_constant
0000000000000014 t test_cntlzd_2
000000000000001c t test_cntlzd_2_constant
0000000000000028 t test_cntlzd_3
0000000000000030 t test_cntlzd_3_constant
0000000000000040 t test_cntlzd_4
0000000000000048 t test_cntlzd_4_constant

View File

@@ -8,14 +8,38 @@ Disassembly of section .text:
100000: 7c a6 00 34 cntlzw r6,r5
100004: 4e 80 00 20 blr
0000000000100008 <test_cntlzw_2>:
100008: 7c a6 00 34 cntlzw r6,r5
10000c: 4e 80 00 20 blr
0000000000100008 <test_cntlzw_1_constant>:
100008: 38 a0 00 00 li r5,0
10000c: 7c a6 00 34 cntlzw r6,r5
100010: 4e 80 00 20 blr
0000000000100010 <test_cntlzw_3>:
100010: 7c a6 00 34 cntlzw r6,r5
100014: 4e 80 00 20 blr
0000000000100014 <test_cntlzw_2>:
100014: 7c a6 00 34 cntlzw r6,r5
100018: 4e 80 00 20 blr
0000000000100018 <test_cntlzw_4>:
100018: 7c a6 00 34 cntlzw r6,r5
10001c: 4e 80 00 20 blr
000000000010001c <test_cntlzw_2_constant>:
10001c: 38 a0 00 01 li r5,1
100020: 7c a6 00 34 cntlzw r6,r5
100024: 4e 80 00 20 blr
0000000000100028 <test_cntlzw_3>:
100028: 7c a6 00 34 cntlzw r6,r5
10002c: 4e 80 00 20 blr
0000000000100030 <test_cntlzw_3_constant>:
100030: 38 a0 00 00 li r5,0
100034: 7c a5 28 f8 not r5,r5
100038: 54 a5 00 3e rotlwi r5,r5,0
10003c: 7c a6 00 34 cntlzw r6,r5
100040: 4e 80 00 20 blr
0000000000100044 <test_cntlzw_4>:
100044: 7c a6 00 34 cntlzw r6,r5
100048: 4e 80 00 20 blr
000000000010004c <test_cntlzw_4_constant>:
10004c: 38 a0 00 00 li r5,0
100050: 7c a5 28 f8 not r5,r5
100054: 54 a5 f8 7e rlwinm r5,r5,31,1,31
100058: 7c a6 00 34 cntlzw r6,r5
10005c: 4e 80 00 20 blr

View File

@@ -1,4 +1,8 @@
0000000000000000 t test_cntlzw_1
0000000000000008 t test_cntlzw_2
0000000000000010 t test_cntlzw_3
0000000000000018 t test_cntlzw_4
0000000000000008 t test_cntlzw_1_constant
0000000000000014 t test_cntlzw_2
000000000000001c t test_cntlzw_2_constant
0000000000000028 t test_cntlzw_3
0000000000000030 t test_cntlzw_3_constant
0000000000000044 t test_cntlzw_4
000000000000004c t test_cntlzw_4_constant

View File

@@ -552,7 +552,7 @@ void Value::Shr(Value* other) {
constant.i32 = (uint32_t)constant.i32 >> other->constant.i8;
break;
case INT64_TYPE:
constant.i64 = (uint16_t)constant.i64 >> other->constant.i8;
constant.i64 = (uint64_t)constant.i64 >> other->constant.i8;
break;
default:
assert_unhandled_case(type);