1*e2626bb7SDiana Picus; The hwdiv subtarget feature should only influence thumb, not arm. 2*e2626bb7SDiana Picus; RUN: llc < %s -mtriple=arm-gnueabi -mattr=+hwdiv | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV 3*e2626bb7SDiana Picus; RUN: llc < %s -mtriple=arm-gnueabi -mattr=-hwdiv | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV 4*e2626bb7SDiana Picus; RUN: llc < %s -mtriple=thumbv7-gnueabi -mattr=+hwdiv | FileCheck %s -check-prefixes=ALL,THUMB-HWDIV 5*e2626bb7SDiana Picus; RUN: llc < %s -mtriple=thumbv7-gnueabi -mattr=-hwdiv | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV 6*e2626bb7SDiana Picus 7*e2626bb7SDiana Picus; The hwdiv-arm subtarget feature should only influence arm, not thumb. 8*e2626bb7SDiana Picus; RUN: llc < %s -mtriple=arm-gnueabi -mattr=+hwdiv-arm | FileCheck %s -check-prefixes=ALL,ARM-HWDIV 9*e2626bb7SDiana Picus; RUN: llc < %s -mtriple=arm-gnueabi -mattr=-hwdiv-arm | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV 10*e2626bb7SDiana Picus; RUN: llc < %s -mtriple=thumbv7-gnueabi -mattr=+hwdiv-arm | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV 11*e2626bb7SDiana Picus; RUN: llc < %s -mtriple=thumbv7-gnueabi -mattr=-hwdiv-arm | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV 12*e2626bb7SDiana Picus 13*e2626bb7SDiana Picusdefine arm_aapcscc i32 @test_i32_srem(i32 %x, i32 %y) { 14*e2626bb7SDiana Picus; ALL-LABEL: test_i32_srem: 15*e2626bb7SDiana Picus; ARM-HWDIV: sdiv [[Q:r[0-9]+]], r0, r1 16*e2626bb7SDiana Picus; ARM-HWDIV: mul [[P:r[0-9]+]], [[Q]], r1 17*e2626bb7SDiana Picus; ARM-HWDIV: sub r0, r0, [[P]] 18*e2626bb7SDiana Picus; THUMB-HWDIV: sdiv [[Q:r[0-9]+]], r0, r1 19*e2626bb7SDiana Picus; THUMB-HWDIV: mls r0, [[Q]], r1, r0 20*e2626bb7SDiana Picus; AEABI-NOHWDIV: bl __aeabi_idivmod 21*e2626bb7SDiana Picus; AEABI-NOHWDIV: mov r0, r1 22*e2626bb7SDiana Picus %r = srem i32 %x, %y 23*e2626bb7SDiana Picus ret i32 %r 24*e2626bb7SDiana Picus} 25*e2626bb7SDiana Picus 26*e2626bb7SDiana Picusdefine arm_aapcscc i32 @test_i32_urem(i32 %x, i32 %y) { 27*e2626bb7SDiana Picus; ALL-LABEL: test_i32_urem: 28*e2626bb7SDiana Picus; ARM-HWDIV: udiv [[Q:r[0-9]+]], r0, r1 29*e2626bb7SDiana Picus; ARM-HWDIV: mul [[P:r[0-9]+]], [[Q]], r1 30*e2626bb7SDiana Picus; ARM-HWDIV: sub r0, r0, [[P]] 31*e2626bb7SDiana Picus; THUMB-HWDIV: udiv [[Q:r[0-9]+]], r0, r1 32*e2626bb7SDiana Picus; THUMB-HWDIV: mls r0, [[Q]], r1, r0 33*e2626bb7SDiana Picus; AEABI-NOHWDIV: bl __aeabi_uidivmod 34*e2626bb7SDiana Picus; AEABI-NOHWDIV: mov r0, r1 35*e2626bb7SDiana Picus %r = urem i32 %x, %y 36*e2626bb7SDiana Picus ret i32 %r 37*e2626bb7SDiana Picus} 38