brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.7 KiB · 7bb5f6c Raw
337 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -verify-machineinstrs -csky-no-aliases -mattr=+2e3 < %s -mtriple=csky | FileCheck %s3 4define i32 @select_by_icmp_ugt(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {5; CHECK-LABEL: select_by_icmp_ugt:6; CHECK:       # %bb.0:7; CHECK-NEXT:    cmphs16 a1, a08; CHECK-NEXT:    decf32 a3, a2, 109; CHECK-NEXT:    mov16 a0, a310; CHECK-NEXT:    rts1611  %t4 = icmp ugt i32 %t0, %t112  %t5 = sub i32 %t2, 1013  %t6 = select i1 %t4, i32 %t5, i32 %t314  ret i32 %t615}16 17define i32 @select_by_icmp_sgt(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {18; CHECK-LABEL: select_by_icmp_sgt:19; CHECK:       # %bb.0:20; CHECK-NEXT:    cmplt16 a1, a021; CHECK-NEXT:    dect32 a3, a2, 1022; CHECK-NEXT:    mov16 a0, a323; CHECK-NEXT:    rts1624  %t4 = icmp sgt i32 %t0, %t125  %t5 = sub i32 %t2, 1026  %t6 = select i1 %t4, i32 %t5, i32 %t327  ret i32 %t628}29 30define i32 @select_by_icmp_uge(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {31; CHECK-LABEL: select_by_icmp_uge:32; CHECK:       # %bb.0:33; CHECK-NEXT:    cmphs16 a0, a134; CHECK-NEXT:    dect32 a3, a2, 1035; CHECK-NEXT:    mov16 a0, a336; CHECK-NEXT:    rts1637  %t4 = icmp uge i32 %t0, %t138  %t5 = sub i32 %t2, 1039  %t6 = select i1 %t4, i32 %t5, i32 %t340  ret i32 %t641}42 43define i32 @select_by_icmp_sge(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {44; CHECK-LABEL: select_by_icmp_sge:45; CHECK:       # %bb.0:46; CHECK-NEXT:    cmplt16 a0, a147; CHECK-NEXT:    decf32 a3, a2, 1048; CHECK-NEXT:    mov16 a0, a349; CHECK-NEXT:    rts1650  %t4 = icmp sge i32 %t0, %t151  %t5 = sub i32 %t2, 1052  %t6 = select i1 %t4, i32 %t5, i32 %t353  ret i32 %t654}55 56define i32 @select_by_icmp_ult(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {57; CHECK-LABEL: select_by_icmp_ult:58; CHECK:       # %bb.0:59; CHECK-NEXT:    cmphs16 a0, a160; CHECK-NEXT:    decf32 a3, a2, 1061; CHECK-NEXT:    mov16 a0, a362; CHECK-NEXT:    rts1663  %t4 = icmp ult i32 %t0, %t164  %t5 = sub i32 %t2, 1065  %t6 = select i1 %t4, i32 %t5, i32 %t366  ret i32 %t667}68 69define i32 @select_by_icmp_slt(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {70; CHECK-LABEL: select_by_icmp_slt:71; CHECK:       # %bb.0:72; CHECK-NEXT:    cmplt16 a0, a173; CHECK-NEXT:    dect32 a3, a2, 1074; CHECK-NEXT:    mov16 a0, a375; CHECK-NEXT:    rts1676  %t4 = icmp slt i32 %t0, %t177  %t5 = sub i32 %t2, 1078  %t6 = select i1 %t4, i32 %t5, i32 %t379  ret i32 %t680}81 82define i32 @select_by_icmp_ule(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {83; CHECK-LABEL: select_by_icmp_ule:84; CHECK:       # %bb.0:85; CHECK-NEXT:    cmphs16 a1, a086; CHECK-NEXT:    dect32 a3, a2, 1087; CHECK-NEXT:    mov16 a0, a388; CHECK-NEXT:    rts1689  %t4 = icmp ule i32 %t0, %t190  %t5 = sub i32 %t2, 1091  %t6 = select i1 %t4, i32 %t5, i32 %t392  ret i32 %t693}94 95define i32 @select_by_icmp_sle(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {96; CHECK-LABEL: select_by_icmp_sle:97; CHECK:       # %bb.0:98; CHECK-NEXT:    cmplt16 a1, a099; CHECK-NEXT:    decf32 a3, a2, 10100; CHECK-NEXT:    mov16 a0, a3101; CHECK-NEXT:    rts16102  %t4 = icmp sle i32 %t0, %t1103  %t5 = sub i32 %t2, 10104  %t6 = select i1 %t4, i32 %t5, i32 %t3105  ret i32 %t6106}107 108define i32 @select_by_icmp_ne(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {109; CHECK-LABEL: select_by_icmp_ne:110; CHECK:       # %bb.0:111; CHECK-NEXT:    cmpne16 a0, a1112; CHECK-NEXT:    dect32 a3, a2, 10113; CHECK-NEXT:    mov16 a0, a3114; CHECK-NEXT:    rts16115  %t4 = icmp ne i32 %t0, %t1116  %t5 = sub i32 %t2, 10117  %t6 = select i1 %t4, i32 %t5, i32 %t3118  ret i32 %t6119}120 121define i32 @select_by_icmp_eq(i32 %t0, i32 %t1, i32 %t2, i32 %t3) {122; CHECK-LABEL: select_by_icmp_eq:123; CHECK:       # %bb.0:124; CHECK-NEXT:    cmpne16 a0, a1125; CHECK-NEXT:    decf32 a3, a2, 10126; CHECK-NEXT:    mov16 a0, a3127; CHECK-NEXT:    rts16128  %t4 = icmp eq i32 %t0, %t1129  %t5 = sub i32 %t2, 10130  %t6 = select i1 %t4, i32 %t5, i32 %t3131  ret i32 %t6132}133 134define i32 @select_by_icmp_ugt_imm(i32 %t0, i32 %t2, i32 %t3) {135; CHECK-LABEL: select_by_icmp_ugt_imm:136; CHECK:       # %bb.0:137; CHECK-NEXT:    movi16 a3, 128138; CHECK-NEXT:    cmphs16 a3, a0139; CHECK-NEXT:    decf32 a2, a1, 10140; CHECK-NEXT:    mov16 a0, a2141; CHECK-NEXT:    rts16142  %t4 = icmp ugt i32 %t0, 128143  %t5 = sub i32 %t2, 10144  %t6 = select i1 %t4, i32 %t5, i32 %t3145  ret i32 %t6146}147 148define i32 @select_by_icmp_sgt_imm(i32 %t0, i32 %t2, i32 %t3) {149; CHECK-LABEL: select_by_icmp_sgt_imm:150; CHECK:       # %bb.0:151; CHECK-NEXT:    movi16 a3, 128152; CHECK-NEXT:    cmplt16 a3, a0153; CHECK-NEXT:    dect32 a2, a1, 10154; CHECK-NEXT:    mov16 a0, a2155; CHECK-NEXT:    rts16156  %t4 = icmp sgt i32 %t0, 128157  %t5 = sub i32 %t2, 10158  %t6 = select i1 %t4, i32 %t5, i32 %t3159  ret i32 %t6160}161 162define i32 @select_by_icmp_uge_imm(i32 %t0, i32 %t2, i32 %t3) {163; CHECK-LABEL: select_by_icmp_uge_imm:164; CHECK:       # %bb.0:165; CHECK-NEXT:    movi16 a3, 127166; CHECK-NEXT:    cmphs16 a3, a0167; CHECK-NEXT:    decf32 a2, a1, 10168; CHECK-NEXT:    mov16 a0, a2169; CHECK-NEXT:    rts16170  %t4 = icmp uge i32 %t0, 128171  %t5 = sub i32 %t2, 10172  %t6 = select i1 %t4, i32 %t5, i32 %t3173  ret i32 %t6174}175 176define i32 @select_by_icmp_sge_imm(i32 %t0, i32 %t2, i32 %t3) {177; CHECK-LABEL: select_by_icmp_sge_imm:178; CHECK:       # %bb.0:179; CHECK-NEXT:    movi16 a3, 127180; CHECK-NEXT:    cmplt16 a3, a0181; CHECK-NEXT:    dect32 a2, a1, 10182; CHECK-NEXT:    mov16 a0, a2183; CHECK-NEXT:    rts16184  %t4 = icmp sge i32 %t0, 128185  %t5 = sub i32 %t2, 10186  %t6 = select i1 %t4, i32 %t5, i32 %t3187  ret i32 %t6188}189 190define i32 @select_by_icmp_ult_imm(i32 %t0, i32 %t2, i32 %t3) {191; CHECK-LABEL: select_by_icmp_ult_imm:192; CHECK:       # %bb.0:193; CHECK-NEXT:    cmphsi32 a0, 128194; CHECK-NEXT:    decf32 a2, a1, 10195; CHECK-NEXT:    mov16 a0, a2196; CHECK-NEXT:    rts16197  %t4 = icmp ult i32 %t0, 128198  %t5 = sub i32 %t2, 10199  %t6 = select i1 %t4, i32 %t5, i32 %t3200  ret i32 %t6201}202 203define i32 @select_by_icmp_slt_imm(i32 %t0, i32 %t2, i32 %t3) {204; CHECK-LABEL: select_by_icmp_slt_imm:205; CHECK:       # %bb.0:206; CHECK-NEXT:    cmplti32 a0, 128207; CHECK-NEXT:    dect32 a2, a1, 10208; CHECK-NEXT:    mov16 a0, a2209; CHECK-NEXT:    rts16210  %t4 = icmp slt i32 %t0, 128211  %t5 = sub i32 %t2, 10212  %t6 = select i1 %t4, i32 %t5, i32 %t3213  ret i32 %t6214}215 216define i32 @select_by_icmp_ule_imm(i32 %t0, i32 %t2, i32 %t3) {217; CHECK-LABEL: select_by_icmp_ule_imm:218; CHECK:       # %bb.0:219; CHECK-NEXT:    cmphsi32 a0, 129220; CHECK-NEXT:    decf32 a2, a1, 10221; CHECK-NEXT:    mov16 a0, a2222; CHECK-NEXT:    rts16223  %t4 = icmp ule i32 %t0, 128224  %t5 = sub i32 %t2, 10225  %t6 = select i1 %t4, i32 %t5, i32 %t3226  ret i32 %t6227}228 229define i32 @select_by_icmp_sle_imm(i32 %t0, i32 %t2, i32 %t3) {230; CHECK-LABEL: select_by_icmp_sle_imm:231; CHECK:       # %bb.0:232; CHECK-NEXT:    cmplti32 a0, 129233; CHECK-NEXT:    dect32 a2, a1, 10234; CHECK-NEXT:    mov16 a0, a2235; CHECK-NEXT:    rts16236  %t4 = icmp sle i32 %t0, 128237  %t5 = sub i32 %t2, 10238  %t6 = select i1 %t4, i32 %t5, i32 %t3239  ret i32 %t6240}241 242define i32 @select_by_icmp_ne_imm(i32 %t0, i32 %t2, i32 %t3) {243; CHECK-LABEL: select_by_icmp_ne_imm:244; CHECK:       # %bb.0:245; CHECK-NEXT:    cmpnei32 a0, 128246; CHECK-NEXT:    dect32 a2, a1, 10247; CHECK-NEXT:    mov16 a0, a2248; CHECK-NEXT:    rts16249  %t4 = icmp ne i32 %t0, 128250  %t5 = sub i32 %t2, 10251  %t6 = select i1 %t4, i32 %t5, i32 %t3252  ret i32 %t6253}254 255define i32 @select_by_icmp_eq_imm(i32 %t0, i32 %t2, i32 %t3) {256; CHECK-LABEL: select_by_icmp_eq_imm:257; CHECK:       # %bb.0:258; CHECK-NEXT:    cmpnei32 a0, 128259; CHECK-NEXT:    decf32 a2, a1, 10260; CHECK-NEXT:    mov16 a0, a2261; CHECK-NEXT:    rts16262  %t4 = icmp eq i32 %t0, 128263  %t5 = sub i32 %t2, 10264  %t6 = select i1 %t4, i32 %t5, i32 %t3265  ret i32 %t6266}267 268define i32 @select_by_call_t(i32 %t0, i32 %t1, i32 %t2) {269; CHECK-LABEL: select_by_call_t:270; CHECK:       # %bb.0:271; CHECK-NEXT:    subi16 sp, sp, 12272; CHECK-NEXT:    .cfi_def_cfa_offset 12273; CHECK-NEXT:    st16.w l1, (sp, 8) # 4-byte Folded Spill274; CHECK-NEXT:    st16.w l0, (sp, 4) # 4-byte Folded Spill275; CHECK-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill276; CHECK-NEXT:    .cfi_offset l1, -4277; CHECK-NEXT:    .cfi_offset l0, -8278; CHECK-NEXT:    .cfi_offset lr, -12279; CHECK-NEXT:    .cfi_def_cfa_offset 12280; CHECK-NEXT:    mov16 l0, a2281; CHECK-NEXT:    mov16 l1, a1282; CHECK-NEXT:    jsri32 [.LCPI20_0]283; CHECK-NEXT:    btsti16 a0, 0284; CHECK-NEXT:    dect32 l0, l1, 10285; CHECK-NEXT:    mov16 a0, l0286; CHECK-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload287; CHECK-NEXT:    ld16.w l0, (sp, 4) # 4-byte Folded Reload288; CHECK-NEXT:    ld16.w l1, (sp, 8) # 4-byte Folded Reload289; CHECK-NEXT:    addi16 sp, sp, 12290; CHECK-NEXT:    rts16291; CHECK-NEXT:    .p2align 1292; CHECK-NEXT:  # %bb.1:293; CHECK-NEXT:    .p2align 2, 0x0294; CHECK-NEXT:  .LCPI20_0:295; CHECK-NEXT:    .long check_val296  %t3 = tail call i1 @check_val(i32 %t0)297  %t4 = sub i32 %t1, 10298  %t5 = select i1 %t3, i32 %t4, i32 %t2299  ret i32 %t5300}301 302define i32 @select_by_call_f(i32 %t0, i32 %t1, i32 %t2) {303; CHECK-LABEL: select_by_call_f:304; CHECK:       # %bb.0:305; CHECK-NEXT:    subi16 sp, sp, 12306; CHECK-NEXT:    .cfi_def_cfa_offset 12307; CHECK-NEXT:    st16.w l1, (sp, 8) # 4-byte Folded Spill308; CHECK-NEXT:    st16.w l0, (sp, 4) # 4-byte Folded Spill309; CHECK-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill310; CHECK-NEXT:    .cfi_offset l1, -4311; CHECK-NEXT:    .cfi_offset l0, -8312; CHECK-NEXT:    .cfi_offset lr, -12313; CHECK-NEXT:    .cfi_def_cfa_offset 12314; CHECK-NEXT:    mov16 l0, a2315; CHECK-NEXT:    mov16 l1, a1316; CHECK-NEXT:    jsri32 [.LCPI21_0]317; CHECK-NEXT:    btsti16 a0, 0318; CHECK-NEXT:    decf32 l0, l1, 10319; CHECK-NEXT:    mov16 a0, l0320; CHECK-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload321; CHECK-NEXT:    ld16.w l0, (sp, 4) # 4-byte Folded Reload322; CHECK-NEXT:    ld16.w l1, (sp, 8) # 4-byte Folded Reload323; CHECK-NEXT:    addi16 sp, sp, 12324; CHECK-NEXT:    rts16325; CHECK-NEXT:    .p2align 1326; CHECK-NEXT:  # %bb.1:327; CHECK-NEXT:    .p2align 2, 0x0328; CHECK-NEXT:  .LCPI21_0:329; CHECK-NEXT:    .long check_val330  %t3 = tail call i1 @check_val(i32 %t0)331  %t4 = sub i32 %t1, 10332  %t5 = select i1 %t3, i32 %t2, i32 %t4333  ret i32 %t5334}335 336declare i1 @check_val(i32)337