38 lines · plain
1; The hwdiv subtarget feature should only influence thumb, not arm.2; RUN: llc < %s -mtriple=arm-gnueabi -mattr=+hwdiv | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV3; RUN: llc < %s -mtriple=arm-gnueabi -mattr=-hwdiv | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV4; RUN: llc < %s -mtriple=thumbv7-gnueabi -mattr=+hwdiv | FileCheck %s -check-prefixes=ALL,THUMB-HWDIV5; RUN: llc < %s -mtriple=thumbv7-gnueabi -mattr=-hwdiv | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV6 7; The hwdiv-arm subtarget feature should only influence arm, not thumb.8; RUN: llc < %s -mtriple=arm-gnueabi -mattr=+hwdiv-arm | FileCheck %s -check-prefixes=ALL,ARM-HWDIV9; RUN: llc < %s -mtriple=arm-gnueabi -mattr=-hwdiv-arm | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV10; RUN: llc < %s -mtriple=thumbv7-gnueabi -mattr=+hwdiv-arm | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV11; RUN: llc < %s -mtriple=thumbv7-gnueabi -mattr=-hwdiv-arm | FileCheck %s -check-prefixes=ALL,AEABI-NOHWDIV12 13define arm_aapcscc i32 @test_i32_srem(i32 %x, i32 %y) {14; ALL-LABEL: test_i32_srem:15; ARM-HWDIV: sdiv [[Q:r[0-9]+]], r0, r116; ARM-HWDIV: mul [[P:r[0-9]+]], [[Q]], r117; ARM-HWDIV: sub r0, r0, [[P]]18; THUMB-HWDIV: sdiv [[Q:r[0-9]+]], r0, r119; THUMB-HWDIV: mls r0, [[Q]], r1, r020; AEABI-NOHWDIV: bl __aeabi_idivmod21; AEABI-NOHWDIV: mov r0, r122 %r = srem i32 %x, %y23 ret i32 %r24}25 26define arm_aapcscc i32 @test_i32_urem(i32 %x, i32 %y) {27; ALL-LABEL: test_i32_urem:28; ARM-HWDIV: udiv [[Q:r[0-9]+]], r0, r129; ARM-HWDIV: mul [[P:r[0-9]+]], [[Q]], r130; ARM-HWDIV: sub r0, r0, [[P]]31; THUMB-HWDIV: udiv [[Q:r[0-9]+]], r0, r132; THUMB-HWDIV: mls r0, [[Q]], r1, r033; AEABI-NOHWDIV: bl __aeabi_uidivmod34; AEABI-NOHWDIV: mov r0, r135 %r = urem i32 %x, %y36 ret i32 %r37}38