[ARM] Better OR's for MVE compares
[llvm-core.git] / test / Transforms / SimplifyCFG / inline-asm-sink.ll
blobda281d6c4a7d29b5ca2a6a7533c1edfe2e155cda
1 ; RUN: opt < %s -mem2reg -simplifycfg -S | FileCheck -enable-var-scope %s
3 define i32 @test(i32 %x) {
4 ; CHECK-LABEL: @test
5 entry:
6   %y = alloca i32, align 4
7   %tobool = icmp ne i32 %x, 0
8   br i1 %tobool, label %if.then, label %if.else
10 if.then:
11 ; CHECK: if.then:
12 ; CHECK: [[ASM1:%.*]] = call i32 asm "mov $0, #1", "=r"()
13   %tmp1 = call i32 asm "mov $0, #1", "=r"() nounwind readnone
14   store i32 %tmp1, i32* %y, align 4
15   br label %if.end
17 if.else:
18 ; CHECK: if.else:
19 ; CHECK: [[ASM2:%.*]] = call i32 asm "mov $0, #2", "=r"()
20   %tmp2 = call i32 asm "mov $0, #2", "=r"() nounwind readnone
21   store i32 %tmp2, i32* %y, align 4
22   br label %if.end
24 if.end:
25 ; CHECK: if.end:
26 ; CHECK: {{%.*}} = phi i32 [ [[ASM1]], %if.then ], [ [[ASM2]], %if.else ]
27   %tmp3 = load i32, i32* %y, align 4
28   ret i32 %tmp3