Test source: git
Source: <stdin> -- 1. ModuleToFunctionPassAdaptor -- 1. PassManager<Function> : Skipping NOP -- 2. SLPVectorizerPass ---------------------------------------- @h = global 128 bytes, align 16 define void @test() { entry: %sext.0 = sext i8 0 to i32 %sext.1 = sext i8 0 to i32 %lshr.0 = lshr i32 0, %sext.0 %lshr.1 = lshr i32 0, %sext.1 %or.0 = or i32 %lshr.0, 4294967295 %or.1 = or i32 %lshr.1, 0 %zext.0 = zext i32 %or.0 to i64 %zext.1 = zext i32 %or.1 to i64 store i64 %zext.0, ptr @h, align 8 %__constexpr_0 = gep inbounds ptr @h, 128 x i64 0, 8 x i64 1 store i64 %zext.1, ptr %__constexpr_0, align 8 ret void } Transformation seems to be correct! (syntactically equal) -- 3. SLPVectorizerPass ---------------------------------------- @h = global 128 bytes, align 16 define void @test() { entry: %sext.0 = sext i8 0 to i32 %sext.1 = sext i8 0 to i32 %lshr.0 = lshr i32 0, %sext.0 %lshr.1 = lshr i32 0, %sext.1 %or.0 = or i32 %lshr.0, 4294967295 %or.1 = or i32 %lshr.1, 0 %zext.0 = zext i32 %or.0 to i64 %zext.1 = zext i32 %or.1 to i64 store i64 %zext.0, ptr @h, align 16 %__constexpr_0 = gep inbounds ptr @h, 128 x i64 0, 8 x i64 1 store i64 %zext.1, ptr %__constexpr_0, align 8 ret void } => @h = global 128 bytes, align 16 define void @test() { entry: store <2 x i64> { -1, 0 }, ptr @h, align 16 ret void } Transformation doesn't verify! (unsound) ERROR: Mismatch in memory Example: Source: i32 %sext.0 = #x00000000 (0) i32 %sext.1 = #x00000000 (0) i32 %lshr.0 = #x00000000 (0) i32 %lshr.1 = #x00000000 (0) i32 %or.0 = #xffffffff (4294967295, -1) i32 %or.1 = #x00000000 (0) i64 %zext.0 = #x00000000ffffffff (4294967295) i64 %zext.1 = #x0000000000000000 (0) ptr %__constexpr_0 = pointer(non-local, block_id=0, offset=8) SOURCE MEMORY STATE =================== NON-LOCAL BLOCKS: Block 0 > size: 128 align: 16 alloc type: 0 alive: true address: 1920 Target: Mismatch in pointer(non-local, block_id=0, offset=0) Source value: #x00000000ffffffff Target value: #xffffffffffffffff Pass: SLPVectorizerPass Command line: '/home/nlopes/llvm/build/bin/opt' '-load=/home/nlopes/alive2/build/tv/tv.so' '-load-pass-plugin=/home/nlopes/alive2/build/tv/tv.so' '-tv-exit-on-error' '-S' '--passes=slp-vectorizer' '-mtriple=riscv64-unknown-linux-gnu' '-mattr=+v' '-slp-threshold=-5' '-tv-smt-to=20000' '-tv-report-dir=/home/nlopes/alive2/build/logs' '-tv-smt-stats' Wrote bitcode to: "/home/nlopes/alive2/build/logs/in_YTQZ1GmS_ZVN5.bc" ------------------- SMT STATS ------------------- Num queries: 4 Num invalid: 0 Num skips: 0 Num trivial: 14 (77.8%) Num timeout: 0 (0.0%) Num errors: 0 (0.0%) Num SAT: 4 (100.0%) Num UNSAT: 0 (0.0%) Alive2: Transform doesn't verify; aborting!
RUN: at line 2: /home/nlopes/alive2/build/opt-alive.sh -S --passes=slp-vectorizer -mtriple=riscv64-unknown-linux-gnu -mattr="+v" < /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/RISCV/init-ext-node-not-truncable.ll -slp-threshold=-5 | /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/RISCV/init-ext-node-not-truncable.ll + /home/nlopes/alive2/build/opt-alive.sh -S --passes=slp-vectorizer -mtriple=riscv64-unknown-linux-gnu -mattr=+v -slp-threshold=-5 + /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/RISCV/init-ext-node-not-truncable.ll FileCheck error: '<stdin>' is empty. FileCheck command line: /bitbucket/nlopes/llvm/build/bin/FileCheck /bitbucket/nlopes/llvm/llvm/test/Transforms/SLPVectorizer/RISCV/init-ext-node-not-truncable.ll