brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.6 KiB · a365635 Raw
223 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=thumbv6m-eabi -asm-verbose=false %s -o - | FileCheck %s3 4define void @test8(ptr %a) {5; CHECK-LABEL: test8:6; CHECK:         ldrb r1, [r0]7; CHECK-NEXT:    mvns r1, r18; CHECK-NEXT:    strb r1, [r0]9; CHECK-NEXT:    bx lr10  %x = load i8, ptr %a11  %xn = xor i8 %x, -112  store i8 %xn, ptr %a13  ret void14}15 16define void @test8_2(ptr %a, ptr %b) {17; CHECK-LABEL: test8_2:18; CHECK:         ldrb r2, [r1]19; CHECK-NEXT:    ldrb r3, [r0]20; CHECK-NEXT:    mvns r3, r321; CHECK-NEXT:    strb r3, [r0]22; CHECK-NEXT:    mvns r0, r223; CHECK-NEXT:    strb r0, [r1]24; CHECK-NEXT:    bx lr25  %x = load i8, ptr %a26  %y = load i8, ptr %b27  %xn = xor i8 %x, -128  %yn = xor i8 %y, -129  store i8 %xn, ptr %a30  store i8 %yn, ptr %b31  ret void32}33 34define void @loop8(ptr %a) {35; CHECK-LABEL: loop8:36; CHECK:         movs r1, #037; CHECK-NEXT:  .LBB2_1:38; CHECK-NEXT:    ldrb r2, [r0, r1]39; CHECK-NEXT:    mvns r2, r240; CHECK-NEXT:    strb r2, [r0, r1]41; CHECK-NEXT:    adds r1, r1, #142; CHECK-NEXT:    cmp r1, #1043; CHECK-NEXT:    bne .LBB2_144; CHECK-NEXT:    bx lr45entry:46  br label %for.body47 48for.body:49  %i = phi i32 [ 0, %entry ], [ %inc, %for.body ]50  %arrayidx = getelementptr inbounds i8, ptr %a, i32 %i51  %x = load i8, ptr %arrayidx52  %xn = xor i8 %x, -153  store i8 %xn, ptr %arrayidx54  %inc = add nuw nsw i32 %i, 155  %exitcond = icmp eq i32 %inc, 1056  br i1 %exitcond, label %for.cond.cleanup, label %for.body57 58for.cond.cleanup:59  ret void60}61 62define void @loop8_2(ptr %a, ptr %b) {63; CHECK-LABEL: loop8_2:64; CHECK:         .save {r4, lr}65; CHECK-NEXT:    push {r4, lr}66; CHECK-NEXT:    movs r2, #067; CHECK-NEXT:  .LBB3_1:68; CHECK-NEXT:    ldrb r3, [r1, r2]69; CHECK-NEXT:    ldrb r4, [r0, r2]70; CHECK-NEXT:    mvns r4, r471; CHECK-NEXT:    strb r4, [r0, r2]72; CHECK-NEXT:    mvns r3, r373; CHECK-NEXT:    strb r3, [r1, r2]74; CHECK-NEXT:    adds r2, r2, #175; CHECK-NEXT:    cmp r2, #1076; CHECK-NEXT:    bne .LBB3_177; CHECK-NEXT:    pop {r4, pc}78entry:79  br label %for.body80 81for.body:82  %i = phi i32 [ 0, %entry ], [ %inc, %for.body ]83  %arrayidx = getelementptr inbounds i8, ptr %a, i32 %i84  %arrayidx2 = getelementptr inbounds i8, ptr %b, i32 %i85  %x = load i8, ptr %arrayidx86  %y = load i8, ptr %arrayidx287  %xn = xor i8 %x, -188  %yn = xor i8 %y, -189  store i8 %xn, ptr %arrayidx90  store i8 %yn, ptr %arrayidx291  %inc = add nuw nsw i32 %i, 192  %exitcond = icmp eq i32 %inc, 1093  br i1 %exitcond, label %for.cond.cleanup, label %for.body94 95for.cond.cleanup:96  ret void97}98 99define void @test32(ptr %a) {100; CHECK-LABEL: test32:101; CHECK:         ldr r1, [r0]102; CHECK-NEXT:    mvns r1, r1103; CHECK-NEXT:    str r1, [r0]104; CHECK-NEXT:    bx lr105  %x = load i32, ptr %a106  %xn = xor i32 %x, -1107  store i32 %xn, ptr %a108  ret void109}110 111define void @test32_2(ptr %a, ptr %b) {112; CHECK-LABEL: test32_2:113; CHECK:         ldr r2, [r1]114; CHECK-NEXT:    ldr r3, [r0]115; CHECK-NEXT:    mvns r3, r3116; CHECK-NEXT:    str r3, [r0]117; CHECK-NEXT:    mvns r0, r2118; CHECK-NEXT:    str r0, [r1]119; CHECK-NEXT:    bx lr120  %x = load i32, ptr %a121  %y = load i32, ptr %b122  %xn = xor i32 %x, -1123  %yn = xor i32 %y, -1124  store i32 %xn, ptr %a125  store i32 %yn, ptr %b126  ret void127}128 129define void @loop32(ptr %a) {130; CHECK-LABEL: loop32:131; CHECK:         movs r1, #0132; CHECK-NEXT:  .LBB6_1:133; CHECK-NEXT:    ldr r2, [r0, r1]134; CHECK-NEXT:    mvns r2, r2135; CHECK-NEXT:    str r2, [r0, r1]136; CHECK-NEXT:    adds r1, r1, #4137; CHECK-NEXT:    cmp r1, #40138; CHECK-NEXT:    bne .LBB6_1139; CHECK-NEXT:    bx lr140entry:141  br label %for.body142 143for.body:144  %i = phi i32 [ 0, %entry ], [ %inc, %for.body ]145  %arrayidx = getelementptr inbounds i32, ptr %a, i32 %i146  %x = load i32, ptr %arrayidx147  %xn = xor i32 %x, -1148  store i32 %xn, ptr %arrayidx149  %inc = add nuw nsw i32 %i, 1150  %exitcond = icmp eq i32 %inc, 10151  br i1 %exitcond, label %for.cond.cleanup, label %for.body152 153for.cond.cleanup:154  ret void155}156 157define void @loop32_2(ptr %a, ptr %b) {158; CHECK-LABEL: loop32_2:159; CHECK:         .save {r4, lr}160; CHECK-NEXT:    push {r4, lr}161; CHECK-NEXT:    movs r2, #0162; CHECK-NEXT:  .LBB7_1:163; CHECK-NEXT:    ldr r3, [r1, r2]164; CHECK-NEXT:    ldr r4, [r0, r2]165; CHECK-NEXT:    mvns r4, r4166; CHECK-NEXT:    str r4, [r0, r2]167; CHECK-NEXT:    mvns r3, r3168; CHECK-NEXT:    str r3, [r1, r2]169; CHECK-NEXT:    adds r2, r2, #4170; CHECK-NEXT:    cmp r2, #40171; CHECK-NEXT:    bne .LBB7_1172; CHECK-NEXT:    pop {r4, pc}173entry:174  br label %for.body175 176for.body:177  %i = phi i32 [ 0, %entry ], [ %inc, %for.body ]178  %arrayidx = getelementptr inbounds i32, ptr %a, i32 %i179  %arrayidx2 = getelementptr inbounds i32, ptr %b, i32 %i180  %x = load i32, ptr %arrayidx181  %y = load i32, ptr %arrayidx2182  %xn = xor i32 %x, -1183  %yn = xor i32 %y, -1184  store i32 %xn, ptr %arrayidx185  store i32 %yn, ptr %arrayidx2186  %inc = add nuw nsw i32 %i, 1187  %exitcond = icmp eq i32 %inc, 10188  br i1 %exitcond, label %for.cond.cleanup, label %for.body189 190for.cond.cleanup:191  ret void192}193 194 195define void @test128(ptr %a) {196; CHECK-LABEL: test128:197; CHECK:         ldr r1, [r0, #8]198; CHECK-NEXT:    ldr r2, .LCPI8_0199; CHECK-NEXT:    eors r2, r1200; CHECK-NEXT:    str r2, [r0, #8]201; CHECK-NEXT:    ldr r1, [r0]202; CHECK-NEXT:    ldr r2, .LCPI8_1203; CHECK-NEXT:    eors r2, r1204; CHECK-NEXT:    str r2, [r0]205; CHECK-NEXT:    ldr r1, [r0, #4]206; CHECK-NEXT:    ldr r2, .LCPI8_2207; CHECK-NEXT:    eors r2, r1208; CHECK-NEXT:    str r2, [r0, #4]209; CHECK-NEXT:    bx lr210; CHECK-NEXT:    .p2align 2211; CHECK-NEXT:  .LCPI8_0:212; CHECK-NEXT:    .long 6692605213; CHECK-NEXT:  .LCPI8_1:214; CHECK-NEXT:    .long 2080661269215; CHECK-NEXT:  .LCPI8_2:216; CHECK-NEXT:    .long 4075008415217  %x = load i128, ptr %a218  %xn = xor i128 %x, 123456789123456789123456789219  store i128 %xn, ptr %a220  ret void221}222 223