73 lines · plain
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s2;3; Bug 6714. Use sign-extend to promote the arguments for compare4; equal/not-equal for 8- and 16-bit types with negative constants.5 6; CHECK: cmp.eq{{.*}}#-167define i32 @foo1(i16 signext %q) nounwind readnone {8entry:9 %not.cmp = icmp ne i16 %q, -1610 %res.0 = zext i1 %not.cmp to i3211 ret i32 %res.012}13 14; CHECK: cmp.eq{{.*}}#-1415define i32 @foo2(i16 signext %q) nounwind readnone {16entry:17 %cmp = icmp eq i16 %q, -1418 %res.0 = select i1 %cmp, i32 2, i32 019 ret i32 %res.020}21 22; CHECK: cmp.eq{{.*}}#-823define i32 @foo3(i8 signext %r) nounwind readnone {24entry:25 %cmp = icmp eq i8 %r, -826 %res.0 = select i1 %cmp, i32 0, i32 327 ret i32 %res.028}29 30; CHECK: cmp.eq{{.*}}#-631define i32 @foo4(i8 signext %r) nounwind readnone {32entry:33 %cmp = icmp eq i8 %r, -634 %res.0 = select i1 %cmp, i32 4, i32 035 ret i32 %res.036}37 38; CHECK: cmp.eq{{.*}}#-2039define i32 @foo5(i32 %s) nounwind readnone {40entry:41 %cmp = icmp eq i32 %s, -2042 %res.0 = select i1 %cmp, i32 0, i32 543 ret i32 %res.044}45 46; CHECK: cmp.eq{{.*}}#-1847define i32 @foo6(i32 %s) nounwind readnone {48entry:49 %cmp = icmp eq i32 %s, -1850 %res.0 = select i1 %cmp, i32 6, i32 051 ret i32 %res.052}53 54; CHECK: cmp.eq{{.*}}#1055define i32 @foo7(i16 signext %q) nounwind readnone {56entry:57 %cmp = icmp eq i16 %q, 1058 %res.0 = select i1 %cmp, i32 7, i32 059 ret i32 %res.060}61 62@g = external global i1663 64; CHECK: cmp.eq{{.*}}#-1265define i32 @foo8() nounwind readonly {66entry:67 %0 = load i16, ptr @g, align 268 %cmp = icmp eq i16 %0, -1269 %res.0 = select i1 %cmp, i32 0, i32 870 ret i32 %res.071}72 73