brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · 543b6c2 Raw
252 lines · plain
1; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=ARM2; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=armv7-linux-gnueabi -verify-machineinstrs | FileCheck %s --check-prefix=ARM3; RUN: llc < %s -O0 -fast-isel-abort=1 -relocation-model=dynamic-no-pic -mtriple=thumbv7-apple-ios -verify-machineinstrs | FileCheck %s --check-prefix=THUMB4 5define void @t1a(float %a) uwtable ssp {6entry:7; ARM: t1a8; THUMB: t1a9  %cmp = fcmp oeq float %a, 0.000000e+0010; ARM: vcmp.f32 s{{[0-9]+}}, #011; THUMB: vcmp.f32 s{{[0-9]+}}, #012  br i1 %cmp, label %if.then, label %if.end13 14if.then:                                          ; preds = %entry15  tail call void @foo()16  br label %if.end17 18if.end:                                           ; preds = %if.then, %entry19  ret void20}21 22declare void @foo()23 24; Shouldn't be able to encode -0.0 imm.25define void @t1b(float %a) uwtable ssp {26entry:27; ARM: t1b28; THUMB: t1b29  %cmp = fcmp oeq float %a, -0.000000e+0030; ARM: vldr31; ARM: vcmp.f32 s{{[0-9]+}}, s{{[0-9]+}}32; THUMB: vldr33; THUMB: vcmp.f32 s{{[0-9]+}}, s{{[0-9]+}}34  br i1 %cmp, label %if.then, label %if.end35 36if.then:                                          ; preds = %entry37  tail call void @foo()38  br label %if.end39 40if.end:                                           ; preds = %if.then, %entry41  ret void42}43 44define void @t2a(double %a) uwtable ssp {45entry:46; ARM: t2a47; THUMB: t2a48  %cmp = fcmp oeq double %a, 0.000000e+0049; ARM: vcmp.f64 d{{[0-9]+}}, #050; THUMB: vcmp.f64 d{{[0-9]+}}, #051  br i1 %cmp, label %if.then, label %if.end52 53if.then:                                          ; preds = %entry54  tail call void @foo()55  br label %if.end56 57if.end:                                           ; preds = %if.then, %entry58  ret void59}60 61; Shouldn't be able to encode -0.0 imm.62define void @t2b(double %a) uwtable ssp {63entry:64; ARM: t2b65; THUMB: t2b66  %cmp = fcmp oeq double %a, -0.000000e+0067; ARM: vldr68; ARM: vcmp.f64 d{{[0-9]+}}, d{{[0-9]+}}69; THUMB: vldr70; THUMB: vcmp.f64 d{{[0-9]+}}, d{{[0-9]+}}71  br i1 %cmp, label %if.then, label %if.end72 73if.then:                                          ; preds = %entry74  tail call void @foo()75  br label %if.end76 77if.end:                                           ; preds = %if.then, %entry78  ret void79}80 81define void @t4(i8 signext %a) uwtable ssp {82entry:83; ARM: t484; THUMB: t485  %cmp = icmp eq i8 %a, -186; ARM: cmn r{{[0-9]}}, #187; THUMB: cmn.w r{{[0-9]}}, #188  br i1 %cmp, label %if.then, label %if.end89 90if.then:                                          ; preds = %entry91  tail call void @foo()92  br label %if.end93 94if.end:                                           ; preds = %if.then, %entry95  ret void96}97 98define void @t5(i8 zeroext %a) uwtable ssp {99entry:100; ARM: t5101; THUMB: t5102  %cmp = icmp eq i8 %a, 1103; ARM: cmp r{{[0-9]}}, #1104; THUMB: cmp r{{[0-9]}}, #1105  br i1 %cmp, label %if.then, label %if.end106 107if.then:                                          ; preds = %entry108  tail call void @foo()109  br label %if.end110 111if.end:                                           ; preds = %if.then, %entry112  ret void113}114 115define void @t6(i16 signext %a) uwtable ssp {116entry:117; ARM: t6118; THUMB: t6119  %cmp = icmp eq i16 %a, -1120; ARM: cmn r{{[0-9]}}, #1121; THUMB: cmn.w r{{[0-9]}}, #1122  br i1 %cmp, label %if.then, label %if.end123 124if.then:                                          ; preds = %entry125  tail call void @foo()126  br label %if.end127 128if.end:                                           ; preds = %if.then, %entry129  ret void130}131 132define void @t7(i16 zeroext %a) uwtable ssp {133entry:134; ARM: t7135; THUMB: t7136  %cmp = icmp eq i16 %a, 1137; ARM: cmp r{{[0-9]}}, #1138; THUMB: cmp r{{[0-9]}}, #1139  br i1 %cmp, label %if.then, label %if.end140 141if.then:                                          ; preds = %entry142  tail call void @foo()143  br label %if.end144 145if.end:                                           ; preds = %if.then, %entry146  ret void147}148 149define void @t8(i32 %a) uwtable ssp {150entry:151; ARM: t8152; THUMB: t8153  %cmp = icmp eq i32 %a, -1154; ARM: cmn r{{[0-9]}}, #1155; THUMB: cmn.w r{{[0-9]}}, #1156  br i1 %cmp, label %if.then, label %if.end157 158if.then:                                          ; preds = %entry159  tail call void @foo()160  br label %if.end161 162if.end:                                           ; preds = %if.then, %entry163  ret void164}165 166define void @t9(i32 %a) uwtable ssp {167entry:168; ARM: t9169; THUMB: t9170  %cmp = icmp eq i32 %a, 1171; ARM: cmp r{{[0-9]}}, #1172; THUMB: cmp r{{[0-9]}}, #1173  br i1 %cmp, label %if.then, label %if.end174 175if.then:                                          ; preds = %entry176  tail call void @foo()177  br label %if.end178 179if.end:                                           ; preds = %if.then, %entry180  ret void181}182 183define void @t10(i32 %a) uwtable ssp {184entry:185; ARM: t10186; THUMB: t10187  %cmp = icmp eq i32 %a, 384188; ARM: cmp r{{[0-9]}}, #384189; THUMB: cmp.w r{{[0-9]}}, #384190  br i1 %cmp, label %if.then, label %if.end191 192if.then:                                          ; preds = %entry193  tail call void @foo()194  br label %if.end195 196if.end:                                           ; preds = %if.then, %entry197  ret void198}199 200define void @t11(i32 %a) uwtable ssp {201entry:202; ARM: t11203; THUMB: t11204  %cmp = icmp eq i32 %a, 4096205; ARM: cmp r{{[0-9]}}, #4096206; THUMB: cmp.w r{{[0-9]}}, #4096207  br i1 %cmp, label %if.then, label %if.end208 209if.then:                                          ; preds = %entry210  tail call void @foo()211  br label %if.end212 213if.end:                                           ; preds = %if.then, %entry214  ret void215}216 217define void @t12(i8 %a) uwtable ssp {218entry:219; ARM: t12220; THUMB: t12221  %cmp = icmp ugt i8 %a, -113222; ARM: cmp r{{[0-9]}}, #143223; THUMB: cmp r{{[0-9]}}, #143224  br i1 %cmp, label %if.then, label %if.end225 226if.then:                                          ; preds = %entry227  tail call void @foo()228  br label %if.end229 230if.end:                                           ; preds = %if.then, %entry231  ret void232}233 234; rdar://11038907235; When comparing LONG_MIN/INT_MIN use a cmp instruction.236define void @t13() nounwind ssp {237entry:238; ARM: t13239; THUMB: t13240  %cmp = icmp slt i32 -123, -2147483648241; ARM: cmp r{{[0-9]}}, #-2147483648242; THUMB: cmp.w r{{[0-9]}}, #-2147483648243  br i1 %cmp, label %if.then, label %if.end244 245if.then:                                          ; preds = %entry246  ret void247 248if.end:                                           ; preds = %entry249  ret void250}251 252