Commit d83d754
committed
Fix 16-bit MOVSX MOVZX MOVSXD semantics
Progress report:\n- Added missing 16-bit operand-size MOVZX/MOVSX selectors for GPRv_GPR16 and MEMw forms.\n- Corrected MOVSXD 16-bit operand-size semantics to write a 16-bit destination instead of incorrectly zero-extending through a 32-bit destination.\n- Corrected non-REX.W 32-bit MOVSXD forms to write 32-bit destinations instead of sign-extending into 64-bit registers.\n\nVerification from remill-tester release build:\n- cmake --build build-release --target remill-tester -j4\n- ./build-release/remill-tester --self-test\n- ./build-release/remill-tester 3975WX/movzx.txt --execute --stop-on-first-fail\n- ./build-release/remill-tester 3975WX/movsx.txt --execute --stop-on-first-fail\n- ./build-release/remill-tester 3975WX/movsxd.txt --execute --stop-on-first-fail\n\nResults:\n- self-test: ok.\n- movzx.txt: 75022 passed, 0 failed, 0 skipped.\n- movsx.txt: 113322 passed, 0 failed, 0 skipped.\n- movsxd.txt: 54256 passed, 0 failed, 0 skipped.1 parent ba4c420 commit d83d754
1 file changed
Lines changed: 9 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1122 | 1122 | | |
1123 | 1123 | | |
1124 | 1124 | | |
| 1125 | + | |
1125 | 1126 | | |
1126 | 1127 | | |
| 1128 | + | |
| 1129 | + | |
1127 | 1130 | | |
1128 | 1131 | | |
1129 | 1132 | | |
| |||
1136 | 1139 | | |
1137 | 1140 | | |
1138 | 1141 | | |
| 1142 | + | |
1139 | 1143 | | |
1140 | 1144 | | |
1141 | 1145 | | |
1142 | 1146 | | |
1143 | 1147 | | |
1144 | 1148 | | |
| 1149 | + | |
| 1150 | + | |
1145 | 1151 | | |
1146 | 1152 | | |
1147 | 1153 | | |
1148 | | - | |
| 1154 | + | |
1149 | 1155 | | |
1150 | 1156 | | |
1151 | 1157 | | |
1152 | | - | |
1153 | | - | |
| 1158 | + | |
| 1159 | + | |
1154 | 1160 | | |
1155 | 1161 | | |
1156 | 1162 | | |
| |||
0 commit comments