brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · 2524a33 Raw
180 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=xtensa -verify-machineinstrs < %s \3; RUN:   | FileCheck -check-prefix=XTENSA %s4 5declare i32 @llvm.cttz.i32(i32, i1)6declare i32 @llvm.ctlz.i32(i32, i1)7declare i32 @llvm.ctpop.i32(i32)8 9define i32 @test_cttz_i32(i32 %a) nounwind {10; XTENSA-LABEL: test_cttz_i32:11; XTENSA:       # %bb.0:12; XTENSA-NEXT:    beqz a2, .LBB0_213; XTENSA-NEXT:  # %bb.1: # %cond.false14; XTENSA-NEXT:    movi a8, -115; XTENSA-NEXT:    xor a8, a2, a816; XTENSA-NEXT:    addi a9, a2, -117; XTENSA-NEXT:    and a8, a8, a918; XTENSA-NEXT:    srli a9, a8, 119; XTENSA-NEXT:    l32r a10, .LCPI0_020; XTENSA-NEXT:    and a9, a9, a1021; XTENSA-NEXT:    sub a8, a8, a922; XTENSA-NEXT:    l32r a9, .LCPI0_123; XTENSA-NEXT:    and a10, a8, a924; XTENSA-NEXT:    srli a8, a8, 225; XTENSA-NEXT:    and a8, a8, a926; XTENSA-NEXT:    add a8, a10, a827; XTENSA-NEXT:    srli a9, a8, 428; XTENSA-NEXT:    add a8, a8, a929; XTENSA-NEXT:    l32r a9, .LCPI0_230; XTENSA-NEXT:    and a8, a8, a931; XTENSA-NEXT:    slli a9, a8, 832; XTENSA-NEXT:    add a8, a8, a933; XTENSA-NEXT:    slli a9, a8, 1634; XTENSA-NEXT:    add a8, a8, a935; XTENSA-NEXT:    extui a2, a8, 24, 836; XTENSA-NEXT:    ret37; XTENSA-NEXT:  .LBB0_2:38; XTENSA-NEXT:    movi a2, 3239; XTENSA-NEXT:    ret40  %tmp = call i32 @llvm.cttz.i32(i32 %a, i1 false)41  ret i32 %tmp42}43 44define i32 @test_cttz_i32_zero_undef(i32 %a) nounwind {45; XTENSA-LABEL: test_cttz_i32_zero_undef:46; XTENSA:       # %bb.0:47; XTENSA-NEXT:    movi a8, -148; XTENSA-NEXT:    xor a8, a2, a849; XTENSA-NEXT:    addi a9, a2, -150; XTENSA-NEXT:    and a8, a8, a951; XTENSA-NEXT:    srli a9, a8, 152; XTENSA-NEXT:    l32r a10, .LCPI1_053; XTENSA-NEXT:    and a9, a9, a1054; XTENSA-NEXT:    sub a8, a8, a955; XTENSA-NEXT:    l32r a9, .LCPI1_156; XTENSA-NEXT:    and a10, a8, a957; XTENSA-NEXT:    srli a8, a8, 258; XTENSA-NEXT:    and a8, a8, a959; XTENSA-NEXT:    add a8, a10, a860; XTENSA-NEXT:    srli a9, a8, 461; XTENSA-NEXT:    add a8, a8, a962; XTENSA-NEXT:    l32r a9, .LCPI1_263; XTENSA-NEXT:    and a8, a8, a964; XTENSA-NEXT:    slli a9, a8, 865; XTENSA-NEXT:    add a8, a8, a966; XTENSA-NEXT:    slli a9, a8, 1667; XTENSA-NEXT:    add a8, a8, a968; XTENSA-NEXT:    extui a2, a8, 24, 869; XTENSA-NEXT:    ret70  %tmp = call i32 @llvm.cttz.i32(i32 %a, i1 true)71  ret i32 %tmp72}73 74define i32 @test_ctlz_i32(i32 %a) nounwind {75; XTENSA-LABEL: test_ctlz_i32:76; XTENSA:       # %bb.0:77; XTENSA-NEXT:    beqz a2, .LBB2_278; XTENSA-NEXT:  # %bb.1: # %cond.false79; XTENSA-NEXT:    srli a8, a2, 180; XTENSA-NEXT:    or a8, a2, a881; XTENSA-NEXT:    srli a9, a8, 282; XTENSA-NEXT:    or a8, a8, a983; XTENSA-NEXT:    srli a9, a8, 484; XTENSA-NEXT:    or a8, a8, a985; XTENSA-NEXT:    srli a9, a8, 886; XTENSA-NEXT:    or a8, a8, a987; XTENSA-NEXT:    extui a9, a8, 16, 1688; XTENSA-NEXT:    or a8, a8, a989; XTENSA-NEXT:    movi a9, -190; XTENSA-NEXT:    xor a8, a8, a991; XTENSA-NEXT:    srli a9, a8, 192; XTENSA-NEXT:    l32r a10, .LCPI2_093; XTENSA-NEXT:    and a9, a9, a1094; XTENSA-NEXT:    sub a8, a8, a995; XTENSA-NEXT:    l32r a9, .LCPI2_196; XTENSA-NEXT:    and a10, a8, a997; XTENSA-NEXT:    srli a8, a8, 298; XTENSA-NEXT:    and a8, a8, a999; XTENSA-NEXT:    add a8, a10, a8100; XTENSA-NEXT:    srli a9, a8, 4101; XTENSA-NEXT:    add a8, a8, a9102; XTENSA-NEXT:    l32r a9, .LCPI2_2103; XTENSA-NEXT:    and a8, a8, a9104; XTENSA-NEXT:    slli a9, a8, 8105; XTENSA-NEXT:    add a8, a8, a9106; XTENSA-NEXT:    slli a9, a8, 16107; XTENSA-NEXT:    add a8, a8, a9108; XTENSA-NEXT:    extui a2, a8, 24, 8109; XTENSA-NEXT:    ret110; XTENSA-NEXT:  .LBB2_2:111; XTENSA-NEXT:    movi a2, 32112; XTENSA-NEXT:    ret113  %tmp = call i32 @llvm.ctlz.i32(i32 %a, i1 false)114  ret i32 %tmp115}116 117define i32 @test_ctlz_i32_zero_undef(i32 %a) nounwind {118; XTENSA-LABEL: test_ctlz_i32_zero_undef:119; XTENSA:       # %bb.0:120; XTENSA-NEXT:    srli a8, a2, 1121; XTENSA-NEXT:    or a8, a2, a8122; XTENSA-NEXT:    srli a9, a8, 2123; XTENSA-NEXT:    or a8, a8, a9124; XTENSA-NEXT:    srli a9, a8, 4125; XTENSA-NEXT:    or a8, a8, a9126; XTENSA-NEXT:    srli a9, a8, 8127; XTENSA-NEXT:    or a8, a8, a9128; XTENSA-NEXT:    extui a9, a8, 16, 16129; XTENSA-NEXT:    or a8, a8, a9130; XTENSA-NEXT:    movi a9, -1131; XTENSA-NEXT:    xor a8, a8, a9132; XTENSA-NEXT:    srli a9, a8, 1133; XTENSA-NEXT:    l32r a10, .LCPI3_0134; XTENSA-NEXT:    and a9, a9, a10135; XTENSA-NEXT:    sub a8, a8, a9136; XTENSA-NEXT:    l32r a9, .LCPI3_1137; XTENSA-NEXT:    and a10, a8, a9138; XTENSA-NEXT:    srli a8, a8, 2139; XTENSA-NEXT:    and a8, a8, a9140; XTENSA-NEXT:    add a8, a10, a8141; XTENSA-NEXT:    srli a9, a8, 4142; XTENSA-NEXT:    add a8, a8, a9143; XTENSA-NEXT:    l32r a9, .LCPI3_2144; XTENSA-NEXT:    and a8, a8, a9145; XTENSA-NEXT:    slli a9, a8, 8146; XTENSA-NEXT:    add a8, a8, a9147; XTENSA-NEXT:    slli a9, a8, 16148; XTENSA-NEXT:    add a8, a8, a9149; XTENSA-NEXT:    extui a2, a8, 24, 8150; XTENSA-NEXT:    ret151  %tmp = call i32 @llvm.ctlz.i32(i32 %a, i1 true)152  ret i32 %tmp153}154 155define i32 @test_ctpop_i32(i32 %a) nounwind {156; XTENSA-LABEL: test_ctpop_i32:157; XTENSA:       # %bb.0:158; XTENSA-NEXT:    srli a8, a2, 1159; XTENSA-NEXT:    l32r a9, .LCPI4_0160; XTENSA-NEXT:    and a8, a8, a9161; XTENSA-NEXT:    sub a8, a2, a8162; XTENSA-NEXT:    l32r a9, .LCPI4_1163; XTENSA-NEXT:    and a10, a8, a9164; XTENSA-NEXT:    srli a8, a8, 2165; XTENSA-NEXT:    and a8, a8, a9166; XTENSA-NEXT:    add a8, a10, a8167; XTENSA-NEXT:    srli a9, a8, 4168; XTENSA-NEXT:    add a8, a8, a9169; XTENSA-NEXT:    l32r a9, .LCPI4_2170; XTENSA-NEXT:    and a8, a8, a9171; XTENSA-NEXT:    slli a9, a8, 8172; XTENSA-NEXT:    add a8, a8, a9173; XTENSA-NEXT:    slli a9, a8, 16174; XTENSA-NEXT:    add a8, a8, a9175; XTENSA-NEXT:    extui a2, a8, 24, 8176; XTENSA-NEXT:    ret177  %1 = call i32 @llvm.ctpop.i32(i32 %a)178  ret i32 %1179}180