brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 6bc4c62 Raw
105 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O0 -mtriple=mipsel-linux-gnu -global-isel -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS323 4define i32 @cttz_i32(i32 %a) {5; MIPS32-LABEL: cttz_i32:6; MIPS32:       # %bb.0: # %entry7; MIPS32-NEXT:    not $1, $48; MIPS32-NEXT:    addiu $2, $4, -19; MIPS32-NEXT:    and $2, $1, $210; MIPS32-NEXT:    ori $1, $zero, 3211; MIPS32-NEXT:    clz $2, $212; MIPS32-NEXT:    subu $2, $1, $213; MIPS32-NEXT:    jr $ra14; MIPS32-NEXT:    nop15entry:16  %0 = call i32 @llvm.cttz.i32(i32 %a, i1 false)17  ret i32 %018}19declare i32 @llvm.cttz.i32(i32, i1 immarg)20 21define i64 @cttz_i64(i64  %a) {22; MIPS32-LABEL: cttz_i64:23; MIPS32:       # %bb.0: # %entry24; MIPS32-NEXT:    ori $3, $zero, 025; MIPS32-NEXT:    not $1, $526; MIPS32-NEXT:    addiu $2, $5, -127; MIPS32-NEXT:    and $1, $1, $228; MIPS32-NEXT:    ori $2, $zero, 3229; MIPS32-NEXT:    clz $1, $130; MIPS32-NEXT:    subu $1, $2, $131; MIPS32-NEXT:    addiu $1, $1, 3232; MIPS32-NEXT:    not $5, $433; MIPS32-NEXT:    addiu $6, $4, -134; MIPS32-NEXT:    and $5, $5, $635; MIPS32-NEXT:    clz $5, $536; MIPS32-NEXT:    subu $2, $2, $537; MIPS32-NEXT:    movz $2, $1, $438; MIPS32-NEXT:    jr $ra39; MIPS32-NEXT:    nop40entry:41  %0 = call i64 @llvm.cttz.i64(i64 %a, i1 false)42  ret i64 %043}44declare i64 @llvm.cttz.i64(i64, i1 immarg)45 46 47define i32 @ffs_i32_expansion(i32 %a) {48; MIPS32-LABEL: ffs_i32_expansion:49; MIPS32:       # %bb.0: # %entry50; MIPS32-NEXT:    ori $1, $zero, 051; MIPS32-NEXT:    not $2, $452; MIPS32-NEXT:    addiu $3, $4, -153; MIPS32-NEXT:    and $3, $2, $354; MIPS32-NEXT:    ori $2, $zero, 3255; MIPS32-NEXT:    clz $3, $356; MIPS32-NEXT:    subu $2, $2, $357; MIPS32-NEXT:    addiu $2, $2, 158; MIPS32-NEXT:    movz $2, $1, $459; MIPS32-NEXT:    jr $ra60; MIPS32-NEXT:    nop61entry:62  %0 = call i32 @llvm.cttz.i32(i32 %a, i1 true)63  %1 = add nuw nsw i32 %0, 164  %iszero = icmp eq i32 %a, 065  %ffs = select i1 %iszero, i32 0, i32 %166  ret i32 %ffs67}68 69define i64 @ffs_i64_expansion(i64 %a) {70; MIPS32-LABEL: ffs_i64_expansion:71; MIPS32:       # %bb.0: # %entry72; MIPS32-NEXT:    ori $3, $zero, 173; MIPS32-NEXT:    ori $1, $zero, 074; MIPS32-NEXT:    not $2, $575; MIPS32-NEXT:    addiu $6, $5, -176; MIPS32-NEXT:    and $6, $2, $677; MIPS32-NEXT:    ori $2, $zero, 3278; MIPS32-NEXT:    clz $6, $679; MIPS32-NEXT:    subu $6, $2, $680; MIPS32-NEXT:    addiu $6, $6, 3281; MIPS32-NEXT:    not $7, $482; MIPS32-NEXT:    addiu $8, $4, -183; MIPS32-NEXT:    and $7, $7, $884; MIPS32-NEXT:    clz $7, $785; MIPS32-NEXT:    subu $2, $2, $786; MIPS32-NEXT:    movz $2, $6, $487; MIPS32-NEXT:    addiu $2, $2, 188; MIPS32-NEXT:    sltu $6, $2, $389; MIPS32-NEXT:    addiu $3, $1, 090; MIPS32-NEXT:    addu $3, $3, $691; MIPS32-NEXT:    xori $4, $4, 092; MIPS32-NEXT:    xori $5, $5, 093; MIPS32-NEXT:    or $4, $4, $594; MIPS32-NEXT:    movz $2, $1, $495; MIPS32-NEXT:    movz $3, $1, $496; MIPS32-NEXT:    jr $ra97; MIPS32-NEXT:    nop98entry:99  %0 = call i64 @llvm.cttz.i64(i64 %a, i1 true)100  %1 = add nuw nsw i64 %0, 1101  %iszero = icmp eq i64 %a, 0102  %ffs = select i1 %iszero, i64 0, i64 %1103  ret i64 %ffs104}105