brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 8cb0d79 Raw
186 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=armv7a < %s | FileCheck %s --check-prefix=ARM3; RUN: llc -mtriple=armv6m < %s | FileCheck %s --check-prefix=THUMB4; RUN: llc -mtriple=armv7m < %s | FileCheck %s --check-prefix=THUMB25; RUN: llc -mtriple=thumbv8.1m.main < %s | FileCheck %s --check-prefix=THUMBV86 7declare i8 @llvm.smax.i8(i8 %a, i8 %b) readnone8 9define i8 @smaxi8_zero(i8 %a) {10; ARM-LABEL: smaxi8_zero:11; ARM:       @ %bb.0:12; ARM-NEXT:    sxtb r0, r013; ARM-NEXT:    bic r0, r0, r0, asr #3114; ARM-NEXT:    bx lr15;16; THUMB-LABEL: smaxi8_zero:17; THUMB:       @ %bb.0:18; THUMB-NEXT:    sxtb r0, r019; THUMB-NEXT:    asrs r1, r0, #3120; THUMB-NEXT:    bics r0, r121; THUMB-NEXT:    bx lr22;23; THUMB2-LABEL: smaxi8_zero:24; THUMB2:       @ %bb.0:25; THUMB2-NEXT:    sxtb r0, r026; THUMB2-NEXT:    bic.w r0, r0, r0, asr #3127; THUMB2-NEXT:    bx lr28;29; THUMBV8-LABEL: smaxi8_zero:30; THUMBV8:       @ %bb.0:31; THUMBV8-NEXT:    sxtb r0, r032; THUMBV8-NEXT:    bic.w r0, r0, r0, asr #3133; THUMBV8-NEXT:    bx lr34  %c = call i8 @llvm.smax.i8(i8 %a, i8 0)35  ret i8 %c36}37 38declare i16 @llvm.smax.i16(i16 %a, i16 %b) readnone39 40define i16 @smaxi16_zero(i16 %a) {41; ARM-LABEL: smaxi16_zero:42; ARM:       @ %bb.0:43; ARM-NEXT:    sxth r0, r044; ARM-NEXT:    bic r0, r0, r0, asr #3145; ARM-NEXT:    bx lr46;47; THUMB-LABEL: smaxi16_zero:48; THUMB:       @ %bb.0:49; THUMB-NEXT:    sxth r0, r050; THUMB-NEXT:    asrs r1, r0, #3151; THUMB-NEXT:    bics r0, r152; THUMB-NEXT:    bx lr53;54; THUMB2-LABEL: smaxi16_zero:55; THUMB2:       @ %bb.0:56; THUMB2-NEXT:    sxth r0, r057; THUMB2-NEXT:    bic.w r0, r0, r0, asr #3158; THUMB2-NEXT:    bx lr59;60; THUMBV8-LABEL: smaxi16_zero:61; THUMBV8:       @ %bb.0:62; THUMBV8-NEXT:    sxth r0, r063; THUMBV8-NEXT:    bic.w r0, r0, r0, asr #3164; THUMBV8-NEXT:    bx lr65  %c = call i16 @llvm.smax.i16(i16 %a, i16 0)66  ret i16 %c67}68 69declare i32 @llvm.smax.i32(i32 %a, i32 %b) readnone70 71define i32 @smaxi32_zero(i32 %a) {72; ARM-LABEL: smaxi32_zero:73; ARM:       @ %bb.0:74; ARM-NEXT:    bic r0, r0, r0, asr #3175; ARM-NEXT:    bx lr76;77; THUMB-LABEL: smaxi32_zero:78; THUMB:       @ %bb.0:79; THUMB-NEXT:    asrs r1, r0, #3180; THUMB-NEXT:    bics r0, r181; THUMB-NEXT:    bx lr82;83; THUMB2-LABEL: smaxi32_zero:84; THUMB2:       @ %bb.0:85; THUMB2-NEXT:    bic.w r0, r0, r0, asr #3186; THUMB2-NEXT:    bx lr87;88; THUMBV8-LABEL: smaxi32_zero:89; THUMBV8:       @ %bb.0:90; THUMBV8-NEXT:    bic.w r0, r0, r0, asr #3191; THUMBV8-NEXT:    bx lr92  %c = call i32 @llvm.smax.i32(i32 %a, i32 0)93  ret i32 %c94}95 96; SMIN97 98declare i8 @llvm.smin.i8(i8 %a, i8 %b) readnone99 100define i8 @smini8_zero(i8 %a) {101; ARM-LABEL: smini8_zero:102; ARM:       @ %bb.0:103; ARM-NEXT:    sxtb r0, r0104; ARM-NEXT:    and r0, r0, r0, asr #31105; ARM-NEXT:    bx lr106;107; THUMB-LABEL: smini8_zero:108; THUMB:       @ %bb.0:109; THUMB-NEXT:    sxtb r1, r0110; THUMB-NEXT:    asrs r0, r1, #31111; THUMB-NEXT:    ands r0, r1112; THUMB-NEXT:    bx lr113;114; THUMB2-LABEL: smini8_zero:115; THUMB2:       @ %bb.0:116; THUMB2-NEXT:    sxtb r0, r0117; THUMB2-NEXT:    and.w r0, r0, r0, asr #31118; THUMB2-NEXT:    bx lr119;120; THUMBV8-LABEL: smini8_zero:121; THUMBV8:       @ %bb.0:122; THUMBV8-NEXT:    sxtb r0, r0123; THUMBV8-NEXT:    and.w r0, r0, r0, asr #31124; THUMBV8-NEXT:    bx lr125  %c = call i8 @llvm.smin.i8(i8 %a, i8 0)126  ret i8 %c127}128 129declare i16 @llvm.smin.i16(i16 %a, i16 %b) readnone130 131define i16 @smini16_zero(i16 %a) {132; ARM-LABEL: smini16_zero:133; ARM:       @ %bb.0:134; ARM-NEXT:    sxth r0, r0135; ARM-NEXT:    and r0, r0, r0, asr #31136; ARM-NEXT:    bx lr137;138; THUMB-LABEL: smini16_zero:139; THUMB:       @ %bb.0:140; THUMB-NEXT:    sxth r1, r0141; THUMB-NEXT:    asrs r0, r1, #31142; THUMB-NEXT:    ands r0, r1143; THUMB-NEXT:    bx lr144;145; THUMB2-LABEL: smini16_zero:146; THUMB2:       @ %bb.0:147; THUMB2-NEXT:    sxth r0, r0148; THUMB2-NEXT:    and.w r0, r0, r0, asr #31149; THUMB2-NEXT:    bx lr150;151; THUMBV8-LABEL: smini16_zero:152; THUMBV8:       @ %bb.0:153; THUMBV8-NEXT:    sxth r0, r0154; THUMBV8-NEXT:    and.w r0, r0, r0, asr #31155; THUMBV8-NEXT:    bx lr156  %c = call i16 @llvm.smin.i16(i16 %a, i16 0)157  ret i16 %c158}159 160declare i32 @llvm.smin.i32(i32 %a, i32 %b) readnone161 162define i32 @smini32_zero(i32 %a) {163; ARM-LABEL: smini32_zero:164; ARM:       @ %bb.0:165; ARM-NEXT:    and r0, r0, r0, asr #31166; ARM-NEXT:    bx lr167;168; THUMB-LABEL: smini32_zero:169; THUMB:       @ %bb.0:170; THUMB-NEXT:    asrs r1, r0, #31171; THUMB-NEXT:    ands r0, r1172; THUMB-NEXT:    bx lr173;174; THUMB2-LABEL: smini32_zero:175; THUMB2:       @ %bb.0:176; THUMB2-NEXT:    and.w r0, r0, r0, asr #31177; THUMB2-NEXT:    bx lr178;179; THUMBV8-LABEL: smini32_zero:180; THUMBV8:       @ %bb.0:181; THUMBV8-NEXT:    and.w r0, r0, r0, asr #31182; THUMBV8-NEXT:    bx lr183  %c = call i32 @llvm.smin.i32(i32 %a, i32 0)184  ret i32 %c185}186