brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · 64caf8a Raw
276 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3; Function Attrs: norecurse nounwind readnone4define i128 @divi128(i128, i128) {5; CHECK-LABEL: divi128:6; CHECK:       .LBB{{[0-9]+}}_2:7; CHECK-NEXT:    lea %s4, __divti3@lo8; CHECK-NEXT:    and %s4, %s4, (32)09; CHECK-NEXT:    lea.sl %s12, __divti3@hi(, %s4)10; CHECK-NEXT:    bsic %s10, (, %s12)11; CHECK-NEXT:    or %s11, 0, %s912  %3 = sdiv i128 %0, %113  ret i128 %314}15 16; Function Attrs: norecurse nounwind readnone17define i64 @divi64(i64 %a, i64 %b) {18; CHECK-LABEL: divi64:19; CHECK:       # %bb.0:20; CHECK-NEXT:    divs.l %s0, %s0, %s121; CHECK-NEXT:    b.l.t (, %s10)22  %r = sdiv i64 %a, %b23  ret i64 %r24}25 26; Function Attrs: norecurse nounwind readnone27define signext i32 @divi32(i32 signext %a, i32 signext %b) {28; CHECK-LABEL: divi32:29; CHECK:       # %bb.0:30; CHECK-NEXT:    divs.w.sx %s0, %s0, %s131; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)132; CHECK-NEXT:    b.l.t (, %s10)33  %r = sdiv i32 %a, %b34  ret i32 %r35}36 37; Function Attrs: norecurse nounwind readnone38define i128 @divu128(i128, i128) {39; CHECK-LABEL: divu128:40; CHECK:       .LBB{{[0-9]+}}_2:41; CHECK-NEXT:    lea %s4, __udivti3@lo42; CHECK-NEXT:    and %s4, %s4, (32)043; CHECK-NEXT:    lea.sl %s12, __udivti3@hi(, %s4)44; CHECK-NEXT:    bsic %s10, (, %s12)45; CHECK-NEXT:    or %s11, 0, %s946  %3 = udiv i128 %0, %147  ret i128 %348}49 50; Function Attrs: norecurse nounwind readnone51define i64 @divu64(i64 %a, i64 %b) {52; CHECK-LABEL: divu64:53; CHECK:       # %bb.0:54; CHECK-NEXT:    divu.l %s0, %s0, %s155; CHECK-NEXT:    b.l.t (, %s10)56  %r = udiv i64 %a, %b57  ret i64 %r58}59 60; Function Attrs: norecurse nounwind readnone61define zeroext i32 @divu32(i32 zeroext %a, i32 zeroext %b) {62; CHECK-LABEL: divu32:63; CHECK:       # %bb.0:64; CHECK-NEXT:    divu.w %s0, %s0, %s165; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)166; CHECK-NEXT:    b.l.t (, %s10)67  %r = udiv i32 %a, %b68  ret i32 %r69}70 71; Function Attrs: norecurse nounwind readnone72define signext i16 @divi16(i16 signext %a, i16 signext %b) {73; CHECK-LABEL: divi16:74; CHECK:       # %bb.0:75; CHECK-NEXT:    divs.w.sx %s0, %s0, %s176; CHECK-NEXT:    sll %s0, %s0, 4877; CHECK-NEXT:    sra.l %s0, %s0, 4878; CHECK-NEXT:    b.l.t (, %s10)79  %a32 = sext i16 %a to i3280  %b32 = sext i16 %b to i3281  %r32 = sdiv i32 %a32, %b3282  %r = trunc i32 %r32 to i1683  ret i16 %r84}85 86; Function Attrs: norecurse nounwind readnone87define zeroext i16 @divu16(i16 zeroext %a, i16 zeroext %b) {88; CHECK-LABEL: divu16:89; CHECK:       # %bb.0:90; CHECK-NEXT:    divu.w %s0, %s0, %s191; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)192; CHECK-NEXT:    b.l.t (, %s10)93  %r = udiv i16 %a, %b94  ret i16 %r95}96 97; Function Attrs: norecurse nounwind readnone98define signext i8 @divi8(i8 signext %a, i8 signext %b) {99; CHECK-LABEL: divi8:100; CHECK:       # %bb.0:101; CHECK-NEXT:    divs.w.sx %s0, %s0, %s1102; CHECK-NEXT:    sll %s0, %s0, 56103; CHECK-NEXT:    sra.l %s0, %s0, 56104; CHECK-NEXT:    b.l.t (, %s10)105  %a32 = sext i8 %a to i32106  %b32 = sext i8 %b to i32107  %r32 = sdiv i32 %a32, %b32108  %r = trunc i32 %r32 to i8109  ret i8 %r110}111 112; Function Attrs: norecurse nounwind readnone113define zeroext i8 @divu8(i8 zeroext %a, i8 zeroext %b) {114; CHECK-LABEL: divu8:115; CHECK:       # %bb.0:116; CHECK-NEXT:    divu.w %s0, %s0, %s1117; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1118; CHECK-NEXT:    b.l.t (, %s10)119  %r = udiv i8 %a, %b120  ret i8 %r121}122 123; Function Attrs: norecurse nounwind readnone124define i128 @divi128ri(i128) {125; CHECK-LABEL: divi128ri:126; CHECK:       .LBB{{[0-9]+}}_2:127; CHECK-NEXT:    lea %s2, __divti3@lo128; CHECK-NEXT:    and %s2, %s2, (32)0129; CHECK-NEXT:    lea.sl %s12, __divti3@hi(, %s2)130; CHECK-NEXT:    or %s2, 3, (0)1131; CHECK-NEXT:    or %s3, 0, (0)1132; CHECK-NEXT:    bsic %s10, (, %s12)133; CHECK-NEXT:    or %s11, 0, %s9134  %2 = sdiv i128 %0, 3135  ret i128 %2136}137 138; Function Attrs: norecurse nounwind readnone139define i64 @divi64ri(i64 %a, i64 %b) {140; CHECK-LABEL: divi64ri:141; CHECK:       # %bb.0:142; CHECK-NEXT:    divs.l %s0, %s0, (62)0143; CHECK-NEXT:    b.l.t (, %s10)144  %r = sdiv i64 %a, 3145  ret i64 %r146}147 148; Function Attrs: norecurse nounwind readnone149define signext i32 @divi32ri(i32 signext %a, i32 signext %b) {150; CHECK-LABEL: divi32ri:151; CHECK:       # %bb.0:152; CHECK-NEXT:    lea %s1, 1431655766153; CHECK-NEXT:    muls.l %s0, %s0, %s1154; CHECK-NEXT:    srl %s1, %s0, 63155; CHECK-NEXT:    srl %s0, %s0, 32156; CHECK-NEXT:    adds.w.sx %s0, %s0, %s1157; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1158; CHECK-NEXT:    b.l.t (, %s10)159  %r = sdiv i32 %a, 3160  ret i32 %r161}162 163; Function Attrs: norecurse nounwind readnone164define i128 @divu128ri(i128) {165; CHECK-LABEL: divu128ri:166; CHECK:       .LBB{{[0-9]+}}_2:167; CHECK-NEXT:    lea %s2, __udivti3@lo168; CHECK-NEXT:    and %s2, %s2, (32)0169; CHECK-NEXT:    lea.sl %s12, __udivti3@hi(, %s2)170; CHECK-NEXT:    or %s2, 3, (0)1171; CHECK-NEXT:    or %s3, 0, (0)1172; CHECK-NEXT:    bsic %s10, (, %s12)173; CHECK-NEXT:    or %s11, 0, %s9174  %2 = udiv i128 %0, 3175  ret i128 %2176}177 178; Function Attrs: norecurse nounwind readnone179define i64 @divu64ri(i64 %a, i64 %b) {180; CHECK-LABEL: divu64ri:181; CHECK:       # %bb.0:182; CHECK-NEXT:    divu.l %s0, %s0, (62)0183; CHECK-NEXT:    b.l.t (, %s10)184  %r = udiv i64 %a, 3185  ret i64 %r186}187 188; Function Attrs: norecurse nounwind readnone189define zeroext i32 @divu32ri(i32 zeroext %a, i32 zeroext %b) {190; CHECK-LABEL: divu32ri:191; CHECK:       # %bb.0:192; CHECK-NEXT:    lea %s1, -1431655765193; CHECK-NEXT:    and %s1, %s1, (32)0194; CHECK-NEXT:    muls.l %s0, %s0, %s1195; CHECK-NEXT:    srl %s0, %s0, 33196; CHECK-NEXT:    b.l.t (, %s10)197  %r = udiv i32 %a, 3198  ret i32 %r199}200 201; Function Attrs: norecurse nounwind readnone202define i128 @divi128li(i128) {203; CHECK-LABEL: divi128li:204; CHECK:       .LBB{{[0-9]+}}_2:205; CHECK-NEXT:    or %s3, 0, %s1206; CHECK-NEXT:    or %s2, 0, %s0207; CHECK-NEXT:    lea %s0, __divti3@lo208; CHECK-NEXT:    and %s0, %s0, (32)0209; CHECK-NEXT:    lea.sl %s12, __divti3@hi(, %s0)210; CHECK-NEXT:    or %s0, 3, (0)1211; CHECK-NEXT:    or %s1, 0, (0)1212; CHECK-NEXT:    bsic %s10, (, %s12)213; CHECK-NEXT:    or %s11, 0, %s9214  %2 = sdiv i128 3, %0215  ret i128 %2216}217 218; Function Attrs: norecurse nounwind readnone219define i64 @divi64li(i64 %a, i64 %b) {220; CHECK-LABEL: divi64li:221; CHECK:       # %bb.0:222; CHECK-NEXT:    divs.l %s0, 3, %s1223; CHECK-NEXT:    b.l.t (, %s10)224  %r = sdiv i64 3, %b225  ret i64 %r226}227 228; Function Attrs: norecurse nounwind readnone229define signext i32 @divi32li(i32 signext %a, i32 signext %b) {230; CHECK-LABEL: divi32li:231; CHECK:       # %bb.0:232; CHECK-NEXT:    divs.w.sx %s0, 3, %s1233; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1234; CHECK-NEXT:    b.l.t (, %s10)235  %r = sdiv i32 3, %b236  ret i32 %r237}238 239; Function Attrs: norecurse nounwind readnone240define i128 @divu128li(i128) {241; CHECK-LABEL: divu128li:242; CHECK:       .LBB{{[0-9]+}}_2:243; CHECK-NEXT:    or %s3, 0, %s1244; CHECK-NEXT:    or %s2, 0, %s0245; CHECK-NEXT:    lea %s0, __udivti3@lo246; CHECK-NEXT:    and %s0, %s0, (32)0247; CHECK-NEXT:    lea.sl %s12, __udivti3@hi(, %s0)248; CHECK-NEXT:    or %s0, 3, (0)1249; CHECK-NEXT:    or %s1, 0, (0)1250; CHECK-NEXT:    bsic %s10, (, %s12)251; CHECK-NEXT:    or %s11, 0, %s9252  %2 = udiv i128 3, %0253  ret i128 %2254}255 256; Function Attrs: norecurse nounwind readnone257define i64 @divu64li(i64 %a, i64 %b) {258; CHECK-LABEL: divu64li:259; CHECK:       # %bb.0:260; CHECK-NEXT:    divu.l %s0, 3, %s1261; CHECK-NEXT:    b.l.t (, %s10)262  %r = udiv i64 3, %b263  ret i64 %r264}265 266; Function Attrs: norecurse nounwind readnone267define zeroext i32 @divu32li(i32 zeroext %a, i32 zeroext %b) {268; CHECK-LABEL: divu32li:269; CHECK:       # %bb.0:270; CHECK-NEXT:    divu.w %s0, 3, %s1271; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1272; CHECK-NEXT:    b.l.t (, %s10)273  %r = udiv i32 3, %b274  ret i32 %r275}276