brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · da68709 Raw
104 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s3;4; FIXME: two consecutive immediate adds not fused in i16/i8 functions.5 6declare i64 @llvm.ctlz.i64(i64, i1)7declare i32 @llvm.ctlz.i32(i32, i1)8declare i16 @llvm.ctlz.i16(i16, i1)9declare i8 @llvm.ctlz.i8(i8, i1)10 11define i64 @f0(i64 %arg) {12; CHECK-LABEL: f0:13; CHECK:       # %bb.0:14; CHECK-NEXT:    flogr %r2, %r215; CHECK-NEXT:    # kill: def $r2d killed $r2d killed $r2q16; CHECK-NEXT:    br %r1417  %1 = tail call i64 @llvm.ctlz.i64(i64 %arg, i1 false)18  ret i64 %119}20 21define i64 @f1(i64 %arg) {22; CHECK-LABEL: f1:23; CHECK:       # %bb.0:24; CHECK-NEXT:    flogr %r2, %r225; CHECK-NEXT:    # kill: def $r2d killed $r2d killed $r2q26; CHECK-NEXT:    br %r1427  %1 = tail call i64 @llvm.ctlz.i64(i64 %arg, i1 true)28  ret i64 %129}30 31define i32 @f2(i32 %arg) {32; CHECK-LABEL: f2:33; CHECK:       # %bb.0:34; CHECK-NEXT:    llgfr %r0, %r235; CHECK-NEXT:    flogr %r2, %r036; CHECK-NEXT:    aghi %r2, -3237; CHECK-NEXT:    # kill: def $r2l killed $r2l killed $r2d38; CHECK-NEXT:    br %r1439  %1 = tail call i32 @llvm.ctlz.i32(i32 %arg, i1 false)40  ret i32 %141}42 43define i32 @f3(i32 %arg) {44; CHECK-LABEL: f3:45; CHECK:       # %bb.0:46; CHECK-NEXT:    # kill: def $r2l killed $r2l def $r2d47; CHECK-NEXT:    sllg %r0, %r2, 3248; CHECK-NEXT:    flogr %r2, %r049; CHECK-NEXT:    # kill: def $r2l killed $r2l killed $r2q50; CHECK-NEXT:    br %r1451  %1 = tail call i32 @llvm.ctlz.i32(i32 %arg, i1 true)52  ret i32 %153}54 55define i16 @f4(i16 %arg) {56; CHECK-LABEL: f4:57; CHECK:       # %bb.0:58; CHECK-NEXT:    # kill: def $r2l killed $r2l def $r2d59; CHECK-NEXT:    llghr %r0, %r260; CHECK-NEXT:    flogr %r0, %r061; CHECK-NEXT:    aghi %r0, -3262; CHECK-NEXT:    ahik %r2, %r0, -1663; CHECK-NEXT:    br %r1464  %1 = tail call i16 @llvm.ctlz.i16(i16 %arg, i1 false)65  ret i16 %166}67 68define i16 @f5(i16 %arg) {69; CHECK-LABEL: f5:70; CHECK:       # %bb.0:71; CHECK-NEXT:    # kill: def $r2l killed $r2l def $r2d72; CHECK-NEXT:    sllg %r0, %r2, 4873; CHECK-NEXT:    flogr %r2, %r074; CHECK-NEXT:    # kill: def $r2l killed $r2l killed $r2q75; CHECK-NEXT:    br %r1476  %1 = tail call i16 @llvm.ctlz.i16(i16 %arg, i1 true)77  ret i16 %178}79 80define i8 @f6(i8 %arg) {81; CHECK-LABEL: f6:82; CHECK:       # %bb.0:83; CHECK-NEXT:    # kill: def $r2l killed $r2l def $r2d84; CHECK-NEXT:    llgcr %r0, %r285; CHECK-NEXT:    flogr %r0, %r086; CHECK-NEXT:    aghi %r0, -3287; CHECK-NEXT:    ahik %r2, %r0, -2488; CHECK-NEXT:    br %r1489  %1 = tail call i8 @llvm.ctlz.i8(i8 %arg, i1 false)90  ret i8 %191}92 93define i8 @f7(i8 %arg) {94; CHECK-LABEL: f7:95; CHECK:       # %bb.0:96; CHECK-NEXT:    # kill: def $r2l killed $r2l def $r2d97; CHECK-NEXT:    sllg %r0, %r2, 5698; CHECK-NEXT:    flogr %r2, %r099; CHECK-NEXT:    # kill: def $r2l killed $r2l killed $r2q100; CHECK-NEXT:    br %r14101  %1 = tail call i8 @llvm.ctlz.i8(i8 %arg, i1 true)102  ret i8 %1103}104