brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · b5c3399 Raw
69 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; Test that 'and' mask is sunk to the cmp use block only if it is masking a single bit3; RUN: llc -march=hexagon --verify-machineinstrs < %s | FileCheck %s4 5@A = global i32 zeroinitializer6 7define i32 @and_sink1(i32 %a) {8; CHECK-LABEL: and_sink1:9; CHECK:         .cfi_startproc10; CHECK-NEXT:  // %bb.0:11; CHECK-NEXT:    {12; CHECK-NEXT:     p0 = !tstbit(r0,#11)13; CHECK-NEXT:     r0 = ##A14; CHECK-NEXT:    }15; CHECK-NEXT:    .p2align 416; CHECK-NEXT:  .LBB0_1: // %bb017; CHECK-NEXT:    // =>This Inner Loop Header: Depth=118; CHECK-NEXT:    {19; CHECK-NEXT:     if (p0) jump:nt .LBB0_120; CHECK-NEXT:     memw(r0+#0) = #021; CHECK-NEXT:    }22; CHECK-NEXT:  // %bb.2: // %bb223; CHECK-NEXT:    {24; CHECK-NEXT:     r0 = #025; CHECK-NEXT:     jumpr r3126; CHECK-NEXT:    }27  %and = and i32 %a, 204828  br label %bb029bb0:30  %cmp = icmp eq i32 %and, 031  store i32 0, i32* @A32  br i1 %cmp, label %bb0, label %bb233bb2:34  ret i32 035}36 37define i32 @and_sink2(i32 %a) {38; CHECK-LABEL: and_sink2:39; CHECK:         .cfi_startproc40; CHECK-NEXT:  // %bb.0:41; CHECK-NEXT:    {42; CHECK-NEXT:     r1 = and(r0,##2049)43; CHECK-NEXT:     r0 = ##A44; CHECK-NEXT:    }45; CHECK-NEXT:    {46; CHECK-NEXT:     p0 = cmp.eq(r1,#0)47; CHECK-NEXT:    }48; CHECK-NEXT:    .p2align 449; CHECK-NEXT:  .LBB1_1: // %bb050; CHECK-NEXT:    // =>This Inner Loop Header: Depth=151; CHECK-NEXT:    {52; CHECK-NEXT:     if (p0) jump:nt .LBB1_153; CHECK-NEXT:     memw(r0+#0) = #054; CHECK-NEXT:    }55; CHECK-NEXT:  // %bb.2: // %bb256; CHECK-NEXT:    {57; CHECK-NEXT:     r0 = #058; CHECK-NEXT:     jumpr r3159; CHECK-NEXT:    }60  %and = and i32 %a, 204961  br label %bb062bb0:63  %cmp = icmp eq i32 %and, 064  store i32 0, i32* @A65  br i1 %cmp, label %bb0, label %bb266bb2:67  ret i32 068}69