ssa.OpLOONG64ANDconst,
ssa.OpLOONG64ORconst,
ssa.OpLOONG64XORconst,
- ssa.OpLOONG64NORconst,
ssa.OpLOONG64SLLconst,
ssa.OpLOONG64SLLVconst,
ssa.OpLOONG64SRLconst,
p.Reg = v.Args[0].Reg()
p.To.Type = obj.TYPE_REG
p.To.Reg = v.Reg()
+
+ case ssa.OpLOONG64NORconst:
+ // MOVV $const, Rtmp
+ // NOR Rtmp, Rarg0, Rout
+ p := s.Prog(loong64.AMOVV)
+ p.From.Type = obj.TYPE_CONST
+ p.From.Offset = v.AuxInt
+ p.To.Type = obj.TYPE_REG
+ p.To.Reg = loong64.REGTMP
+
+ p2 := s.Prog(v.Op.Asm())
+ p2.From.Type = obj.TYPE_REG
+ p2.From.Reg = loong64.REGTMP
+ p2.Reg = v.Args[0].Reg()
+ p2.To.Type = obj.TYPE_REG
+ p2.To.Reg = v.Reg()
+
case ssa.OpLOONG64MOVVconst:
r := v.Reg()
p := s.Prog(v.Op.Asm())
return x | ^y
}
+func op_nor(x int64, a []int64) {
+ // loong64: "MOVV\t[$]0","NOR\tR"
+ a[0] = ^(0x1234 | x)
+ // loong64:"NOR",-"XOR"
+ a[1] = (-1) ^ x
+ // loong64: "MOVV\t[$]-55",-"OR",-"NOR"
+ a[2] = ^(0x12 | 0x34)
+}
+
// check bitsets
func bitSetPowerOf2Test(x int) bool {
// amd64:"BTL\t[$]3"