81 lines · plain
1; RUN: llc -O0 -mtriple=hexagon -mcpu=hexagonv60 -mattr=+hvxv60,hvx-length64b < %s | FileCheck %s2 3; CHECK: vmem4 5target triple = "hexagon"6 7@vecpreds = external global [15 x <16 x i32>], align 648@vectors = external global [15 x <16 x i32>], align 649@vector_pairs = external global [15 x <32 x i32>], align 12810@.str1 = external hidden unnamed_addr constant [20 x i8], align 111@.str2 = external hidden unnamed_addr constant [43 x i8], align 112@Q6VecPredResult = external global <16 x i32>, align 6413@.str52 = external hidden unnamed_addr constant [57 x i8], align 114@.str54 = external hidden unnamed_addr constant [59 x i8], align 115@VectorResult = external global <16 x i32>, align 6416@.str243 = external hidden unnamed_addr constant [60 x i8], align 117@.str251 = external hidden unnamed_addr constant [77 x i8], align 118@.str290 = external hidden unnamed_addr constant [65 x i8], align 119@VectorPairResult = external global <32 x i32>, align 12820 21; Function Attrs: nounwind22declare void @print_vector(i32, ptr) #023 24; Function Attrs: nounwind25declare i32 @printf(ptr, ...) #026 27; Function Attrs: nounwind28declare void @print_vecpred(i32, ptr) #029 30; Function Attrs: nounwind readnone31declare <16 x i32> @llvm.hexagon.V6.vandqrt(<64 x i1>, i32) #132 33; Function Attrs: nounwind34declare void @init_vectors() #035 36; Function Attrs: nounwind readnone37declare <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32>, i32) #138 39; Function Attrs: nounwind readnone40declare <16 x i32> @llvm.hexagon.V6.lvsplatw(i32) #141 42; Function Attrs: nounwind43declare void @init_addresses() #044 45; Function Attrs: nounwind46declare <16 x i32> @llvm.hexagon.V6.vsubhnq(<64 x i1>, <16 x i32>, <16 x i32>) #147 48; Function Attrs: nounwind49define i32 @main() #0 {50entry:51 %0 = load <16 x i32>, ptr @vecpreds, align 6452 %1 = load <16 x i32>, ptr getelementptr inbounds ([15 x <16 x i32>], ptr @vectors, i32 0, i32 1), align 6453 call void @print_vecpred(i32 64, ptr @Q6VecPredResult)54 %2 = load <16 x i32>, ptr getelementptr inbounds ([15 x <16 x i32>], ptr @vectors, i32 0, i32 1), align 6455 %call50 = call i32 (ptr, ...) @printf(ptr @.str52) #356 %3 = load <16 x i32>, ptr getelementptr inbounds ([15 x <16 x i32>], ptr @vectors, i32 0, i32 1), align 6457 %call52 = call i32 (ptr, ...) @printf(ptr @.str54) #358 %4 = load <16 x i32>, ptr getelementptr inbounds ([15 x <16 x i32>], ptr @vectors, i32 0, i32 1), align 6459 %call300 = call i32 (ptr, ...) @printf(ptr @.str290) #360 %5 = load <16 x i32>, ptr @vectors, align 6461 %6 = load <16 x i32>, ptr getelementptr inbounds ([15 x <16 x i32>], ptr @vectors, i32 0, i32 1), align 6462 %call1373 = call i32 (ptr, ...) @printf(ptr @.str1, ptr @.str2, ptr @.str243) #363 %7 = call <16 x i32> @llvm.hexagon.V6.lvsplatw(i32 1)64 %call1381 = call i32 (ptr, ...) @printf(ptr @.str1, ptr @.str2, ptr @.str251) #365 %8 = call <16 x i32> @llvm.hexagon.V6.lvsplatw(i32 1)66 %9 = call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %8, i32 16843009)67 call void @print_vector(i32 64, ptr @VectorResult)68 %10 = call <16 x i32> @llvm.hexagon.V6.lvsplatw(i32 1)69 %11 = call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %10, i32 16843009)70 %12 = tail call <16 x i32> @llvm.hexagon.V6.vandqrt(<64 x i1> %11, i32 -1)71 %13 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %12, i32 -1)72 %14 = call <16 x i32> @llvm.hexagon.V6.vsubhnq(<64 x i1> %13, <16 x i32> undef, <16 x i32> undef)73 store <16 x i32> %14, ptr @VectorResult, align 6474 ret i32 075}76 77attributes #0 = { nounwind "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }78attributes #1 = { nounwind readnone }79attributes #2 = { "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }80attributes #3 = { nounwind }81