brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 741b2cf Raw
116 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=thumbv7-linux-gnueabi -mcpu=cortex-m0 -verify-machineinstrs | FileCheck --check-prefix CHECK-T1 %s3; RUN: llc < %s -mtriple=thumbv7-linux-gnueabi -mcpu=cortex-m3 -verify-machineinstrs | FileCheck --check-prefix CHECK-T2 %s4 5define i32 @i(i32 %a) {6; CHECK-T1-LABEL: i:7; CHECK-T1:       @ %bb.0: @ %entry8; CHECK-T1-NEXT:    movs r1, #2559; CHECK-T1-NEXT:    adds r1, #2010; CHECK-T1-NEXT:    bics r0, r111; CHECK-T1-NEXT:    bx lr12;13; CHECK-T2-LABEL: i:14; CHECK-T2:       @ %bb.0: @ %entry15; CHECK-T2-NEXT:    movw r1, #27516; CHECK-T2-NEXT:    bics r0, r117; CHECK-T2-NEXT:    bx lr18entry:19  %and = and i32 %a, -27620  ret i32 %and21}22 23define i32 @j(i32 %a) {24; CHECK-T1-LABEL: j:25; CHECK-T1:       @ %bb.0: @ %entry26; CHECK-T1-NEXT:    movs r1, #12827; CHECK-T1-NEXT:    bics r0, r128; CHECK-T1-NEXT:    bx lr29;30; CHECK-T2-LABEL: j:31; CHECK-T2:       @ %bb.0: @ %entry32; CHECK-T2-NEXT:    bic r0, r0, #12833; CHECK-T2-NEXT:    bx lr34entry:35  %and = and i32 %a, -12936  ret i32 %and37}38 39define void @truncated(i16 %a, ptr %p) {40; CHECK-T1-LABEL: truncated:41; CHECK-T1:       @ %bb.0:42; CHECK-T1-NEXT:    movs r2, #12843; CHECK-T1-NEXT:    bics r0, r244; CHECK-T1-NEXT:    strh r0, [r1]45; CHECK-T1-NEXT:    bx lr46;47; CHECK-T2-LABEL: truncated:48; CHECK-T2:       @ %bb.0:49; CHECK-T2-NEXT:    bic r0, r0, #12850; CHECK-T2-NEXT:    strh r0, [r1]51; CHECK-T2-NEXT:    bx lr52  %and = and i16 %a, -12953  store i16 %and, ptr %p54  ret void55}56 57define void @truncated_neg2(i16 %a, ptr %p) {58; CHECK-T1-LABEL: truncated_neg2:59; CHECK-T1:       @ %bb.0:60; CHECK-T1-NEXT:    movs r2, #161; CHECK-T1-NEXT:    bics r0, r262; CHECK-T1-NEXT:    strh r0, [r1]63; CHECK-T1-NEXT:    bx lr64;65; CHECK-T2-LABEL: truncated_neg2:66; CHECK-T2:       @ %bb.0:67; CHECK-T2-NEXT:    bic r0, r0, #168; CHECK-T2-NEXT:    strh r0, [r1]69; CHECK-T2-NEXT:    bx lr70  %and = and i16 %a, -271  store i16 %and, ptr %p72  ret void73}74 75define void @truncated_neg256(i16 %a, ptr %p) {76; CHECK-T1-LABEL: truncated_neg256:77; CHECK-T1:       @ %bb.0:78; CHECK-T1-NEXT:    movs r2, #25579; CHECK-T1-NEXT:    bics r0, r280; CHECK-T1-NEXT:    strh r0, [r1]81; CHECK-T1-NEXT:    bx lr82;83; CHECK-T2-LABEL: truncated_neg256:84; CHECK-T2:       @ %bb.0:85; CHECK-T2-NEXT:    bic r0, r0, #25586; CHECK-T2-NEXT:    strh r0, [r1]87; CHECK-T2-NEXT:    bx lr88  %and = and i16 %a, -25689  store i16 %and, ptr %p90  ret void91}92 93; FIXME: Thumb2 supports "bic r0, r0, #510"94define void @truncated_neg511(i16 %a, ptr %p) {95; CHECK-T1-LABEL: truncated_neg511:96; CHECK-T1:       @ %bb.0:97; CHECK-T1-NEXT:    ldr r2, .LCPI5_098; CHECK-T1-NEXT:    ands r2, r099; CHECK-T1-NEXT:    strh r2, [r1]100; CHECK-T1-NEXT:    bx lr101; CHECK-T1-NEXT:    .p2align 2102; CHECK-T1-NEXT:  @ %bb.1:103; CHECK-T1-NEXT:  .LCPI5_0:104; CHECK-T1-NEXT:    .long 65025 @ 0xfe01105;106; CHECK-T2-LABEL: truncated_neg511:107; CHECK-T2:       @ %bb.0:108; CHECK-T2-NEXT:    movw r2, #65025109; CHECK-T2-NEXT:    ands r0, r2110; CHECK-T2-NEXT:    strh r0, [r1]111; CHECK-T2-NEXT:    bx lr112  %and = and i16 %a, -511113  store i16 %and, ptr %p114  ret void115}116