Home | History | Annotate | Download | only in Mips
      1 ; RUN: llc -mtriple=mipsel-linux-gnu -march=mipsel -mcpu=mips16 -soft-float -mips16-hard-float -relocation-model=static     < %s | FileCheck %s -check-prefix=ci
      2 
      3 @i = global i32 0, align 4
      4 @j = common global i32 0, align 4
      5 @k = common global i32 0, align 4
      6 
      7 ; Function Attrs: nounwind optsize
      8 define i32 @x0() #0 {
      9 entry:
     10   %0 = load i32* @i, align 4, !tbaa !1
     11   %cmp = icmp eq i32 %0, 0
     12   br i1 %cmp, label %if.then, label %if.else
     13 
     14 if.then:                                          ; preds = %entry
     15   tail call void asm sideeffect ".space 1000", ""() #1, !srcloc !5
     16   br label %if.end
     17 
     18 if.else:                                          ; preds = %entry
     19   tail call void asm sideeffect ".space 1004", ""() #1, !srcloc !6
     20   br label %if.end
     21 
     22 if.end:                                           ; preds = %if.else, %if.then
     23   %storemerge = phi i32 [ 1, %if.else ], [ 0, %if.then ]
     24   store i32 %storemerge, i32* @i, align 4, !tbaa !1
     25   ret i32 0
     26 }
     27 
     28 ; ci:	.ent	x0
     29 ; ci: 	beqz	$3, $BB0_2
     30 ; ci: $BB0_2:
     31 ; ci:	.end	x0
     32 
     33 ; Function Attrs: nounwind optsize
     34 define i32 @x1() #0 {
     35 entry:
     36   %0 = load i32* @i, align 4, !tbaa !1
     37   %cmp = icmp eq i32 %0, 0
     38   br i1 %cmp, label %if.then, label %if.else
     39 
     40 if.then:                                          ; preds = %entry
     41   tail call void asm sideeffect ".space 1000000", ""() #1, !srcloc !7
     42   br label %if.end
     43 
     44 if.else:                                          ; preds = %entry
     45   tail call void asm sideeffect ".space 1000004", ""() #1, !srcloc !8
     46   br label %if.end
     47 
     48 if.end:                                           ; preds = %if.else, %if.then
     49   %storemerge = phi i32 [ 1, %if.else ], [ 0, %if.then ]
     50   store i32 %storemerge, i32* @i, align 4, !tbaa !1
     51   ret i32 0
     52 }
     53 
     54 ; ci:	.ent	x1
     55 ; ci:	bnez	$3, $BB1_1  # 16 bit inst
     56 ; ci:	jal	$BB1_2	# branch
     57 ; ci:	nop
     58 ; ci: $BB1_1:
     59 ; ci:	.end	x1
     60 
     61 ; Function Attrs: nounwind optsize
     62 define i32 @y0() #0 {
     63 entry:
     64   %0 = load i32* @i, align 4, !tbaa !1
     65   %cmp = icmp eq i32 %0, 0
     66   br i1 %cmp, label %if.then, label %if.else
     67 
     68 if.then:                                          ; preds = %entry
     69   store i32 10, i32* @j, align 4, !tbaa !1
     70   tail call void asm sideeffect ".space 1000", ""() #1, !srcloc !9
     71   br label %if.end
     72 
     73 if.else:                                          ; preds = %entry
     74   store i32 55, i32* @j, align 4, !tbaa !1
     75   tail call void asm sideeffect ".space 1004", ""() #1, !srcloc !10
     76   br label %if.end
     77 
     78 if.end:                                           ; preds = %if.else, %if.then
     79   ret i32 0
     80 }
     81 
     82 ; ci:	.ent	y0
     83 ; ci:	beqz	$2, $BB2_2
     84 ; ci:	.end	y0
     85 
     86 ; Function Attrs: nounwind optsize
     87 define i32 @y1() #0 {
     88 entry:
     89   %0 = load i32* @i, align 4, !tbaa !1
     90   %cmp = icmp eq i32 %0, 0
     91   br i1 %cmp, label %if.then, label %if.else
     92 
     93 if.then:                                          ; preds = %entry
     94   store i32 10, i32* @j, align 4, !tbaa !1
     95   tail call void asm sideeffect ".space 1000000", ""() #1, !srcloc !11
     96   br label %if.end
     97 
     98 if.else:                                          ; preds = %entry
     99   store i32 55, i32* @j, align 4, !tbaa !1
    100   tail call void asm sideeffect ".space 1000004", ""() #1, !srcloc !12
    101   br label %if.end
    102 
    103 if.end:                                           ; preds = %if.else, %if.then
    104   ret i32 0
    105 }
    106 
    107 ; ci:	.ent	y1
    108 ; ci:	bnez	$2, $BB3_1  # 16 bit inst
    109 ; ci:	jal	$BB3_2	# branch
    110 ; ci:	nop
    111 ; ci: $BB3_1:
    112 ; ci:	.end	y1
    113 
    114 ; Function Attrs: nounwind optsize
    115 define void @z0() #0 {
    116 entry:
    117   %0 = load i32* @i, align 4, !tbaa !1
    118   %1 = load i32* @j, align 4, !tbaa !1
    119   %cmp = icmp eq i32 %0, %1
    120   br i1 %cmp, label %if.then, label %if.else
    121 
    122 if.then:                                          ; preds = %entry
    123   store i32 1, i32* @k, align 4, !tbaa !1
    124   tail call void asm sideeffect ".space 10000", ""() #1, !srcloc !13
    125   br label %if.end
    126 
    127 if.else:                                          ; preds = %entry
    128   tail call void asm sideeffect ".space 10004", ""() #1, !srcloc !14
    129   store i32 2, i32* @k, align 4, !tbaa !1
    130   br label %if.end
    131 
    132 if.end:                                           ; preds = %if.else, %if.then
    133   ret void
    134 }
    135 
    136 ; ci:	.ent	z0
    137 ; ci:	btnez	$BB4_2
    138 ; ci:	.end	z0
    139 
    140 ; Function Attrs: nounwind optsize
    141 define void @z1() #0 {
    142 entry:
    143   %0 = load i32* @i, align 4, !tbaa !1
    144   %1 = load i32* @j, align 4, !tbaa !1
    145   %cmp = icmp eq i32 %0, %1
    146   br i1 %cmp, label %if.then, label %if.else
    147 
    148 if.then:                                          ; preds = %entry
    149   store i32 1, i32* @k, align 4, !tbaa !1
    150   tail call void asm sideeffect ".space 10000000", ""() #1, !srcloc !15
    151   br label %if.end
    152 
    153 if.else:                                          ; preds = %entry
    154   tail call void asm sideeffect ".space 10000004", ""() #1, !srcloc !16
    155   store i32 2, i32* @k, align 4, !tbaa !1
    156   br label %if.end
    157 
    158 if.end:                                           ; preds = %if.else, %if.then
    159   ret void
    160 }
    161 
    162 ; ci:	.ent	z1
    163 ; ci:	bteqz	$BB5_1  # 16 bit inst
    164 ; ci:	jal	$BB5_2	# branch
    165 ; ci:	nop
    166 ; ci: $BB5_1:
    167 ; ci:	.end	z1
    168 
    169 ; Function Attrs: nounwind optsize
    170 define void @z3() #0 {
    171 entry:
    172   %0 = load i32* @i, align 4, !tbaa !1
    173   %1 = load i32* @j, align 4, !tbaa !1
    174   %cmp1 = icmp sgt i32 %0, %1
    175   br i1 %cmp1, label %if.then, label %if.end
    176 
    177 if.then:                                          ; preds = %entry, %if.then
    178   tail call void asm sideeffect ".space 10000", ""() #1, !srcloc !17
    179   %2 = load i32* @i, align 4, !tbaa !1
    180   %3 = load i32* @j, align 4, !tbaa !1
    181   %cmp = icmp sgt i32 %2, %3
    182   br i1 %cmp, label %if.then, label %if.end
    183 
    184 if.end:                                           ; preds = %if.then, %entry
    185   ret void
    186 }
    187 
    188 ; ci:	.ent	z3
    189 ; ci:	bteqz	$BB6_2
    190 ; ci:	.end	z3
    191 
    192 ; Function Attrs: nounwind optsize
    193 define void @z4() #0 {
    194 entry:
    195   %0 = load i32* @i, align 4, !tbaa !1
    196   %1 = load i32* @j, align 4, !tbaa !1
    197   %cmp1 = icmp sgt i32 %0, %1
    198   br i1 %cmp1, label %if.then, label %if.end
    199 
    200 if.then:                                          ; preds = %entry, %if.then
    201   tail call void asm sideeffect ".space 10000000", ""() #1, !srcloc !18
    202   %2 = load i32* @i, align 4, !tbaa !1
    203   %3 = load i32* @j, align 4, !tbaa !1
    204   %cmp = icmp sgt i32 %2, %3
    205   br i1 %cmp, label %if.then, label %if.end
    206 
    207 if.end:                                           ; preds = %if.then, %entry
    208   ret void
    209 }
    210 
    211 ; ci:	.ent	z4
    212 ; ci:	btnez	$BB7_1  # 16 bit inst
    213 ; ci:	jal	$BB7_2	# branch
    214 ; ci:	nop
    215 ; ci:	.align	2
    216 ; ci: $BB7_1:
    217 ; ci:	.end	z4
    218 
    219 attributes #0 = { nounwind optsize "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
    220 attributes #1 = { nounwind }
    221 
    222 
    223 !1 = metadata !{metadata !2, metadata !2, i64 0}
    224 !2 = metadata !{metadata !"int", metadata !3, i64 0}
    225 !3 = metadata !{metadata !"omnipotent char", metadata !4, i64 0}
    226 !4 = metadata !{metadata !"Simple C/C++ TBAA"}
    227 !5 = metadata !{i32 57}
    228 !6 = metadata !{i32 107}
    229 !7 = metadata !{i32 188}
    230 !8 = metadata !{i32 241}
    231 !9 = metadata !{i32 338}
    232 !10 = metadata !{i32 391}
    233 !11 = metadata !{i32 477}
    234 !12 = metadata !{i32 533}
    235 !13 = metadata !{i32 621}
    236 !14 = metadata !{i32 663}
    237 !15 = metadata !{i32 747}
    238 !16 = metadata !{i32 792}
    239 !17 = metadata !{i32 867}
    240 !18 = metadata !{i32 953}
    241