Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -march=x86 | not grep btl
      2 
      3 ; This tests some cases where BT must not be generated.  See also bt.ll.
      4 ; Fixes 20040709-[12].c in gcc testsuite.
      5 
      6 define void @test2(i32 %x, i32 %n) nounwind {
      7 entry:
      8         %tmp1 = and i32 %x, 1
      9         %tmp2 = urem i32 %tmp1, 15
     10 	%tmp3 = and i32 %tmp2, 1		; <i32> [#uses=1]
     11 	%tmp4 = icmp eq i32 %tmp3, %tmp2	; <i1> [#uses=1]
     12 	br i1 %tmp4, label %bb, label %UnifiedReturnBlock
     13 
     14 bb:		; preds = %entry
     15 	call void @foo()
     16 	ret void
     17 
     18 UnifiedReturnBlock:		; preds = %entry
     19 	ret void
     20 }
     21 
     22 define void @test3(i32 %x, i32 %n) nounwind {
     23 entry:
     24         %tmp1 = and i32 %x, 1
     25         %tmp2 = urem i32 %tmp1, 15
     26 	%tmp3 = and i32 %tmp2, 1		; <i32> [#uses=1]
     27 	%tmp4 = icmp eq i32 %tmp2, %tmp3	; <i1> [#uses=1]
     28 	br i1 %tmp4, label %bb, label %UnifiedReturnBlock
     29 
     30 bb:		; preds = %entry
     31 	call void @foo()
     32 	ret void
     33 
     34 UnifiedReturnBlock:		; preds = %entry
     35 	ret void
     36 }
     37 
     38 define void @test4(i32 %x, i32 %n) nounwind {
     39 entry:
     40         %tmp1 = and i32 %x, 1
     41         %tmp2 = urem i32 %tmp1, 15
     42 	%tmp3 = and i32 %tmp2, 1		; <i32> [#uses=1]
     43 	%tmp4 = icmp ne i32 %tmp2, %tmp3	; <i1> [#uses=1]
     44 	br i1 %tmp4, label %bb, label %UnifiedReturnBlock
     45 
     46 bb:		; preds = %entry
     47 	call void @foo()
     48 	ret void
     49 
     50 UnifiedReturnBlock:		; preds = %entry
     51 	ret void
     52 }
     53 
     54 define void @test5(i32 %x, i32 %n) nounwind {
     55 entry:
     56         %tmp1 = and i32 %x, 1
     57         %tmp2 = urem i32 %tmp1, 15
     58 	%tmp3 = and i32 %tmp2, 1		; <i32> [#uses=1]
     59 	%tmp4 = icmp ne i32 %tmp2, %tmp3	; <i1> [#uses=1]
     60 	br i1 %tmp4, label %bb, label %UnifiedReturnBlock
     61 
     62 bb:		; preds = %entry
     63 	call void @foo()
     64 	ret void
     65 
     66 UnifiedReturnBlock:		; preds = %entry
     67 	ret void
     68 }
     69 
     70 declare void @foo()
     71