Closed
Description
Summary
the test case introduced by #136761 is broken on at least loong64
, ppc64el
, mips64el
and ppc64
.
Command used
./x test tests/codegen/dont-shuffle-bswaps.rs --target powerpc64le-unknown-linux-gnu
Expected behaviour
the test should pass, or be ignored
Actual behaviour
the test fails because the FileCheck annotations don't match (because of missing vectorisation?)
Operating system
Debian experimental
HEAD
425e142686242c7e73f5e32c79071ae266f0f355
Additional context
Test output
------FileCheck stderr------------------------------
/build/reproducible-path/rustc-1.86.0+dfsg1/tests/codegen/dont-shuffle-bswaps.rs:17:10: error: OPT3: expected string not found in input
// OPT3: load <8 x i16>
^
/build/reproducible-path/rustc-1.86.0+dfsg1/build/powerpc64-unknown-linux-gnu/test/codegen/dont-shuffle-bswaps.OPT3/dont-shuffle-bswaps.ll:7:22: note: scanning from here
define void @convert(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 1 dereferenceable(16) %_0, ptr noalias nocapture noundef readonly align 2 dereferenceable(16) %value) unnamed_addr #0 {
^
/build/reproducible-path/rustc-1.86.0+dfsg1/build/powerpc64-unknown-linux-gnu/test/codegen/dont-shuffle-bswaps.OPT3/dont-shuffle-bswaps.ll:9:8: note: possible intended match here
%_4 = load i16, ptr %value, align 2, !noundef !2
^
Input file: /build/reproducible-path/rustc-1.86.0+dfsg1/build/powerpc64-unknown-linux-gnu/test/codegen/dont-shuffle-bswaps.OPT3/dont-shuffle-bswaps.ll
Check file: /build/reproducible-path/rustc-1.86.0+dfsg1/tests/codegen/dont-shuffle-bswaps.rs
-dump-input=help explains the following input dump.
Input was:
<<<<<<
1: ; ModuleID = 'dont_shuffle_bswaps.5c93dbc6d133cf57-cgu.0'
2: source_filename = "dont_shuffle_bswaps.5c93dbc6d133cf57-cgu.0"
3: target datalayout = "E-m:e-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512"
4: target triple = "powerpc64-unknown-linux-gnu"
5:
6: ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable
7: define void @convert(ptr dead_on_unwind noalias nocapture noundef writable writeonly sret([16 x i8]) align 1 dereferenceable(16) %_0, ptr noalias nocapture noundef readonly align 2 dereferenceable(16) %value) unnamed_addr #0 {
check:17'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
8: start:
check:17'0 ~~~~~~~
9: %_4 = load i16, ptr %value, align 2, !noundef !2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:17'1 ? possible intended match
10: %0 = tail call i16 @llvm.bswap.i16(i16 %_4)
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11: %1 = getelementptr inbounds i8, ptr %value, i64 2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12: %_6 = load i16, ptr %1, align 2, !noundef !2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13: %2 = tail call i16 @llvm.bswap.i16(i16 %_6)
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14: %3 = getelementptr inbounds i8, ptr %value, i64 4
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15: %_8 = load i16, ptr %3, align 2, !noundef !2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16: %4 = tail call i16 @llvm.bswap.i16(i16 %_8)
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17: %5 = getelementptr inbounds i8, ptr %value, i64 6
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18: %_10 = load i16, ptr %5, align 2, !noundef !2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19: %6 = tail call i16 @llvm.bswap.i16(i16 %_10)
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20: %7 = getelementptr inbounds i8, ptr %value, i64 8
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21: %_12 = load i16, ptr %7, align 2, !noundef !2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22: %8 = tail call i16 @llvm.bswap.i16(i16 %_12)
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23: %9 = getelementptr inbounds i8, ptr %value, i64 10
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24: %_14 = load i16, ptr %9, align 2, !noundef !2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
25: %10 = tail call i16 @llvm.bswap.i16(i16 %_14)
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26: %11 = getelementptr inbounds i8, ptr %value, i64 12
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27: %_16 = load i16, ptr %11, align 2, !noundef !2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28: %12 = tail call i16 @llvm.bswap.i16(i16 %_16)
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29: %13 = getelementptr inbounds i8, ptr %value, i64 14
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30: %_18 = load i16, ptr %13, align 2, !noundef !2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31: %14 = tail call i16 @llvm.bswap.i16(i16 %_18)
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32: store i16 %0, ptr %_0, align 1
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33: %addr16.sroa.2.0._0.sroa_idx = getelementptr inbounds i8, ptr %_0, i64 2
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34: store i16 %2, ptr %addr16.sroa.2.0._0.sroa_idx, align 1
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35: %addr16.sroa.3.0._0.sroa_idx = getelementptr inbounds i8, ptr %_0, i64 4
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36: store i16 %4, ptr %addr16.sroa.3.0._0.sroa_idx, align 1
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37: %addr16.sroa.4.0._0.sroa_idx = getelementptr inbounds i8, ptr %_0, i64 6
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38: store i16 %6, ptr %addr16.sroa.4.0._0.sroa_idx, align 1
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39: %addr16.sroa.5.0._0.sroa_idx = getelementptr inbounds i8, ptr %_0, i64 8
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40: store i16 %8, ptr %addr16.sroa.5.0._0.sroa_idx, align 1
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41: %addr16.sroa.6.0._0.sroa_idx = getelementptr inbounds i8, ptr %_0, i64 10
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42: store i16 %10, ptr %addr16.sroa.6.0._0.sroa_idx, align 1
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43: %addr16.sroa.7.0._0.sroa_idx = getelementptr inbounds i8, ptr %_0, i64 12
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44: store i16 %12, ptr %addr16.sroa.7.0._0.sroa_idx, align 1
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45: %addr16.sroa.8.0._0.sroa_idx = getelementptr inbounds i8, ptr %_0, i64 14
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46: store i16 %14, ptr %addr16.sroa.8.0._0.sroa_idx, align 1
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
47: ret void
check:17'0 ~~~~~~~~~~
48: }
check:17'0 ~~
49:
check:17'0 ~
50: ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51: declare i16 @llvm.bswap.i16(i16) #1
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52:
check:17'0 ~
53: attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable "probe-stack"="inline-asm" "target-cpu"="ppc64" }
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54: attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55:
check:17'0 ~
56: !llvm.module.flags = !{!0}
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
57: !llvm.ident = !{!1}
check:17'0 ~~~~~~~~~~~~~~~~~~~~
58:
check:17'0 ~
59: !0 = !{i32 8, !"PIC Level", i32 2}
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60: !1 = !{!"rustc version 1.86.0 (05f9846f8 2025-03-31) (built from a source tarball)"}
check:17'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61: !2 = !{}
check:17'0 ~~~~~~~~~
>>>>>>
------------------------------------------
error in revision `OPT3`: verification with 'FileCheck' failed
status: exit status: 1