Index: lib/Target/ARM/ARMInstrThumb2.td =================================================================== --- lib/Target/ARM/ARMInstrThumb2.td +++ lib/Target/ARM/ARMInstrThumb2.td @@ -2572,10 +2572,10 @@ // Multiply + accumulate def t2SMLAL : T2MlaLong<0b100, 0b0000, "smlal">; def t2UMLAL : T2MlaLong<0b110, 0b0000, "umlal">; -def t2UMAAL : T2MulLong<0b110, 0b0110, "umaal", []>, - Requires<[IsThumb2, HasDSP]>; } // hasSideEffects +def t2UMAAL : T2MlaLong<0b110, 0b0110, "umaal">, Requires<[IsThumb2, HasDSP]>; + // Rounding variants of the below included for disassembly only // Most significant word multiply Index: test/CodeGen/ARM/longMAC.ll =================================================================== --- test/CodeGen/ARM/longMAC.ll +++ test/CodeGen/ARM/longMAC.ll @@ -2,11 +2,13 @@ ; RUN: llc -mtriple=armv7-eabi %s -o - | FileCheck %s --check-prefix=CHECK-V7-LE ; RUN: llc -mtriple=armeb-eabi %s -o - | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-BE ; RUN: llc -mtriple=armebv7-eabi %s -o - | FileCheck %s -check-prefix=CHECK-V7-BE +; RUN: llc -mtriple=thumbv7-eabi %s -o - | FileCheck %s -check-prefix=CHECK-V7-THUMB ; Check generated signed and unsigned multiply accumulate long. define i64 @MACLongTest1(i32 %a, i32 %b, i64 %c) { ;CHECK-LABEL: MACLongTest1: ;CHECK: umlal +;CHECK-V7-THUMB: umlal %conv = zext i32 %a to i64 %conv1 = zext i32 %b to i64 %mul = mul i64 %conv1, %conv @@ -17,6 +19,7 @@ define i64 @MACLongTest2(i32 %a, i32 %b, i64 %c) { ;CHECK-LABEL: MACLongTest2: ;CHECK: smlal +;CHECK-V7-THUMB: smlal %conv = sext i32 %a to i64 %conv1 = sext i32 %b to i64 %mul = mul nsw i64 %conv1, %conv @@ -27,6 +30,7 @@ define i64 @MACLongTest3(i32 %a, i32 %b, i32 %c) { ;CHECK-LABEL: MACLongTest3: ;CHECK: umlal +;CHECK-V7-THUMB: umlal %conv = zext i32 %b to i64 %conv1 = zext i32 %a to i64 %mul = mul i64 %conv, %conv1 @@ -38,6 +42,7 @@ define i64 @MACLongTest4(i32 %a, i32 %b, i32 %c) { ;CHECK-LABEL: MACLongTest4: ;CHECK: smlal +;CHECK-V7-THUMB: smlal %conv = sext i32 %b to i64 %conv1 = sext i32 %a to i64 %mul = mul nsw i64 %conv, %conv1 @@ -120,6 +125,7 @@ ;CHECK-LABEL: MACLongTest9: ;CHECK-V7-LE:umaal ;CHECK-V7-BE:umaal +;CHECK-V7-THUMB:umaal ;CHECK-NOT:umaal %conv = zext i32 %lhs to i64 %conv1 = zext i32 %rhs to i64 @@ -135,6 +141,7 @@ ;CHECK-LABEL: MACLongTest10: ;CHECK-V7-LE:umaal ;CHECK-V7-BE:umaal +;CHECK-V7-THUMB:umaal ;CHECK-NOT:umaal %conv = zext i32 %lhs to i64 %conv1 = zext i32 %rhs to i64