@@ -161,7 +161,6 @@ var optab = []Optab{
161
161
Optab {AAND , C_REG , C_REG , C_NONE , C_REG , 6 , 0 },
162
162
Optab {AAND , C_REG , C_NONE , C_NONE , C_REG , 6 , 0 },
163
163
Optab {AAND , C_LCON , C_NONE , C_NONE , C_REG , 23 , 0 },
164
- Optab {AAND , C_LCON , C_REG , C_NONE , C_REG , 23 , 0 },
165
164
Optab {AAND , C_LOREG , C_NONE , C_NONE , C_REG , 12 , 0 },
166
165
Optab {AAND , C_LAUTO , C_NONE , C_NONE , C_REG , 12 , REGSP },
167
166
Optab {AANDW , C_REG , C_REG , C_NONE , C_REG , 6 , 0 },
@@ -3063,57 +3062,37 @@ func asmout(ctxt *obj.Link, asm *[]byte) {
3063
3062
zRIE (_d , oprie , uint32 (p .To .Reg ), uint32 (r ), uint32 (v ), 0 , 0 , 0 , 0 , asm )
3064
3063
}
3065
3064
3066
- case 23 : // 64-bit logical op $constant [reg] reg
3067
- // TODO(mundaym): remove the optional register and merge with case 24.
3065
+ case 23 : // 64-bit logical op $constant reg
3066
+ // TODO(mundaym): merge with case 24.
3068
3067
v := vregoff (ctxt , & p .From )
3069
- var opcode uint32
3070
- r := p .Reg
3071
- if r == 0 {
3072
- r = p .To .Reg
3073
- }
3074
- if r == p .To .Reg {
3075
- switch p .As {
3076
- default :
3077
- ctxt .Diag ("%v is not supported" , p )
3078
- case AAND :
3079
- if v >= 0 { // needs zero extend
3080
- zRIL (_a , op_LGFI , REGTMP , uint32 (v ), asm )
3081
- zRRE (op_NGR , uint32 (p .To .Reg ), REGTMP , asm )
3082
- } else if int64 (int16 (v )) == v {
3083
- zRI (op_NILL , uint32 (p .To .Reg ), uint32 (v ), asm )
3084
- } else { // r.To.Reg & 0xffffffff00000000 & uint32(v)
3085
- zRIL (_a , op_NILF , uint32 (p .To .Reg ), uint32 (v ), asm )
3086
- }
3087
- case AOR :
3088
- if int64 (uint32 (v )) != v { // needs sign extend
3089
- zRIL (_a , op_LGFI , REGTMP , uint32 (v ), asm )
3090
- zRRE (op_OGR , uint32 (p .To .Reg ), REGTMP , asm )
3091
- } else if int64 (uint16 (v )) == v {
3092
- zRI (op_OILL , uint32 (p .To .Reg ), uint32 (v ), asm )
3093
- } else {
3094
- zRIL (_a , op_OILF , uint32 (p .To .Reg ), uint32 (v ), asm )
3095
- }
3096
- case AXOR :
3097
- if int64 (uint32 (v )) != v { // needs sign extend
3098
- zRIL (_a , op_LGFI , REGTMP , uint32 (v ), asm )
3099
- zRRE (op_XGR , uint32 (p .To .Reg ), REGTMP , asm )
3100
- } else {
3101
- zRIL (_a , op_XILF , uint32 (p .To .Reg ), uint32 (v ), asm )
3102
- }
3068
+ switch p .As {
3069
+ default :
3070
+ ctxt .Diag ("%v is not supported" , p )
3071
+ case AAND :
3072
+ if v >= 0 { // needs zero extend
3073
+ zRIL (_a , op_LGFI , REGTMP , uint32 (v ), asm )
3074
+ zRRE (op_NGR , uint32 (p .To .Reg ), REGTMP , asm )
3075
+ } else if int64 (int16 (v )) == v {
3076
+ zRI (op_NILL , uint32 (p .To .Reg ), uint32 (v ), asm )
3077
+ } else { // r.To.Reg & 0xffffffff00000000 & uint32(v)
3078
+ zRIL (_a , op_NILF , uint32 (p .To .Reg ), uint32 (v ), asm )
3103
3079
}
3104
- } else {
3105
- switch p .As {
3106
- default :
3107
- ctxt .Diag ("%v is not supported" , p )
3108
- case AAND :
3109
- opcode = op_NGRK
3110
- case AOR :
3111
- opcode = op_OGRK
3112
- case AXOR :
3113
- opcode = op_XGRK
3080
+ case AOR :
3081
+ if int64 (uint32 (v )) != v { // needs sign extend
3082
+ zRIL (_a , op_LGFI , REGTMP , uint32 (v ), asm )
3083
+ zRRE (op_OGR , uint32 (p .To .Reg ), REGTMP , asm )
3084
+ } else if int64 (uint16 (v )) == v {
3085
+ zRI (op_OILL , uint32 (p .To .Reg ), uint32 (v ), asm )
3086
+ } else {
3087
+ zRIL (_a , op_OILF , uint32 (p .To .Reg ), uint32 (v ), asm )
3088
+ }
3089
+ case AXOR :
3090
+ if int64 (uint32 (v )) != v { // needs sign extend
3091
+ zRIL (_a , op_LGFI , REGTMP , uint32 (v ), asm )
3092
+ zRRE (op_XGR , uint32 (p .To .Reg ), REGTMP , asm )
3093
+ } else {
3094
+ zRIL (_a , op_XILF , uint32 (p .To .Reg ), uint32 (v ), asm )
3114
3095
}
3115
- zRIL (_a , op_LGFI , REGTMP , uint32 (v ), asm )
3116
- zRRF (opcode , uint32 (r ), 0 , uint32 (p .To .Reg ), REGTMP , asm )
3117
3096
}
3118
3097
3119
3098
case 24 : // 32-bit logical op $constant reg
0 commit comments