blob: 14204ef3d8010d7688c8281435848dd4a920caae [file] [log] [blame]
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001; RUN: llc -march=hexagon -mcpu=hexagonv5 < %s | FileCheck %s
2; Generate MemOps for V4 and above.
3
4
5define void @f(i32* %p) nounwind {
6entry:
Krzysztof Parzyszekc9f797f2018-03-06 19:07:21 +00007; CHECK: memw(r{{[0-9]+}}+#40) -= #1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00008 %p.addr = alloca i32*, align 4
9 store i32* %p, i32** %p.addr, align 4
David Blaikiea79ac142015-02-27 21:17:42 +000010 %0 = load i32*, i32** %p.addr, align 4
David Blaikie79e6c742015-02-27 19:29:02 +000011 %add.ptr = getelementptr inbounds i32, i32* %0, i32 10
David Blaikiea79ac142015-02-27 21:17:42 +000012 %1 = load i32, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000013 %sub = sub nsw i32 %1, 1
14 store i32 %sub, i32* %add.ptr, align 4
15 ret void
16}
17
18define void @g(i32* %p, i32 %i) nounwind {
19entry:
Krzysztof Parzyszekc9f797f2018-03-06 19:07:21 +000020; CHECK: memw(r{{[0-9]+}}+#40) -= #1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000021 %p.addr = alloca i32*, align 4
22 %i.addr = alloca i32, align 4
23 store i32* %p, i32** %p.addr, align 4
24 store i32 %i, i32* %i.addr, align 4
David Blaikiea79ac142015-02-27 21:17:42 +000025 %0 = load i32*, i32** %p.addr, align 4
26 %1 = load i32, i32* %i.addr, align 4
David Blaikie79e6c742015-02-27 19:29:02 +000027 %add.ptr = getelementptr inbounds i32, i32* %0, i32 %1
28 %add.ptr1 = getelementptr inbounds i32, i32* %add.ptr, i32 10
David Blaikiea79ac142015-02-27 21:17:42 +000029 %2 = load i32, i32* %add.ptr1, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000030 %sub = sub nsw i32 %2, 1
31 store i32 %sub, i32* %add.ptr1, align 4
32 ret void
33}