xref: /llvm-project/llvm/test/CodeGen/ARM/bfi-chain-cse-crash.ll (revision bed1c7f061aa12417aa081e334afdba45767b938)
1f9b3840cSAmara Emerson; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2f9b3840cSAmara Emerson; RUN: llc < %s -mtriple=thumbv7s | FileCheck %s
3f9b3840cSAmara Emersontarget datalayout = "e-m:o-p:32:32-f64:32:64-v64:32:64-v128:32:128-a:0:32-n32-S32"
4f9b3840cSAmara Emersontarget triple = "thumbv7s-apple-ios3.1.3"
5f9b3840cSAmara Emerson
6*bed1c7f0SNikita Popovdefine void @bfi_chain_cse_crash(ptr %0, ptr %ptr) {
7f9b3840cSAmara Emerson; CHECK-LABEL: bfi_chain_cse_crash:
8f9b3840cSAmara Emerson; CHECK:       @ %bb.0: @ %entry
9f9b3840cSAmara Emerson; CHECK-NEXT:    ldrb r2, [r0]
10f9b3840cSAmara Emerson; CHECK-NEXT:    and r3, r2, #1
11f9b3840cSAmara Emerson; CHECK-NEXT:    lsr.w r12, r2, #3
12f9b3840cSAmara Emerson; CHECK-NEXT:    bfi r3, r12, #3, #1
13f9b3840cSAmara Emerson; CHECK-NEXT:    strb r3, [r0]
14f9b3840cSAmara Emerson; CHECK-NEXT:    and r0, r2, #4
15f9b3840cSAmara Emerson; CHECK-NEXT:    bfi r0, r12, #3, #1
16f9b3840cSAmara Emerson; CHECK-NEXT:    strb r0, [r1]
17f9b3840cSAmara Emerson; CHECK-NEXT:    bx lr
18f9b3840cSAmara Emersonentry:
19*bed1c7f0SNikita Popov  %1 = load i8, ptr %0, align 1
20f9b3840cSAmara Emerson  %2 = and i8 %1, 1
21f9b3840cSAmara Emerson  %3 = select i1 false, i8 %2, i8 0
22f9b3840cSAmara Emerson  %4 = and i8 %1, 4
23f9b3840cSAmara Emerson  %5 = icmp eq i8 %4, 0
24f9b3840cSAmara Emerson  %6 = zext i8 %3 to i32
25f9b3840cSAmara Emerson  %7 = or i32 %6, 4
26f9b3840cSAmara Emerson  %8 = trunc i32 %7 to i8
27f9b3840cSAmara Emerson  %9 = select i1 %5, i8 %3, i8 %8
28f9b3840cSAmara Emerson  %10 = and i8 %1, 8
29f9b3840cSAmara Emerson  %11 = icmp eq i8 %10, 0
30f9b3840cSAmara Emerson  %12 = zext i8 %2 to i32
31f9b3840cSAmara Emerson  %13 = or i32 %12, 8
32f9b3840cSAmara Emerson  %14 = trunc i32 %13 to i8
33f9b3840cSAmara Emerson  %15 = zext i8 %9 to i32
34f9b3840cSAmara Emerson  %16 = or i32 %15, 8
35f9b3840cSAmara Emerson  %17 = trunc i32 %16 to i8
36f9b3840cSAmara Emerson  %18 = select i1 %11, i8 %2, i8 %14
37f9b3840cSAmara Emerson  %19 = select i1 %11, i8 %9, i8 %17
38*bed1c7f0SNikita Popov  store i8 %18, ptr %0, align 1
39*bed1c7f0SNikita Popov  store i8 %19, ptr %ptr, align 1
40f9b3840cSAmara Emerson  ret void
41f9b3840cSAmara Emerson}
42