Index: lib/Target/ARM/ARMLegalizerInfo.cpp =================================================================== --- lib/Target/ARM/ARMLegalizerInfo.cpp +++ lib/Target/ARM/ARMLegalizerInfo.cpp @@ -57,7 +57,7 @@ for (unsigned Op : {G_SDIV, G_UDIV}) { for (auto Ty : {s8, s16}) setAction({Op, Ty}, WidenScalar); - if (ST.hasDivideInARMMode()) + if (ST.hasDivideInARMMode() || ST.hasDivideInThumbMode()) setAction({Op, s32}, Legal); else setAction({Op, s32}, Libcall); @@ -66,7 +66,7 @@ for (unsigned Op : {G_SREM, G_UREM}) { for (auto Ty : {s8, s16}) setAction({Op, Ty}, WidenScalar); - if (ST.hasDivideInARMMode()) + if (ST.hasDivideInARMMode() || ST.hasDivideInThumbMode()) setAction({Op, s32}, Lower); else if (AEABI(ST)) setAction({Op, s32}, Custom); Index: test/CodeGen/ARM/GlobalISel/legalize-divmod.mir =================================================================== --- test/CodeGen/ARM/GlobalISel/legalize-divmod.mir +++ test/CodeGen/ARM/GlobalISel/legalize-divmod.mir @@ -2,10 +2,10 @@ # RUN: llc -mtriple arm-linux-gnueabi -mattr=-hwdiv-arm -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,SOFT,SOFT-AEABI # RUN: llc -mtriple arm-linux-gnu -mattr=+hwdiv-arm -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,HWDIV # RUN: llc -mtriple arm-linux-gnu -mattr=-hwdiv-arm -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,SOFT,SOFT-DEFAULT -# RUN: llc -mtriple thumbv7-linux-gnueabi -mattr=+hwdiv-arm -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,HWDIV -# RUN: llc -mtriple thumbv7-linux-gnueabi -mattr=-hwdiv-arm -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,SOFT,SOFT-AEABI -# RUN: llc -mtriple thumbv7-linux-gnu -mattr=+hwdiv-arm -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,HWDIV -# RUN: llc -mtriple thumbv7-linux-gnu -mattr=-hwdiv-arm -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,SOFT,SOFT-DEFAULT +# RUN: llc -mtriple thumbv7-linux-gnueabi -mattr=+hwdiv -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,HWDIV +# RUN: llc -mtriple thumbv7-linux-gnueabi -mattr=-hwdiv -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,SOFT,SOFT-AEABI +# RUN: llc -mtriple thumbv7-linux-gnu -mattr=+hwdiv -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,HWDIV +# RUN: llc -mtriple thumbv7-linux-gnu -mattr=-hwdiv -global-isel -run-pass=legalizer %s -o - | FileCheck %s -check-prefixes=CHECK,SOFT,SOFT-DEFAULT --- | define void @test_sdiv_i32() { ret void } define void @test_udiv_i32() { ret void }