blob: 9fc3d22174e3256b3e2b6a2ae9246b633cd1f822 [file] [log] [blame]
Jyotsna Verma7503a622013-02-20 16:13:27 +00001; RUN: llc -march=hexagon -mcpu=hexagonv4 < %s | FileCheck %s
2; Check that we constant extended instructions only when necessary.
3
4define i32 @cext_test1(i32* %a) nounwind {
Colin LeMahieu026e88d2014-12-23 20:02:16 +00005; CHECK: r{{[0-9]+}}{{ *}}={{ *}}memw(r{{[0-9]+}}{{ *}}+{{ *}}##8000)
Jyotsna Verma7503a622013-02-20 16:13:27 +00006; CHECK: r{{[0-9]+}}{{ *}}={{ *}}add(r{{[0-9]+}}{{ *}},{{ *}}##300000)
Colin LeMahieu026e88d2014-12-23 20:02:16 +00007; CHECK-NOT: r{{[0-9]+}}{{ *}}={{ *}}memw(r{{[0-9]+}}{{ *}}+{{ *}}##4092)
Jyotsna Verma7503a622013-02-20 16:13:27 +00008; CHECK-NOT: r{{[0-9]+}}{{ *}}={{ *}}add(r{{[0-9]+}}{{ *}},{{ *}}##300)
9entry:
10 %0 = load i32* %a, align 4
11 %tobool = icmp ne i32 %0, 0
12 br i1 %tobool, label %if.then, label %if.end
13
14if.then:
David Blaikie79e6c742015-02-27 19:29:02 +000015 %arrayidx1 = getelementptr inbounds i32, i32* %a, i32 2000
Jyotsna Verma7503a622013-02-20 16:13:27 +000016 %1 = load i32* %arrayidx1, align 4
17 %add = add nsw i32 %1, 300000
18 br label %return
19
20if.end:
David Blaikie79e6c742015-02-27 19:29:02 +000021 %arrayidx2 = getelementptr inbounds i32, i32* %a, i32 1023
Jyotsna Verma7503a622013-02-20 16:13:27 +000022 %2 = load i32* %arrayidx2, align 4
23 %add3 = add nsw i32 %2, 300
24 br label %return
25
26return:
27 %retval.0 = phi i32 [ %add, %if.then ], [ %add3, %if.end ]
28 ret i32 %retval.0
29}
30
31define i32 @cext_test2(i8* %a) nounwind {
Colin LeMahieu4b1eac42014-12-22 21:40:43 +000032; CHECK-NOT: r{{[0-9]+}}{{ *}}={{ *}}memub(r{{[0-9]+}}+{{ *}}##1023)
Jyotsna Verma7503a622013-02-20 16:13:27 +000033; CHECK: r{{[0-9]+}}{{ *}}={{ *}}add(r{{[0-9]+}}{{ *}},{{ *}}##300000)
Colin LeMahieu4b1eac42014-12-22 21:40:43 +000034; CHECK: r{{[0-9]+}}{{ *}}={{ *}}memub(r{{[0-9]+}}{{ *}}+{{ *}}##1024)
Jyotsna Verma7503a622013-02-20 16:13:27 +000035; CHECK-NOT: r{{[0-9]+}}{{ *}}={{ *}}add(r{{[0-9]+}}{{ *}},{{ *}}##6000)
36entry:
37 %tobool = icmp ne i8* %a, null
38 br i1 %tobool, label %if.then, label %if.end
39
40if.then:
David Blaikie79e6c742015-02-27 19:29:02 +000041 %arrayidx = getelementptr inbounds i8, i8* %a, i32 1023
Jyotsna Verma7503a622013-02-20 16:13:27 +000042 %0 = load i8* %arrayidx, align 1
43 %conv = zext i8 %0 to i32
44 %add = add nsw i32 %conv, 300000
45 br label %return
46
47if.end:
David Blaikie79e6c742015-02-27 19:29:02 +000048 %arrayidx1 = getelementptr inbounds i8, i8* %a, i32 1024
Jyotsna Verma7503a622013-02-20 16:13:27 +000049 %1 = load i8* %arrayidx1, align 1
50 %conv2 = zext i8 %1 to i32
51 %add3 = add nsw i32 %conv2, 6000
52 br label %return
53
54return:
55 %retval.0 = phi i32 [ %add, %if.then ], [ %add3, %if.end ]
56 ret i32 %retval.0
57}