%arrayidx = getelementptr inbounds i16, i16* %filtMemLR, i32 %idxprom
%0 = bitcast i16* %arrayidx to i8*
%or = or i32 %shr1, 33554432
-; CHECK: = memb(r{{[0-9]*}}++#-1:circ(m{{[0-1]}}))
+; CHECK: = memb(r{{[0-9]+}}++#-1:circ(m{{[0-1]}}))
%1 = call i8* @llvm.hexagon.circ.ldb(i8* %0, i8* %inputLR, i32 %or, i32 -1)
%2 = load i8, i8* %inputLR, align 1, !tbaa !0
ret i8 %2
%1 = bitcast i64* %inputLR to i8*
%shl = shl nuw nsw i32 %shr1, 3
%or = or i32 %shl, 83886080
-; CHECK: = memd(r{{[0-9]*}}++#-8:circ(m{{[0-1]}}))
+; CHECK: = memd(r{{[0-9]+}}++#-8:circ(m{{[0-1]}}))
%2 = call i8* @llvm.hexagon.circ.ldd(i8* %0, i8* %1, i32 %or, i32 -8)
%3 = bitcast i8* %1 to i64*
%4 = load i64, i64* %3, align 8, !tbaa !0
%0 = bitcast i16* %arrayidx to i8*
%1 = bitcast i16* %inputLR to i8*
%or = or i32 %shr1, 50331648
-; CHECK: = memh(r{{[0-9]*}}++#-2:circ(m{{[0-1]}}))
+; CHECK: = memh(r{{[0-9]+}}++#-2:circ(m{{[0-1]}}))
%2 = call i8* @llvm.hexagon.circ.ldh(i8* %0, i8* %1, i32 %or, i32 -2)
%3 = bitcast i8* %1 to i16*
%4 = load i16, i16* %3, align 2, !tbaa !2
%arrayidx = getelementptr inbounds i16, i16* %filtMemLR, i32 %idxprom
%0 = bitcast i16* %arrayidx to i8*
%or = or i32 %shr1, 33554432
-; CHECK: = memub(r{{[0-9]*}}++#-1:circ(m{{[0-1]}}))
+; CHECK: = memub(r{{[0-9]+}}++#-1:circ(m{{[0-1]}}))
%1 = call i8* @llvm.hexagon.circ.ldub(i8* %0, i8* %inputLR, i32 %or, i32 -1)
%2 = load i8, i8* %inputLR, align 1, !tbaa !0
ret i8 %2
%0 = bitcast i16* %arrayidx to i8*
%1 = bitcast i16* %inputLR to i8*
%or = or i32 %shr1, 50331648
-; CHECK: = memuh(r{{[0-9]*}}++#-2:circ(m{{[0-1]}}))
+; CHECK: = memuh(r{{[0-9]+}}++#-2:circ(m{{[0-1]}}))
%2 = call i8* @llvm.hexagon.circ.lduh(i8* %0, i8* %1, i32 %or, i32 -2)
%3 = bitcast i8* %1 to i16*
%4 = load i16, i16* %3, align 2, !tbaa !2
%1 = bitcast i32* %inputLR to i8*
%shl = shl nuw nsw i32 %shr1, 2
%or = or i32 %shl, 67108864
-; CHECK: = memw(r{{[0-9]*}}++#-4:circ(m{{[0-1]}}))
+; CHECK: = memw(r{{[0-9]+}}++#-4:circ(m{{[0-1]}}))
%2 = call i8* @llvm.hexagon.circ.ldw(i8* %0, i8* %1, i32 %or, i32 -4)
%3 = bitcast i8* %1 to i32*
%4 = load i32, i32* %3, align 4, !tbaa !3
-; RUN: llc -O2 < %s
-target datalayout = "e-p:32:32:32-i64:64:64-i32:32:32-i16:16:16-i1:32:32-f64:64:64-f32:32:32-v64:64:64-v32:32:32-a0:0-n16:32"
+; RUN: llc -march=hexagon -O2 < %s
+
target triple = "hexagon"
; We would fail on this file with:
%idxprom = sext i16 %var2 to i32
%arrayidx = getelementptr inbounds i16, i16* %var1, i32 %idxprom
%0 = bitcast i16* %var3 to i64*
- %1 = load i64, i64* %0, align 8, !tbaa !1
+ %1 = load i64, i64* %0, align 8
%2 = bitcast i16* %arrayidx to i8*
%3 = bitcast i64* %var4 to i8*
%shl = shl nuw nsw i32 %shr5, 3
%4 = call i8* @llvm.hexagon.circ.ldd(i8* %2, i8* %3, i32 %or, i32 -8)
%sub = add nsw i32 %shr5, -1
%cmp6 = icmp sgt i32 %sub, 0
- %5 = load i64, i64* %var4, align 8, !tbaa !1
+ %5 = load i64, i64* %var4, align 8
%6 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 0, i64 %1, i64 %5)
br i1 %cmp6, label %for.body.lr.ph, label %for.end
for.body.unr: ; preds = %unr.cmp
%11 = call i8* @llvm.hexagon.circ.ldd(i8* %4, i8* %3, i32 %or, i32 -8)
- %12 = load i64, i64* %7, align 8, !tbaa !1
+ %12 = load i64, i64* %7, align 8
%inc.unr = add nsw i32 0, 1
%incdec.ptr4.unr = getelementptr inbounds i64, i64* %7, i32 1
%cmp.unr = icmp slt i32 %inc.unr, %sub
- %13 = load i64, i64* %var4, align 8, !tbaa !1
+ %13 = load i64, i64* %var4, align 8
%14 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %6, i64 %12, i64 %13)
br label %for.body.unr13
%var8.0.in8.unr = phi i8* [ %4, %unr.cmp ], [ %11, %for.body.unr ]
%i.07.unr = phi i32 [ 0, %unr.cmp ], [ %inc.unr, %for.body.unr ]
%16 = call i8* @llvm.hexagon.circ.ldd(i8* %var8.0.in8.unr, i8* %3, i32 %or, i32 -8)
- %17 = load i64, i64* %pvar6.09.unr, align 8, !tbaa !1
+ %17 = load i64, i64* %pvar6.09.unr, align 8
%inc.unr14 = add nsw i32 %i.07.unr, 1
%incdec.ptr4.unr15 = getelementptr inbounds i64, i64* %pvar6.09.unr, i32 1
%cmp.unr16 = icmp slt i32 %inc.unr14, %sub
- %18 = load i64, i64* %var4, align 8, !tbaa !1
+ %18 = load i64, i64* %var4, align 8
%19 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %15, i64 %17, i64 %18)
br label %for.body.unr17
%var8.0.in8.unr19 = phi i8* [ %4, %unr.cmp24 ], [ %16, %for.body.unr13 ]
%i.07.unr20 = phi i32 [ 0, %unr.cmp24 ], [ %inc.unr14, %for.body.unr13 ]
%21 = call i8* @llvm.hexagon.circ.ldd(i8* %var8.0.in8.unr19, i8* %3, i32 %or, i32 -8)
- %22 = load i64, i64* %pvar6.09.unr18, align 8, !tbaa !1
+ %22 = load i64, i64* %pvar6.09.unr18, align 8
%inc.unr21 = add nsw i32 %i.07.unr20, 1
%incdec.ptr4.unr22 = getelementptr inbounds i64, i64* %pvar6.09.unr18, i32 1
%cmp.unr23 = icmp slt i32 %inc.unr21, %sub
- %23 = load i64, i64* %var4, align 8, !tbaa !1
+ %23 = load i64, i64* %var4, align 8
%24 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %20, i64 %22, i64 %23)
br label %for.body.unr26
%var8.0.in8.unr28 = phi i8* [ %4, %unr.cmp33 ], [ %21, %for.body.unr17 ]
%i.07.unr29 = phi i32 [ 0, %unr.cmp33 ], [ %inc.unr21, %for.body.unr17 ]
%26 = call i8* @llvm.hexagon.circ.ldd(i8* %var8.0.in8.unr28, i8* %3, i32 %or, i32 -8)
- %27 = load i64, i64* %pvar6.09.unr27, align 8, !tbaa !1
+ %27 = load i64, i64* %pvar6.09.unr27, align 8
%inc.unr30 = add nsw i32 %i.07.unr29, 1
%incdec.ptr4.unr31 = getelementptr inbounds i64, i64* %pvar6.09.unr27, i32 1
%cmp.unr32 = icmp slt i32 %inc.unr30, %sub
- %28 = load i64, i64* %var4, align 8, !tbaa !1
+ %28 = load i64, i64* %var4, align 8
%29 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %25, i64 %27, i64 %28)
br label %for.body.unr35
%var8.0.in8.unr37 = phi i8* [ %4, %unr.cmp42 ], [ %26, %for.body.unr26 ]
%i.07.unr38 = phi i32 [ 0, %unr.cmp42 ], [ %inc.unr30, %for.body.unr26 ]
%31 = call i8* @llvm.hexagon.circ.ldd(i8* %var8.0.in8.unr37, i8* %3, i32 %or, i32 -8)
- %32 = load i64, i64* %pvar6.09.unr36, align 8, !tbaa !1
+ %32 = load i64, i64* %pvar6.09.unr36, align 8
%inc.unr39 = add nsw i32 %i.07.unr38, 1
%incdec.ptr4.unr40 = getelementptr inbounds i64, i64* %pvar6.09.unr36, i32 1
%cmp.unr41 = icmp slt i32 %inc.unr39, %sub
- %33 = load i64, i64* %var4, align 8, !tbaa !1
+ %33 = load i64, i64* %var4, align 8
%34 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %30, i64 %32, i64 %33)
br label %for.body.unr44
%var8.0.in8.unr46 = phi i8* [ %4, %unr.cmp51 ], [ %31, %for.body.unr35 ]
%i.07.unr47 = phi i32 [ 0, %unr.cmp51 ], [ %inc.unr39, %for.body.unr35 ]
%36 = call i8* @llvm.hexagon.circ.ldd(i8* %var8.0.in8.unr46, i8* %3, i32 %or, i32 -8)
- %37 = load i64, i64* %pvar6.09.unr45, align 8, !tbaa !1
+ %37 = load i64, i64* %pvar6.09.unr45, align 8
%inc.unr48 = add nsw i32 %i.07.unr47, 1
%incdec.ptr4.unr49 = getelementptr inbounds i64, i64* %pvar6.09.unr45, i32 1
%cmp.unr50 = icmp slt i32 %inc.unr48, %sub
- %38 = load i64, i64* %var4, align 8, !tbaa !1
+ %38 = load i64, i64* %var4, align 8
%39 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %35, i64 %37, i64 %38)
br label %for.body.unr53
%var8.0.in8.unr55 = phi i8* [ %4, %unr.cmp60 ], [ %36, %for.body.unr44 ]
%i.07.unr56 = phi i32 [ 0, %unr.cmp60 ], [ %inc.unr48, %for.body.unr44 ]
%41 = call i8* @llvm.hexagon.circ.ldd(i8* %var8.0.in8.unr55, i8* %3, i32 %or, i32 -8)
- %42 = load i64, i64* %pvar6.09.unr54, align 8, !tbaa !1
+ %42 = load i64, i64* %pvar6.09.unr54, align 8
%inc.unr57 = add nsw i32 %i.07.unr56, 1
%incdec.ptr4.unr58 = getelementptr inbounds i64, i64* %pvar6.09.unr54, i32 1
%cmp.unr59 = icmp slt i32 %inc.unr57, %sub
- %43 = load i64, i64* %var4, align 8, !tbaa !1
+ %43 = load i64, i64* %var4, align 8
%44 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %40, i64 %42, i64 %43)
br label %for.body.lr.ph.split
%var8.0.in8 = phi i8* [ %var8.0.in8.unr63, %for.body.lr.ph.split.split ], [ %75, %for.body ]
%i.07 = phi i32 [ %i.07.unr64, %for.body.lr.ph.split.split ], [ %inc.7, %for.body ]
%47 = call i8* @llvm.hexagon.circ.ldd(i8* %var8.0.in8, i8* %3, i32 %or, i32 -8)
- %48 = load i64, i64* %pvar6.09, align 8, !tbaa !1
+ %48 = load i64, i64* %pvar6.09, align 8
%inc = add nsw i32 %i.07, 1
- %49 = load i64, i64* %var4, align 8, !tbaa !1
+ %49 = load i64, i64* %var4, align 8
%50 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %46, i64 %48, i64 %49)
%51 = call i8* @llvm.hexagon.circ.ldd(i8* %47, i8* %3, i32 %or, i32 -8)
%scevgep = getelementptr i64, i64* %pvar6.09, i32 1
- %52 = load i64, i64* %scevgep, align 8, !tbaa !1
+ %52 = load i64, i64* %scevgep, align 8
%inc.1 = add nsw i32 %inc, 1
- %53 = load i64, i64* %var4, align 8, !tbaa !1
+ %53 = load i64, i64* %var4, align 8
%54 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %50, i64 %52, i64 %53)
%55 = call i8* @llvm.hexagon.circ.ldd(i8* %51, i8* %3, i32 %or, i32 -8)
%scevgep65 = getelementptr i64, i64* %scevgep, i32 1
- %56 = load i64, i64* %scevgep65, align 8, !tbaa !1
+ %56 = load i64, i64* %scevgep65, align 8
%inc.2 = add nsw i32 %inc.1, 1
- %57 = load i64, i64* %var4, align 8, !tbaa !1
+ %57 = load i64, i64* %var4, align 8
%58 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %54, i64 %56, i64 %57)
%59 = call i8* @llvm.hexagon.circ.ldd(i8* %55, i8* %3, i32 %or, i32 -8)
%scevgep66 = getelementptr i64, i64* %scevgep65, i32 1
- %60 = load i64, i64* %scevgep66, align 8, !tbaa !1
+ %60 = load i64, i64* %scevgep66, align 8
%inc.3 = add nsw i32 %inc.2, 1
- %61 = load i64, i64* %var4, align 8, !tbaa !1
+ %61 = load i64, i64* %var4, align 8
%62 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %58, i64 %60, i64 %61)
%63 = call i8* @llvm.hexagon.circ.ldd(i8* %59, i8* %3, i32 %or, i32 -8)
%scevgep67 = getelementptr i64, i64* %scevgep66, i32 1
- %64 = load i64, i64* %scevgep67, align 8, !tbaa !1
+ %64 = load i64, i64* %scevgep67, align 8
%inc.4 = add nsw i32 %inc.3, 1
- %65 = load i64, i64* %var4, align 8, !tbaa !1
+ %65 = load i64, i64* %var4, align 8
%66 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %62, i64 %64, i64 %65)
%67 = call i8* @llvm.hexagon.circ.ldd(i8* %63, i8* %3, i32 %or, i32 -8)
%scevgep68 = getelementptr i64, i64* %scevgep67, i32 1
- %68 = load i64, i64* %scevgep68, align 8, !tbaa !1
+ %68 = load i64, i64* %scevgep68, align 8
%inc.5 = add nsw i32 %inc.4, 1
- %69 = load i64, i64* %var4, align 8, !tbaa !1
+ %69 = load i64, i64* %var4, align 8
%70 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %66, i64 %68, i64 %69)
%71 = call i8* @llvm.hexagon.circ.ldd(i8* %67, i8* %3, i32 %or, i32 -8)
%scevgep69 = getelementptr i64, i64* %scevgep68, i32 1
- %72 = load i64, i64* %scevgep69, align 8, !tbaa !1
+ %72 = load i64, i64* %scevgep69, align 8
%inc.6 = add nsw i32 %inc.5, 1
- %73 = load i64, i64* %var4, align 8, !tbaa !1
+ %73 = load i64, i64* %var4, align 8
%74 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %70, i64 %72, i64 %73)
%75 = call i8* @llvm.hexagon.circ.ldd(i8* %71, i8* %3, i32 %or, i32 -8)
%scevgep70 = getelementptr i64, i64* %scevgep69, i32 1
- %76 = load i64, i64* %scevgep70, align 8, !tbaa !1
+ %76 = load i64, i64* %scevgep70, align 8
%inc.7 = add nsw i32 %inc.6, 1
- %77 = load i64, i64* %var4, align 8, !tbaa !1
+ %77 = load i64, i64* %var4, align 8
%78 = call i64 @llvm.hexagon.M2.vdmacs.s1(i64 %74, i64 %76, i64 %77)
%cmp.7 = icmp slt i32 %inc.7, %sub
%scevgep71 = getelementptr i64, i64* %scevgep70, i32 1
declare i64 @llvm.hexagon.M2.vdmacs.s1(i64, i64, i64) nounwind readnone
declare i32 @llvm.hexagon.S2.vrndpackwhs(i64) nounwind readnone
-
-!0 = !{!"long long", !1}
-!1 = !{!"omnipotent char", !2}
-!2 = !{!"Simple C/C++ TBAA"}