1*21a42bccSDiana Picus; RUN: llc -mtriple arm-gnueabi -mattr=+v6t2,+hwdiv-arm -global-isel %s -o - | FileCheck %s -check-prefixes=CHECK,HWDIV 2*21a42bccSDiana Picus; RUN: llc -mtriple arm-gnueabi -mattr=+v6t2,-hwdiv-arm -global-isel %s -o - | FileCheck %s -check-prefixes=CHECK,SOFT-AEABI 3*21a42bccSDiana Picus; RUN: llc -mtriple arm-gnu -mattr=+v6t2,+hwdiv-arm -global-isel %s -o - | FileCheck %s -check-prefixes=CHECK,HWDIV 4*21a42bccSDiana Picus; RUN: llc -mtriple arm-gnu -mattr=+v6t2,-hwdiv-arm -global-isel %s -o - | FileCheck %s -check-prefixes=CHECK,SOFT-DEFAULT 5b70e88bdSDiana Picus 6b70e88bdSDiana Picusdefine arm_aapcscc i32 @test_sdiv_i32(i32 %a, i32 %b) { 7b70e88bdSDiana Picus; CHECK-LABEL: test_sdiv_i32: 857285d7aSDiana Picus; HWDIV: sdiv 9b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_idiv 10b3502212SDiana Picus; SOFT-DEFAULT: bl __divsi3 11b70e88bdSDiana Picus %r = sdiv i32 %a, %b 12b70e88bdSDiana Picus ret i32 %r 13b70e88bdSDiana Picus} 14b70e88bdSDiana Picus 15b70e88bdSDiana Picusdefine arm_aapcscc i32 @test_udiv_i32(i32 %a, i32 %b) { 16b70e88bdSDiana Picus; CHECK-LABEL: test_udiv_i32: 1757285d7aSDiana Picus; HWDIV: udiv 18b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_uidiv 19b3502212SDiana Picus; SOFT-DEFAULT: bl __udivsi3 20b70e88bdSDiana Picus %r = udiv i32 %a, %b 21b70e88bdSDiana Picus ret i32 %r 22b70e88bdSDiana Picus} 23b70e88bdSDiana Picus 24f53865daSDiana Picusdefine arm_aapcscc i16 @test_sdiv_i16(i16 %a, i16 %b) { 25f53865daSDiana Picus; CHECK-LABEL: test_sdiv_i16: 2657285d7aSDiana Picus; HWDIV: sdiv 27b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_idiv 28b3502212SDiana Picus; SOFT-DEFAULT: bl __divsi3 29f53865daSDiana Picus %r = sdiv i16 %a, %b 30f53865daSDiana Picus ret i16 %r 31f53865daSDiana Picus} 32f53865daSDiana Picus 33f53865daSDiana Picusdefine arm_aapcscc i16 @test_udiv_i16(i16 %a, i16 %b) { 34f53865daSDiana Picus; CHECK-LABEL: test_udiv_i16: 3557285d7aSDiana Picus; HWDIV: udiv 36b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_uidiv 37b3502212SDiana Picus; SOFT-DEFAULT: bl __udivsi3 38f53865daSDiana Picus %r = udiv i16 %a, %b 39f53865daSDiana Picus ret i16 %r 40f53865daSDiana Picus} 41f53865daSDiana Picus 42f53865daSDiana Picusdefine arm_aapcscc i8 @test_sdiv_i8(i8 %a, i8 %b) { 43f53865daSDiana Picus; CHECK-LABEL: test_sdiv_i8: 4457285d7aSDiana Picus; HWDIV: sdiv 45b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_idiv 46b3502212SDiana Picus; SOFT-DEFAULT: bl __divsi3 47f53865daSDiana Picus %r = sdiv i8 %a, %b 48f53865daSDiana Picus ret i8 %r 49f53865daSDiana Picus} 50f53865daSDiana Picus 51f53865daSDiana Picusdefine arm_aapcscc i8 @test_udiv_i8(i8 %a, i8 %b) { 52f53865daSDiana Picus; CHECK-LABEL: test_udiv_i8: 5357285d7aSDiana Picus; HWDIV: udiv 54b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_uidiv 55b3502212SDiana Picus; SOFT-DEFAULT: bl __udivsi3 56f53865daSDiana Picus %r = udiv i8 %a, %b 57f53865daSDiana Picus ret i8 %r 58f53865daSDiana Picus} 59f53865daSDiana Picus 6002e11010SDiana Picusdefine arm_aapcscc i32 @test_srem_i32(i32 %x, i32 %y) { 6102e11010SDiana Picus; CHECK-LABEL: test_srem_i32: 6257285d7aSDiana Picus; HWDIV: sdiv 63b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_idivmod 64b3502212SDiana Picus; SOFT-DEFAULT: bl __modsi3 6502e11010SDiana Picus %r = srem i32 %x, %y 6602e11010SDiana Picus ret i32 %r 6702e11010SDiana Picus} 6802e11010SDiana Picus 6902e11010SDiana Picusdefine arm_aapcscc i32 @test_urem_i32(i32 %x, i32 %y) { 7002e11010SDiana Picus; CHECK-LABEL: test_urem_i32: 7157285d7aSDiana Picus; HWDIV: udiv 72b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_uidivmod 73b3502212SDiana Picus; SOFT-DEFAULT: bl __umodsi3 7402e11010SDiana Picus %r = urem i32 %x, %y 7502e11010SDiana Picus ret i32 %r 7602e11010SDiana Picus} 77da25d5b8SDiana Picus 78da25d5b8SDiana Picusdefine arm_aapcscc i16 @test_srem_i16(i16 %x, i16 %y) { 79da25d5b8SDiana Picus; CHECK-LABEL: test_srem_i16: 8057285d7aSDiana Picus; HWDIV: sdiv 81b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_idivmod 82b3502212SDiana Picus; SOFT-DEFAULT: bl __modsi3 83da25d5b8SDiana Picus %r = srem i16 %x, %y 84da25d5b8SDiana Picus ret i16 %r 85da25d5b8SDiana Picus} 86da25d5b8SDiana Picus 87da25d5b8SDiana Picusdefine arm_aapcscc i16 @test_urem_i16(i16 %x, i16 %y) { 88da25d5b8SDiana Picus; CHECK-LABEL: test_urem_i16: 8957285d7aSDiana Picus; HWDIV: udiv 90b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_uidivmod 91b3502212SDiana Picus; SOFT-DEFAULT: bl __umodsi3 92da25d5b8SDiana Picus %r = urem i16 %x, %y 93da25d5b8SDiana Picus ret i16 %r 94da25d5b8SDiana Picus} 95da25d5b8SDiana Picus 96da25d5b8SDiana Picusdefine arm_aapcscc i8 @test_srem_i8(i8 %x, i8 %y) { 97da25d5b8SDiana Picus; CHECK-LABEL: test_srem_i8: 9857285d7aSDiana Picus; HWDIV: sdiv 99b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_idivmod 100b3502212SDiana Picus; SOFT-DEFAULT: bl __modsi3 101da25d5b8SDiana Picus %r = srem i8 %x, %y 102da25d5b8SDiana Picus ret i8 %r 103da25d5b8SDiana Picus} 104da25d5b8SDiana Picus 105da25d5b8SDiana Picusdefine arm_aapcscc i8 @test_urem_i8(i8 %x, i8 %y) { 106da25d5b8SDiana Picus; CHECK-LABEL: test_urem_i8: 10757285d7aSDiana Picus; HWDIV: udiv 108b3502212SDiana Picus; SOFT-AEABI: bl __aeabi_uidivmod 109b3502212SDiana Picus; SOFT-DEFAULT: bl __umodsi3 110da25d5b8SDiana Picus %r = urem i8 %x, %y 111da25d5b8SDiana Picus ret i8 %r 112da25d5b8SDiana Picus} 113