The isEssentiallyExtractHighSubvector function currently calls
getVectorNumElements on a type that in specific cases might be scalable.
Since this function only has correct behaviour at the moment on scalable
types anyway, the function can just return false when given a fixed type.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Unit Tests
Time | Test | |
---|---|---|
5,710 ms | x64 debian > libarcher.races::task-dependency.c |
Event Timeline
llvm/test/CodeGen/AArch64/sve-no-typesize-warnings.ll | ||
---|---|---|
34 | This test is missing a vscale_range attribute that would have triggered the assertion failure |
llvm/test/CodeGen/AArch64/sve-no-typesize-warnings.ll | ||
---|---|---|
34 | The test also looks more complicated than need be. I've had a play and came up with: ; RUN: llc < %s | FileCheck %s target triple = "aarch64-unknown-linux-gnu" define <4 x i32> @sve_no_typesize_warning(<vscale x 8 x i16> %a, <4 x i16> %b) #0 { %a.lo = call <4 x i16> @llvm.experimental.vector.extract.v4i16.nxv8i16(<vscale x 8 x i16> %a, i64 0) %a.lo.zext = zext <4 x i16> %a.lo to <4 x i32> %b.zext = zext <4 x i16> %b to <4 x i32> %add = add <4 x i32> %a.lo.zext, %b.zext ret <4 x i32> %add } declare <4 x i16> @llvm.experimental.vector.extract.v4i16.nxv8i16(<vscale x 8 x i16>, i64) attributes #0 = { "target-features"="+sve" } Which looks to do the job. The test is using only scalable and NEON fixed length types so there's no need for vscale_range. |
Comment Actions
Change test as suggested by @paulwalker-arm
llvm/test/CodeGen/AArch64/sve-no-typesize-warnings.ll | ||
---|---|---|
34 | Looks good to me, I've just changed the test to be this instead. Thanks! |
This test is missing a vscale_range attribute that would have triggered the assertion failure