Fix part 1 of pr4682. PICADD is a 16-bit instruction even in thumb2 mode.
[llvm/avr.git] / test / CodeGen / ARM / bx_fold.ll
blob437b3189141dc096271b155af0dc9c6f3c5b0628
1 ; RUN: llvm-as < %s | llc -march=arm
2 ; RUN: llvm-as < %s | llc -march=arm | not grep bx
4 define void @test(i32 %Ptr, i8* %L) {
5 entry:
6         br label %bb1
8 bb:             ; preds = %bb1
9         %gep.upgrd.1 = zext i32 %indvar to i64          ; <i64> [#uses=1]
10         %tmp7 = getelementptr i8* %L, i64 %gep.upgrd.1          ; <i8*> [#uses=1]
11         store i8 0, i8* %tmp7
12         %indvar.next = add i32 %indvar, 1               ; <i32> [#uses=1]
13         br label %bb1
15 bb1:            ; preds = %bb, %entry
16         %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb ]          ; <i32> [#uses=3]
17         %i.0 = bitcast i32 %indvar to i32               ; <i32> [#uses=2]
18         %tmp = tail call i32 (...)* @bar( )             ; <i32> [#uses=1]
19         %tmp2 = add i32 %i.0, %tmp              ; <i32> [#uses=1]
20         %Ptr_addr.0 = sub i32 %Ptr, %tmp2               ; <i32> [#uses=0]
21         %tmp12 = icmp eq i32 %i.0, %Ptr         ; <i1> [#uses=1]
22         %tmp12.not = xor i1 %tmp12, true                ; <i1> [#uses=1]
23         %bothcond = and i1 %tmp12.not, false            ; <i1> [#uses=1]
24         br i1 %bothcond, label %bb, label %bb18
26 bb18:           ; preds = %bb1
27         ret void
30 declare i32 @bar(...)