Index: lib/Target/Mips/Mips64InstrInfo.td =================================================================== --- lib/Target/Mips/Mips64InstrInfo.td +++ lib/Target/Mips/Mips64InstrInfo.td @@ -427,7 +427,7 @@ //===----------------------------------------------------------------------===// def : MipsInstAlias<"move $dst, $src", (DADDu GPR64Opnd:$dst, GPR64Opnd:$src, ZERO_64), 1>, - Requires<[IsGP64]>; + GPR_64; def : MipsInstAlias<"daddu $rs, $rt, $imm", (DADDiu GPR64Opnd:$rs, GPR64Opnd:$rt, simm16_64:$imm), 0>; Index: lib/Target/Mips/MipsInstrInfo.td =================================================================== --- lib/Target/Mips/MipsInstrInfo.td +++ lib/Target/Mips/MipsInstrInfo.td @@ -172,10 +172,6 @@ AssemblerPredicate<"!FeatureGP64Bit">; def HasMips64 : Predicate<"Subtarget.hasMips64()">, AssemblerPredicate<"FeatureMips64">; -def IsGP32 : Predicate<"!Subtarget.isGP64()">, - AssemblerPredicate<"!FeatureGP64Bit">; -def IsGP64 : Predicate<"Subtarget.isGP64()">, - AssemblerPredicate<"FeatureGP64Bit">; def HasMips64r2 : Predicate<"Subtarget.hasMips64r2()">, AssemblerPredicate<"FeatureMips64r2">; def IsN64 : Predicate<"Subtarget.isABI_N64()">, @@ -205,6 +201,7 @@ // They are mutually exclusive. //===----------------------------------------------------------------------===// +class GPR_32 { list GPRPredicates = [IsGP32bit]; } class GPR_64 { list GPRPredicates = [IsGP64bit]; } //===----------------------------------------------------------------------===// @@ -1236,7 +1233,9 @@ //===----------------------------------------------------------------------===// def : MipsInstAlias<"move $dst, $src", (ADDu GPR32Opnd:$dst, GPR32Opnd:$src,ZERO), 1>, - Requires<[IsGP32, NotInMicroMips]>; + GPR_32 { + let AdditionalPredicates = [NotInMicroMips]; +} def : MipsInstAlias<"bal $offset", (BGEZAL ZERO, brtarget:$offset), 0>; def : MipsInstAlias<"addu $rs, $rt, $imm", (ADDiu GPR32Opnd:$rs, GPR32Opnd:$rt, simm16:$imm), 0>;