Krzysztof Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=hexagon < %s | FileCheck %s |
| 2 | |
| 3 | ; CHECK-LABEL: t00 |
Sanjay Patel | f24900b | 2018-12-16 14:57:04 +0000 | [diff] [blame] | 4 | ; CHECK: vand(v{{[0-9:]+}},v{{[0-9:]+}}) |
Krzysztof Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 5 | define <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 Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 8 | %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 Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 13 | declare <1024 x i1> @llvm.hexagon.vandvrt.128B(<128 x i8>, i32) |
| 14 | |
Krzysztof Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 15 | ; CHECK-LABEL: t01 |
Sanjay Patel | f24900b | 2018-12-16 14:57:04 +0000 | [diff] [blame] | 16 | ; CHECK: vor(v{{[0-9:]+}},v{{[0-9:]+}}) |
Krzysztof Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 17 | define <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 Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 20 | %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 |
Sanjay Patel | f24900b | 2018-12-16 14:57:04 +0000 | [diff] [blame] | 26 | ; CHECK: vxor(v{{[0-9:]+}},v{{[0-9:]+}}) |
Krzysztof Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 27 | define <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 Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 30 | %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 |
Sanjay Patel | f24900b | 2018-12-16 14:57:04 +0000 | [diff] [blame] | 36 | ; CHECK: vand(v{{[0-9:]+}},v{{[0-9:]+}}) |
Krzysztof Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 37 | define <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 Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 40 | %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 |
Sanjay Patel | f24900b | 2018-12-16 14:57:04 +0000 | [diff] [blame] | 46 | ; CHECK: vor(v{{[0-9:]+}},v{{[0-9:]+}}) |
Krzysztof Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 47 | define <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 Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 50 | %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 |
Sanjay Patel | f24900b | 2018-12-16 14:57:04 +0000 | [diff] [blame] | 56 | ; CHECK: vxor(v{{[0-9:]+}},v{{[0-9:]+}}) |
Krzysztof Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 57 | define <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 Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 60 | %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 |
Sanjay Patel | f24900b | 2018-12-16 14:57:04 +0000 | [diff] [blame] | 66 | ; CHECK: vand(v{{[0-9:]+}},v{{[0-9:]+}}) |
Krzysztof Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 67 | define <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 Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 70 | %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 |
Sanjay Patel | f24900b | 2018-12-16 14:57:04 +0000 | [diff] [blame] | 76 | ; CHECK: vor(v{{[0-9:]+}},v{{[0-9:]+}}) |
Krzysztof Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 77 | define <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 Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 80 | %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 |
Sanjay Patel | f24900b | 2018-12-16 14:57:04 +0000 | [diff] [blame] | 86 | ; CHECK: vxor(v{{[0-9:]+}},v{{[0-9:]+}}) |
Krzysztof Parzyszek | 840b02b | 2018-05-22 18:27:02 +0000 | [diff] [blame] | 87 | define <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 Parzyszek | e8a0ae7 | 2018-05-16 21:00:24 +0000 | [diff] [blame] | 90 | %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 | |
| 95 | attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" } |