blob: 1bb1fe34076eac28a7d9763f3f717faf01ada552 [file] [log] [blame]
Krzysztof Parzyszek6b589e52017-12-18 18:32:27 +00001; RUN: llc -march=hexagon < %s | FileCheck %s
2
3target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
4target triple = "hexagon"
5
6; CHECK-LABEL: danny:
Krzysztof Parzyszekb0b52612018-01-05 22:31:11 +00007; CHECK: vunpack
Krzysztof Parzyszek6b589e52017-12-18 18:32:27 +00008; CHECK-NOT: vinsert
Krzysztof Parzyszekd91a9e22018-08-02 22:17:53 +00009define void @danny(<16 x i16>* %a0, <16 x i32>* %a1) #0 {
Krzysztof Parzyszek6b589e52017-12-18 18:32:27 +000010b2:
Krzysztof Parzyszekcf3ad582018-01-24 17:48:11 +000011 %v16 = load <16 x i16>, <16 x i16>* %a0, align 128
Krzysztof Parzyszek6b589e52017-12-18 18:32:27 +000012 %v17 = sext <16 x i16> %v16 to <16 x i32>
Krzysztof Parzyszekd91a9e22018-08-02 22:17:53 +000013 store <16 x i32> %v17, <16 x i32>* %a1, align 128
14 ret void
Krzysztof Parzyszek6b589e52017-12-18 18:32:27 +000015}
16
17; CHECK-LABEL: sammy:
Krzysztof Parzyszekb0b52612018-01-05 22:31:11 +000018; CHECK: vunpack
Krzysztof Parzyszek6b589e52017-12-18 18:32:27 +000019; CHECK-NOT: vinsert
Krzysztof Parzyszekd91a9e22018-08-02 22:17:53 +000020define void @sammy(<32 x i16>* %a0, <32 x i32>* %a1) #1 {
Krzysztof Parzyszek6b589e52017-12-18 18:32:27 +000021b2:
Krzysztof Parzyszekcf3ad582018-01-24 17:48:11 +000022 %v16 = load <32 x i16>, <32 x i16>* %a0, align 128
Krzysztof Parzyszek6b589e52017-12-18 18:32:27 +000023 %v17 = sext <32 x i16> %v16 to <32 x i32>
Krzysztof Parzyszekd91a9e22018-08-02 22:17:53 +000024 store <32 x i32> %v17, <32 x i32>* %a1, align 128
25 ret void
Krzysztof Parzyszek6b589e52017-12-18 18:32:27 +000026}
27
28
29attributes #0 = { noinline norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-length64b,+hvxv60" }
30attributes #1 = { noinline norecurse nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-length128b,+hvxv60" }