1 ; RUN: llc -mtriple=x86_64-none-linux -fast-isel -fast-isel-abort=1 -verify-machineinstrs < %s | FileCheck %s 2 ; RUN: llc -mtriple=i686-none-linux -fast-isel -fast-isel-abort=1 -verify-machineinstrs < %s | FileCheck %s 3 4 define i8 @test_sdiv8(i8 %dividend, i8 %divisor) nounwind { 5 entry: 6 %result = sdiv i8 %dividend, %divisor 7 ret i8 %result 8 } 9 10 ; CHECK-LABEL: test_sdiv8: 11 ; CHECK: movsbw 12 ; CHECK: idivb 13 14 define i8 @test_srem8(i8 %dividend, i8 %divisor) nounwind { 15 entry: 16 %result = srem i8 %dividend, %divisor 17 ret i8 %result 18 } 19 20 ; CHECK-LABEL: test_srem8: 21 ; CHECK: movsbw 22 ; CHECK: idivb 23 24 define i8 @test_udiv8(i8 %dividend, i8 %divisor) nounwind { 25 entry: 26 %result = udiv i8 %dividend, %divisor 27 ret i8 %result 28 } 29 30 ; CHECK-LABEL: test_udiv8: 31 ; CHECK: movzbw 32 ; CHECK: divb 33 34 define i8 @test_urem8(i8 %dividend, i8 %divisor) nounwind { 35 entry: 36 %result = urem i8 %dividend, %divisor 37 ret i8 %result 38 } 39 40 ; CHECK-LABEL: test_urem8: 41 ; CHECK: movzbw 42 ; CHECK: divb 43 44 define i16 @test_sdiv16(i16 %dividend, i16 %divisor) nounwind { 45 entry: 46 %result = sdiv i16 %dividend, %divisor 47 ret i16 %result 48 } 49 50 ; CHECK-LABEL: test_sdiv16: 51 ; CHECK: cwtd 52 ; CHECK: idivw 53 54 define i16 @test_srem16(i16 %dividend, i16 %divisor) nounwind { 55 entry: 56 %result = srem i16 %dividend, %divisor 57 ret i16 %result 58 } 59 60 ; CHECK-LABEL: test_srem16: 61 ; CHECK: cwtd 62 ; CHECK: idivw 63 64 define i16 @test_udiv16(i16 %dividend, i16 %divisor) nounwind { 65 entry: 66 %result = udiv i16 %dividend, %divisor 67 ret i16 %result 68 } 69 70 ; CHECK-LABEL: test_udiv16: 71 ; CHECK: xorl 72 ; CHECK: divw 73 74 define i16 @test_urem16(i16 %dividend, i16 %divisor) nounwind { 75 entry: 76 %result = urem i16 %dividend, %divisor 77 ret i16 %result 78 } 79 80 ; CHECK-LABEL: test_urem16: 81 ; CHECK: xorl 82 ; CHECK: divw 83 84 define i32 @test_sdiv32(i32 %dividend, i32 %divisor) nounwind { 85 entry: 86 %result = sdiv i32 %dividend, %divisor 87 ret i32 %result 88 } 89 90 ; CHECK-LABEL: test_sdiv32: 91 ; CHECK: cltd 92 ; CHECK: idivl 93 94 define i32 @test_srem32(i32 %dividend, i32 %divisor) nounwind { 95 entry: 96 %result = srem i32 %dividend, %divisor 97 ret i32 %result 98 } 99 100 ; CHECK-LABEL: test_srem32: 101 ; CHECK: cltd 102 ; CHECK: idivl 103 104 define i32 @test_udiv32(i32 %dividend, i32 %divisor) nounwind { 105 entry: 106 %result = udiv i32 %dividend, %divisor 107 ret i32 %result 108 } 109 110 ; CHECK-LABEL: test_udiv32: 111 ; CHECK: xorl 112 ; CHECK: divl 113 114 define i32 @test_urem32(i32 %dividend, i32 %divisor) nounwind { 115 entry: 116 %result = urem i32 %dividend, %divisor 117 ret i32 %result 118 } 119 120 ; CHECK-LABEL: test_urem32: 121 ; CHECK: xorl 122 ; CHECK: divl 123