brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 7d92c4d Raw
300 lines · plain
1; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s2 3; These tests would be improved by 'movs r0, #0' being rematerialized below the4; test as 'mov.w r0, #0'.5 6; 0x000000bb = 1877define i32 @f1(i32 %a) {8; CHECK-LABEL: f1:9; CHECK: cmp {{.*}}, #18710    %tmp = icmp ne i32 %a, 18711    %ret = select i1 %tmp, i32 42, i32 2412    ret i32 %ret13}14 15; 0x00aa00aa = 1114129016define i32 @f2(i32 %a) {17; CHECK-LABEL: f2:18; CHECK: cmp.w {{.*}}, #1114129019    %tmp = icmp eq i32 %a, 11141290 20    %ret = select i1 %tmp, i32 42, i32 2421    ret i32 %ret22}23 24; 0xcc00cc00 = 342260428825define i32 @f3(i32 %a) {26; CHECK-LABEL: f3:27; CHECK: cmp.w {{.*}}, #-87236300828    %tmp = icmp ne i32 %a, 342260428829    %ret = select i1 %tmp, i32 42, i32 2430    ret i32 %ret31}32 33; 0xdddddddd = 372230498934define i32 @f4(i32 %a) {35; CHECK-LABEL: f4:36; CHECK: cmp.w {{.*}}, #-57266230737    %tmp = icmp ne i32 %a, 372230498938    %ret = select i1 %tmp, i32 42, i32 2439    ret i32 %ret40}41 42; 0x00110000 = 111411243define i32 @f5(i32 %a) {44; CHECK-LABEL: f5:45; CHECK: cmp.w {{.*}}, #111411246    %tmp = icmp eq i32 %a, 111411247    %ret = select i1 %tmp, i32 42, i32 2448    ret i32 %ret49}50 51; Check that we don't do an invalid (a > b) --> !(a < b + 1) transform.52;53; CHECK-LABEL: f6:54; CHECK-NOT: cmp.w {{.*}}, #-214748364855; CHECK: bx lr56define i32 @f6(i32 %a) {57    %tmp = icmp sgt i32 %a, 214748364758    br i1 %tmp, label %true, label %false59true:60    ret i32 261false:62    ret i32 063}64 65define i32 @slt_poweroftwo(i32 %a) {66; CHECK-LABEL: slt_poweroftwo:67; CHECK: cmp.w   r0, #409668  %b = icmp slt i32 %a, 409669  br i1 %b, label %true, label %false70 71true:72  ret i32 173 74false:75  ret i32 276}77 78define i32 @sle_poweroftwo(i32 %a) {79; CHECK-LABEL: sle_poweroftwo:80; CHECK: cmp.w   r0, #409681  %b = icmp sle i32 %a, 409682  br i1 %b, label %true, label %false83 84true:85  ret i32 186 87false:88  ret i32 289}90 91define i32 @sge_poweroftwo(i32 %a) {92; CHECK-LABEL: sge_poweroftwo:93; CHECK: cmp.w   r0, #409694  %b = icmp sge i32 %a, 409695  br i1 %b, label %true, label %false96 97true:98  ret i32 199 100false:101  ret i32 2102}103 104define i32 @sgt_poweroftwo(i32 %a) {105; CHECK-LABEL: sgt_poweroftwo:106; CHECK: cmp.w   r0, #4096107  %b = icmp sgt i32 %a, 4096108  br i1 %b, label %true, label %false109 110true:111  ret i32 1112 113false:114  ret i32 2115}116 117define i32 @slt_nearpoweroftwo(i32 %a) {118; CHECK-LABEL: slt_nearpoweroftwo:119; CHECK: cmp.w   r0, #4096120  %b = icmp slt i32 %a, 4097121  br i1 %b, label %true, label %false122 123true:124  ret i32 1125 126false:127  ret i32 2128}129 130define i32 @sle_nearpoweroftwo(i32 %a) {131; CHECK-LABEL: sle_nearpoweroftwo:132; CHECK: cmp.w   r0, #4096133  %b = icmp sle i32 %a, 4095134  br i1 %b, label %true, label %false135 136true:137  ret i32 1138 139false:140  ret i32 2141}142 143 144define i32 @sge_nearpoweroftwo(i32 %a) {145; CHECK-LABEL: sge_nearpoweroftwo:146; CHECK: cmp.w   r0, #4096147  %b = icmp sge i32 %a, 4097148  br i1 %b, label %true, label %false149 150true:151  ret i32 1152 153false:154  ret i32 2155}156 157define i32 @sgt_nearpoweroftwo(i32 %a) {158; CHECK-LABEL: sgt_nearpoweroftwo:159; CHECK: cmp.w   r0, #4096160  %b = icmp sgt i32 %a, 4095161  br i1 %b, label %true, label %false162 163true:164  ret i32 1165 166false:167  ret i32 2168}169 170define i32 @slt_neg_soimm(i32 %a) {171; CHECK-LABEL: slt_neg_soimm:172; CHECK: cmn.w r0, #7929856173  %b = icmp slt i32 %a, -7929856174  br i1 %b, label %true, label %false175 176true:177  ret i32 1178 179false:180  ret i32 2181}182 183define i32 @sle_neg_soimm(i32 %a) {184; CHECK-LABEL: sle_neg_soimm:185; CHECK: cmn.w   r0, #7929856186  %b = icmp sle i32 %a, -7929856187  br i1 %b, label %true, label %false188 189true:190  ret i32 1191 192false:193  ret i32 2194}195 196define i32 @sge_neg_soimm(i32 %a) {197; CHECK-LABEL: sge_neg_soimm:198; CHECK: cmn.w   r0, #7929856199  %b = icmp sge i32 %a, -7929856200  br i1 %b, label %true, label %false201 202true:203  ret i32 1204 205false:206  ret i32 2207}208 209define i32 @sgt_neg_soimm(i32 %a) {210; CHECK-LABEL: sgt_neg_soimm:211; CHECK: cmn.w r0, #7929856212  %b = icmp sgt i32 %a, -7929856213  br i1 %b, label %true, label %false214 215true:216  ret i32 1217 218false:219  ret i32 2220}221 222define i32 @slt_notneg_soimm(i32 %a) {223; CHECK-LABEL: slt_notneg_soimm:224; CHECK: cmp.w r0, #-2013231104225  %b = icmp slt i32 %a, -2013231104226  br i1 %b, label %true, label %false227 228true:229  ret i32 1230 231false:232  ret i32 2233}234 235define i32 @sle_notneg_soimm(i32 %a) {236; CHECK-LABEL: sle_notneg_soimm:237; CHECK: cmp.w   r0, #-2013231104238  %b = icmp sle i32 %a, -2013231104239  br i1 %b, label %true, label %false240 241true:242  ret i32 1243 244false:245  ret i32 2246}247 248define i32 @sge_notneg_soimm(i32 %a) {249; CHECK-LABEL: sge_notneg_soimm:250; CHECK: cmp.w   r0, #-2013231104251  %b = icmp sge i32 %a, -2013231104252  br i1 %b, label %true, label %false253 254true:255  ret i32 1256 257false:258  ret i32 2259}260 261define i32 @sgt_notneg_soimm(i32 %a) {262; CHECK-LABEL: sgt_notneg_soimm:263; CHECK: cmp.w r0, #-2013231104264  %b = icmp sgt i32 %a, -2013231104265  br i1 %b, label %true, label %false266 267true:268  ret i32 1269 270false:271  ret i32 2272}273 274define i32 @sgt_movw(i32 %a) {275; CHECK-LABEL: sgt_movw:276; CHECK: movw  r1, #2167277  %b = icmp sgt i32 %a, 2166278  br i1 %b, label %true, label %false279 280true:281  ret i32 1282 283false:284  ret i32 2285}286 287define i32 @sgt_neg_movw(i32 %a) {288; CHECK-LABEL: sgt_neg_movw:289; CHECK: movw    r1, #63371290; CHECK: movt    r1, #65535291  %b = icmp sgt i32 %a, -2166292  br i1 %b, label %true, label %false293 294true:295  ret i32 1296 297false:298  ret i32 2299}300