Fixing mtcr -- needs some tests.
This commit is contained in:
parent
d1f1fa8951
commit
211af0b2c6
|
@ -301,13 +301,17 @@ void PPCHIRBuilder::StoreCR(uint32_t n, Value* value) {
|
||||||
// Pull out the bits we are interested in.
|
// Pull out the bits we are interested in.
|
||||||
// Optimization passes will kill any unneeded stores (mostly).
|
// Optimization passes will kill any unneeded stores (mostly).
|
||||||
StoreContext(offsetof(PPCContext, cr0) + (4 * n) + 0,
|
StoreContext(offsetof(PPCContext, cr0) + (4 * n) + 0,
|
||||||
Truncate(Shr(value, 4 * (7 - n) + 3), INT8_TYPE));
|
And(Truncate(Shr(value, 4 * (7 - n) + 3), INT8_TYPE),
|
||||||
|
LoadConstant(uint8_t(1))));
|
||||||
StoreContext(offsetof(PPCContext, cr0) + (4 * n) + 1,
|
StoreContext(offsetof(PPCContext, cr0) + (4 * n) + 1,
|
||||||
Truncate(Shr(value, 4 * (7 - n) + 2), INT8_TYPE));
|
And(Truncate(Shr(value, 4 * (7 - n) + 2), INT8_TYPE),
|
||||||
|
LoadConstant(uint8_t(1))));
|
||||||
StoreContext(offsetof(PPCContext, cr0) + (4 * n) + 2,
|
StoreContext(offsetof(PPCContext, cr0) + (4 * n) + 2,
|
||||||
Truncate(Shr(value, 4 * (7 - n) + 1), INT8_TYPE));
|
And(Truncate(Shr(value, 4 * (7 - n) + 1), INT8_TYPE),
|
||||||
|
LoadConstant(uint8_t(1))));
|
||||||
StoreContext(offsetof(PPCContext, cr0) + (4 * n) + 3,
|
StoreContext(offsetof(PPCContext, cr0) + (4 * n) + 3,
|
||||||
Truncate(Shr(value, 4 * (7 - n) + 0), INT8_TYPE));
|
And(Truncate(Shr(value, 4 * (7 - n) + 0), INT8_TYPE),
|
||||||
|
LoadConstant(uint8_t(1))));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PPCHIRBuilder::StoreCRField(uint32_t n, uint32_t bit, Value* value) {
|
void PPCHIRBuilder::StoreCRField(uint32_t n, uint32_t bit, Value* value) {
|
||||||
|
|
Loading…
Reference in New Issue