@@ -3332,8 +3332,8 @@ func rewriteValueMIPS_OpMIPSMOVBUload(v *Value, config *Config) bool {
3332
3332
return true
3333
3333
}
3334
3334
// match: (MOVBUload [off] {sym} ptr (MOVBstore [off2] {sym2} ptr2 x _))
3335
- // cond: sym == sym2 && off == off2 && isSamePtr(ptr, ptr2) && !isSigned(x.Type)
3336
- // result: x
3335
+ // cond: sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)
3336
+ // result: (MOVBUreg x)
3337
3337
for {
3338
3338
off := v .AuxInt
3339
3339
sym := v .Aux
@@ -3346,11 +3346,10 @@ func rewriteValueMIPS_OpMIPSMOVBUload(v *Value, config *Config) bool {
3346
3346
sym2 := v_1 .Aux
3347
3347
ptr2 := v_1 .Args [0 ]
3348
3348
x := v_1 .Args [1 ]
3349
- if ! (sym == sym2 && off == off2 && isSamePtr (ptr , ptr2 ) && ! isSigned ( x . Type ) ) {
3349
+ if ! (sym == sym2 && off == off2 && isSamePtr (ptr , ptr2 )) {
3350
3350
break
3351
3351
}
3352
- v .reset (OpCopy )
3353
- v .Type = x .Type
3352
+ v .reset (OpMIPSMOVBUreg )
3354
3353
v .AddArg (x )
3355
3354
return true
3356
3355
}
@@ -3490,8 +3489,8 @@ func rewriteValueMIPS_OpMIPSMOVBload(v *Value, config *Config) bool {
3490
3489
return true
3491
3490
}
3492
3491
// match: (MOVBload [off] {sym} ptr (MOVBstore [off2] {sym2} ptr2 x _))
3493
- // cond: sym == sym2 && off == off2 && isSamePtr(ptr, ptr2) && isSigned(x.Type)
3494
- // result: x
3492
+ // cond: sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)
3493
+ // result: (MOVBreg x)
3495
3494
for {
3496
3495
off := v .AuxInt
3497
3496
sym := v .Aux
@@ -3504,11 +3503,10 @@ func rewriteValueMIPS_OpMIPSMOVBload(v *Value, config *Config) bool {
3504
3503
sym2 := v_1 .Aux
3505
3504
ptr2 := v_1 .Args [0 ]
3506
3505
x := v_1 .Args [1 ]
3507
- if ! (sym == sym2 && off == off2 && isSamePtr (ptr , ptr2 ) && isSigned ( x . Type ) ) {
3506
+ if ! (sym == sym2 && off == off2 && isSamePtr (ptr , ptr2 )) {
3508
3507
break
3509
3508
}
3510
- v .reset (OpCopy )
3511
- v .Type = x .Type
3509
+ v .reset (OpMIPSMOVBreg )
3512
3510
v .AddArg (x )
3513
3511
return true
3514
3512
}
@@ -4148,8 +4146,8 @@ func rewriteValueMIPS_OpMIPSMOVHUload(v *Value, config *Config) bool {
4148
4146
return true
4149
4147
}
4150
4148
// match: (MOVHUload [off] {sym} ptr (MOVHstore [off2] {sym2} ptr2 x _))
4151
- // cond: sym == sym2 && off == off2 && isSamePtr(ptr, ptr2) && !isSigned(x.Type)
4152
- // result: x
4149
+ // cond: sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)
4150
+ // result: (MOVHUreg x)
4153
4151
for {
4154
4152
off := v .AuxInt
4155
4153
sym := v .Aux
@@ -4162,11 +4160,10 @@ func rewriteValueMIPS_OpMIPSMOVHUload(v *Value, config *Config) bool {
4162
4160
sym2 := v_1 .Aux
4163
4161
ptr2 := v_1 .Args [0 ]
4164
4162
x := v_1 .Args [1 ]
4165
- if ! (sym == sym2 && off == off2 && isSamePtr (ptr , ptr2 ) && ! isSigned ( x . Type ) ) {
4163
+ if ! (sym == sym2 && off == off2 && isSamePtr (ptr , ptr2 )) {
4166
4164
break
4167
4165
}
4168
- v .reset (OpCopy )
4169
- v .Type = x .Type
4166
+ v .reset (OpMIPSMOVHUreg )
4170
4167
v .AddArg (x )
4171
4168
return true
4172
4169
}
@@ -4330,8 +4327,8 @@ func rewriteValueMIPS_OpMIPSMOVHload(v *Value, config *Config) bool {
4330
4327
return true
4331
4328
}
4332
4329
// match: (MOVHload [off] {sym} ptr (MOVHstore [off2] {sym2} ptr2 x _))
4333
- // cond: sym == sym2 && off == off2 && isSamePtr(ptr, ptr2) && isSigned(x.Type)
4334
- // result: x
4330
+ // cond: sym == sym2 && off == off2 && isSamePtr(ptr, ptr2)
4331
+ // result: (MOVHreg x)
4335
4332
for {
4336
4333
off := v .AuxInt
4337
4334
sym := v .Aux
@@ -4344,11 +4341,10 @@ func rewriteValueMIPS_OpMIPSMOVHload(v *Value, config *Config) bool {
4344
4341
sym2 := v_1 .Aux
4345
4342
ptr2 := v_1 .Args [0 ]
4346
4343
x := v_1 .Args [1 ]
4347
- if ! (sym == sym2 && off == off2 && isSamePtr (ptr , ptr2 ) && isSigned ( x . Type ) ) {
4344
+ if ! (sym == sym2 && off == off2 && isSamePtr (ptr , ptr2 )) {
4348
4345
break
4349
4346
}
4350
- v .reset (OpCopy )
4351
- v .Type = x .Type
4347
+ v .reset (OpMIPSMOVHreg )
4352
4348
v .AddArg (x )
4353
4349
return true
4354
4350
}
0 commit comments