blob: 414574aec401cb38b7a2f3aa20bd1ebebc6330ca [file] [log] [blame]
Krzysztof Parzyszeka0ecf072015-07-14 17:07:24 +00001; RUN: llc -march=hexagon -hexagon-extract=0 < %s | FileCheck %s
Sirish Pandef8e5e3c2012-05-03 21:52:53 +00002; Check that we generate fused logical and with shift instruction.
Krzysztof Parzyszeka0ecf072015-07-14 17:07:24 +00003; Disable "extract" generation, since it may eliminate the and/lsr.
Sirish Pandef8e5e3c2012-05-03 21:52:53 +00004
5; CHECK: r{{[0-9]+}} = and(#15, lsr(r{{[0-9]+}}, #{{[0-9]+}})
6
7define i32 @main(i16* %a, i16* %b) nounwind {
8 entry:
David Blaikiea79ac142015-02-27 21:17:42 +00009 %0 = load i16, i16* %a, align 2
Sirish Pandef8e5e3c2012-05-03 21:52:53 +000010 %conv1 = sext i16 %0 to i32
11 %shr1 = ashr i32 %conv1, 3
12 %and1 = and i32 %shr1, 15
13 %conv2 = trunc i32 %and1 to i16
14 store i16 %conv2, i16* %b, align 2
15 ret i32 0
16}
17