blob: 129c95205b94265a5d7d59aea5c1848e857b2d8c [file] [log] [blame]
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +00001; RUN: llc -march=hexagon < %s | FileCheck %s
2
3; CHECK-LABEL: t00
4; CHECK: and(q{{[0-3]}},q{{[0-3]}})
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +00005define <128 x i8> @t00(<128 x i8> %a0, <128 x i8> %a1) #0 {
6 %q0 = trunc <128 x i8> %a0 to <128 x i1>
7 %q1 = trunc <128 x i8> %a1 to <128 x i1>
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +00008 %q2 = and <128 x i1> %q0, %q1
9 %v0 = zext <128 x i1> %q2 to <128 x i8>
10 ret <128 x i8> %v0
11}
12
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +000013declare <1024 x i1> @llvm.hexagon.vandvrt.128B(<128 x i8>, i32)
14
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +000015; CHECK-LABEL: t01
16; CHECK: or(q{{[0-3]}},q{{[0-3]}})
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +000017define <128 x i8> @t01(<128 x i8> %a0, <128 x i8> %a1) #0 {
18 %q0 = trunc <128 x i8> %a0 to <128 x i1>
19 %q1 = trunc <128 x i8> %a1 to <128 x i1>
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +000020 %q2 = or <128 x i1> %q0, %q1
21 %v0 = zext <128 x i1> %q2 to <128 x i8>
22 ret <128 x i8> %v0
23}
24
25; CHECK-LABEL: t02
26; CHECK: xor(q{{[0-3]}},q{{[0-3]}})
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +000027define <128 x i8> @t02(<128 x i8> %a0, <128 x i8> %a1) #0 {
28 %q0 = trunc <128 x i8> %a0 to <128 x i1>
29 %q1 = trunc <128 x i8> %a1 to <128 x i1>
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +000030 %q2 = xor <128 x i1> %q0, %q1
31 %v0 = zext <128 x i1> %q2 to <128 x i8>
32 ret <128 x i8> %v0
33}
34
35; CHECK-LABEL: t10
36; CHECK: and(q{{[0-3]}},q{{[0-3]}})
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +000037define <64 x i16> @t10(<64 x i16> %a0, <64 x i16> %a1) #0 {
38 %q0 = trunc <64 x i16> %a0 to <64 x i1>
39 %q1 = trunc <64 x i16> %a1 to <64 x i1>
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +000040 %q2 = and <64 x i1> %q0, %q1
41 %v0 = zext <64 x i1> %q2 to <64 x i16>
42 ret <64 x i16> %v0
43}
44
45; CHECK-LABEL: t11
46; CHECK: or(q{{[0-3]}},q{{[0-3]}})
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +000047define <64 x i16> @t11(<64 x i16> %a0, <64 x i16> %a1) #0 {
48 %q0 = trunc <64 x i16> %a0 to <64 x i1>
49 %q1 = trunc <64 x i16> %a1 to <64 x i1>
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +000050 %q2 = or <64 x i1> %q0, %q1
51 %v0 = zext <64 x i1> %q2 to <64 x i16>
52 ret <64 x i16> %v0
53}
54
55; CHECK-LABEL: t12
56; CHECK: xor(q{{[0-3]}},q{{[0-3]}})
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +000057define <64 x i16> @t12(<64 x i16> %a0, <64 x i16> %a1) #0 {
58 %q0 = trunc <64 x i16> %a0 to <64 x i1>
59 %q1 = trunc <64 x i16> %a1 to <64 x i1>
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +000060 %q2 = xor <64 x i1> %q0, %q1
61 %v0 = zext <64 x i1> %q2 to <64 x i16>
62 ret <64 x i16> %v0
63}
64
65; CHECK-LABEL: t20
66; CHECK: and(q{{[0-3]}},q{{[0-3]}})
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +000067define <32 x i32> @t20(<32 x i32> %a0, <32 x i32> %a1) #0 {
68 %q0 = trunc <32 x i32> %a0 to <32 x i1>
69 %q1 = trunc <32 x i32> %a1 to <32 x i1>
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +000070 %q2 = and <32 x i1> %q0, %q1
71 %v0 = zext <32 x i1> %q2 to <32 x i32>
72 ret <32 x i32> %v0
73}
74
75; CHECK-LABEL: t21
76; CHECK: or(q{{[0-3]}},q{{[0-3]}})
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +000077define <32 x i32> @t21(<32 x i32> %a0, <32 x i32> %a1) #0 {
78 %q0 = trunc <32 x i32> %a0 to <32 x i1>
79 %q1 = trunc <32 x i32> %a1 to <32 x i1>
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +000080 %q2 = or <32 x i1> %q0, %q1
81 %v0 = zext <32 x i1> %q2 to <32 x i32>
82 ret <32 x i32> %v0
83}
84
85; CHECK-LABEL: t22
86; CHECK: xor(q{{[0-3]}},q{{[0-3]}})
Krzysztof Parzyszek840b02b2018-05-22 18:27:02 +000087define <32 x i32> @t22(<32 x i32> %a0, <32 x i32> %a1) #0 {
88 %q0 = trunc <32 x i32> %a0 to <32 x i1>
89 %q1 = trunc <32 x i32> %a1 to <32 x i1>
Krzysztof Parzyszeke8a0ae72018-05-16 21:00:24 +000090 %q2 = xor <32 x i1> %q0, %q1
91 %v0 = zext <32 x i1> %q2 to <32 x i32>
92 ret <32 x i32> %v0
93}
94
95attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }