brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · cf200a1 Raw
81 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 < %s -relocation-model=pic -mtriple=sparc -mcpu=v9 | FileCheck --check-prefix=SPARC %s3; RUN: llc -O3 < %s -relocation-model=pic -mtriple=sparcv9 | FileCheck --check-prefix=SPARC64 %s4; RUN: llc -O3 < %s -relocation-model=pic -mtriple=sparc -mcpu=v9 -mattr=+no-predictor | FileCheck --check-prefix=SPARC-NO-PREDICTOR %s5; RUN: llc -O3 < %s -relocation-model=pic -mtriple=sparcv9 -mattr=+no-predictor | FileCheck --check-prefix=SPARC64-NO-PREDICTOR %s6 7;; Normally, highly predictable selects should be turned into branches.8;; On the other hand, early Niagara processors should prefer conditional moves9;; over branches even when it's predictable.10 11define i32 @cdiv(i32 %cond, i32 %num) #0 {12; SPARC-LABEL: cdiv:13; SPARC:       ! %bb.0: ! %entry14; SPARC-NEXT:    cmp %o0, 015; SPARC-NEXT:    be %icc, .LBB0_216; SPARC-NEXT:    mov %o1, %o017; SPARC-NEXT:  ! %bb.1: ! %select.end18; SPARC-NEXT:    retl19; SPARC-NEXT:    nop20; SPARC-NEXT:  .LBB0_2: ! %select.true.sink21; SPARC-NEXT:    sethi 1398101, %o122; SPARC-NEXT:    or %o1, 342, %o123; SPARC-NEXT:    smul %o0, %o1, %o024; SPARC-NEXT:    rd %y, %o025; SPARC-NEXT:    srl %o0, 31, %o126; SPARC-NEXT:    retl27; SPARC-NEXT:    add %o0, %o1, %o028;29; SPARC64-LABEL: cdiv:30; SPARC64:       ! %bb.0: ! %entry31; SPARC64-NEXT:    cmp %o0, 032; SPARC64-NEXT:    be %icc, .LBB0_233; SPARC64-NEXT:    mov %o1, %o034; SPARC64-NEXT:  ! %bb.1: ! %select.end35; SPARC64-NEXT:    retl36; SPARC64-NEXT:    nop37; SPARC64-NEXT:  .LBB0_2: ! %select.true.sink38; SPARC64-NEXT:    sra %o0, 0, %o039; SPARC64-NEXT:    sethi 1398101, %o140; SPARC64-NEXT:    or %o1, 342, %o141; SPARC64-NEXT:    mulx %o0, %o1, %o042; SPARC64-NEXT:    srlx %o0, 63, %o143; SPARC64-NEXT:    srlx %o0, 32, %o044; SPARC64-NEXT:    retl45; SPARC64-NEXT:    add %o0, %o1, %o046;47; SPARC-NO-PREDICTOR-LABEL: cdiv:48; SPARC-NO-PREDICTOR:       ! %bb.0: ! %entry49; SPARC-NO-PREDICTOR-NEXT:    sethi 1398101, %o250; SPARC-NO-PREDICTOR-NEXT:    or %o2, 342, %o251; SPARC-NO-PREDICTOR-NEXT:    smul %o1, %o2, %o252; SPARC-NO-PREDICTOR-NEXT:    rd %y, %o253; SPARC-NO-PREDICTOR-NEXT:    srl %o2, 31, %o354; SPARC-NO-PREDICTOR-NEXT:    add %o2, %o3, %o255; SPARC-NO-PREDICTOR-NEXT:    cmp %o0, 056; SPARC-NO-PREDICTOR-NEXT:    move %icc, %o2, %o157; SPARC-NO-PREDICTOR-NEXT:    retl58; SPARC-NO-PREDICTOR-NEXT:    mov %o1, %o059;60; SPARC64-NO-PREDICTOR-LABEL: cdiv:61; SPARC64-NO-PREDICTOR:       ! %bb.0: ! %entry62; SPARC64-NO-PREDICTOR-NEXT:    sra %o1, 0, %o263; SPARC64-NO-PREDICTOR-NEXT:    sethi 1398101, %o364; SPARC64-NO-PREDICTOR-NEXT:    or %o3, 342, %o365; SPARC64-NO-PREDICTOR-NEXT:    mulx %o2, %o3, %o266; SPARC64-NO-PREDICTOR-NEXT:    srlx %o2, 63, %o367; SPARC64-NO-PREDICTOR-NEXT:    srlx %o2, 32, %o268; SPARC64-NO-PREDICTOR-NEXT:    add %o2, %o3, %o269; SPARC64-NO-PREDICTOR-NEXT:    cmp %o0, 070; SPARC64-NO-PREDICTOR-NEXT:    move %icc, %o2, %o171; SPARC64-NO-PREDICTOR-NEXT:    retl72; SPARC64-NO-PREDICTOR-NEXT:    mov %o1, %o073entry:74  %div = sdiv i32 %num, 375  %cmp = icmp eq i32 %cond, 076  %ret = select i1 %cmp, i32 %div, i32 %num77  ret i32 %ret78}79 80attributes #0 = { nounwind }81