46 lines · plain
1; RUN: llc -mtriple=hexagon -hexagon-hvx-widen=32 < %s | FileCheck %s2 3; Test that the Hexagon Vector Combine pass computes the address4; correctly when the loading objects that contain extra padding5; between successive objects.6 7; CHECK: [[REG:r[0-9]+]] = add(r{{[0-9]+}},#2432)8; CHECK: = vmem([[REG]]+#0)9 10define dllexport void @test(ptr %a0) local_unnamed_addr #0 {11b0:12 %v0 = add nuw nsw i32 0, 304013 %v1 = load i8, ptr undef, align 114 %v2 = insertelement <19 x i8> undef, i8 %v1, i32 015 %v3 = shufflevector <19 x i8> %v2, <19 x i8> undef, <19 x i32> zeroinitializer16 %v4 = getelementptr inbounds i8, ptr %a0, i32 %v017 %v6 = load <19 x i8>, ptr %v4, align 118 %v7 = mul <19 x i8> %v3, %v619 %v8 = add <19 x i8> %v7, zeroinitializer20 %v9 = add <19 x i8> zeroinitializer, %v821 %v10 = add <19 x i8> zeroinitializer, %v922 %v11 = add <19 x i8> zeroinitializer, %v1023 %v12 = add <19 x i8> zeroinitializer, %v1124 %v13 = add <19 x i8> zeroinitializer, %v1225 %v14 = add <19 x i8> zeroinitializer, %v1326 %v15 = add <19 x i8> zeroinitializer, %v1427 %v16 = add <19 x i8> zeroinitializer, %v1528 %v17 = add <19 x i8> zeroinitializer, %v1629 %v18 = add <19 x i8> zeroinitializer, %v1730 %v19 = load i8, ptr undef, align 131 %v20 = insertelement <19 x i8> undef, i8 %v19, i32 032 %v21 = shufflevector <19 x i8> %v20, <19 x i8> undef, <19 x i32> zeroinitializer33 %v22 = add nuw nsw i32 0, 547234 %v23 = getelementptr inbounds i8, ptr %a0, i32 %v2235 %v25 = load <19 x i8>, ptr %v23, align 136 %v26 = mul <19 x i8> %v21, %v2537 %v27 = add <19 x i8> %v26, %v1838 %v28 = add <19 x i8> zeroinitializer, %v2739 %v29 = add <19 x i8> zeroinitializer, %v2840 %v30 = add <19 x i8> zeroinitializer, %v2941 store <19 x i8> %v30, ptr %a0, align 142 ret void43}44 45attributes #0 = { "target-features"="+hvxv66,+hvx-length128b" }46