brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 5e33603 Raw
101 lines · plain
1; RUN: llc -mattr=mul,movw < %s -mtriple=avr | FileCheck %s2 3; Unsigned 8-bit division4define i8 @udiv8(i8 %a, i8 %b) {5; CHECK-LABEL: div8:6; CHECK: call __udivmodqi47; CHECK-NEXT: ret8 9  %quotient = udiv i8 %a, %b10  ret i8 %quotient11}12 13; Signed 8-bit division14define i8 @sdiv8(i8 %a, i8 %b) {15; CHECK-LABEL: sdiv8:16; CHECK: call __divmodqi417; CHECK-NEXT: ret18 19  %quotient = sdiv i8 %a, %b20  ret i8 %quotient21}22 23; Unsigned 16-bit division24define i16 @udiv16(i16 %a, i16 %b) {25; CHECK-LABEL: udiv16:26; CHECK: call __udivmodhi427; CHECK-NEXT: movw r24, r2228; CHECK-NEXT: ret29  %quot = udiv i16 %a, %b30  ret i16 %quot31}32 33; Signed 16-bit division34define i16 @sdiv16(i16 %a, i16 %b) {35; CHECK-LABEL: sdiv16:36; CHECK: call __divmodhi437; CHECK-NEXT: movw r24, r2238; CHECK-NEXT: ret39  %quot = sdiv i16 %a, %b40  ret i16 %quot41}42 43; Unsigned 32-bit division44define i32 @udiv32(i32 %a, i32 %b) {45; CHECK-LABEL: udiv32:46; CHECK: call __udivmodsi447; CHECK-NEXT: movw r22, r1848; CHECK-NEXT: movw r24, r2049; CHECK-NEXT: ret50  %quot = udiv i32 %a, %b51  ret i32 %quot52}53 54; Signed 32-bit division55define i32 @sdiv32(i32 %a, i32 %b) {56; CHECK-LABEL: sdiv32:57; CHECK: call __divmodsi458; CHECK-NEXT: movw r22, r1859; CHECK-NEXT: movw r24, r2060; CHECK-NEXT: ret61  %quot = sdiv i32 %a, %b62  ret i32 %quot63}64 65; Unsigned 64-bit division66define i64 @udiv64(i64 %a, i64 %b) {67; CHECK-LABEL: udiv64:68; CHECK: call __udivdi369; CHECK: ret70  %quot = udiv i64 %a, %b71  ret i64 %quot72}73 74; Signed 64-bit division75define i64 @sdiv64(i64 %a, i64 %b) {76; CHECK-LABEL: sdiv64:77; CHECK: call __divdi378; CHECK: ret79  %quot = sdiv i64 %a, %b80  ret i64 %quot81}82 83; Unsigned 128-bit division84define i128 @udiv128(i128 %a, i128 %b) {85; CHECK-LABEL: udiv128:86; CHECK: call __udivti387; CHECK: ret88  %quot = udiv i128 %a, %b89  ret i128 %quot90}91 92; Signed 128-bit division93define i128 @sdiv128(i128 %a, i128 %b) {94; CHECK-LABEL: sdiv128:95; CHECK: call __divti396; CHECK: ret97  %quot = sdiv i128 %a, %b98  ret i128 %quot99}100 101