Commit 005608a
authored
llvmpasses: force vector width for compatibility with non-x86 hosts. (JuliaLang#56300)
The pipeline-prints test currently fails when running on an
aarch64-macos device:
```
/Users/tim/Julia/src/julia/test/llvmpasses/pipeline-prints.ll:309:23: error: AFTERVECTORIZATION: expected string not found in input
; AFTERVECTORIZATION: vector.body
^
<stdin>:2:40: note: scanning from here
; *** IR Dump Before AfterVectorizationMarkerPass on julia_f_199 ***
^
<stdin>:47:27: note: possible intended match here
; *** IR Dump Before AfterVectorizationMarkerPass on jfptr_f_200 ***
^
Input file: <stdin>
Check file: /Users/tim/Julia/src/julia/test/llvmpasses/pipeline-prints.ll
-dump-input=help explains the following input dump.
Input was:
<<<<<<
1: opt: WARNING: failed to create target machine for 'x86_64-unknown-linux-gnu': unable to get target for 'x86_64-unknown-linux-gnu', see --version and --triple.
2: ; *** IR Dump Before AfterVectorizationMarkerPass on julia_f_199 ***
check:309'0 X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
3: define i64 @julia_f_199(ptr addrspace(10) noundef nonnull align 16 dereferenceable(40) %0) #0 !dbg !4 {
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4: top:
check:309'0 ~~~~~
5: %1 = call ptr @julia.get_pgcstack()
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6: %ptls_field = getelementptr inbounds ptr, ptr %1, i64 2
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7: %ptls_load45 = load ptr, ptr %ptls_field, align 8, !tbaa !8
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.
.
.
42:
check:309'0 ~
43: L41: ; preds = %L41.loopexit, %L17, %top
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44: %value_phi10 = phi i64 [ 0, %top ], [ %7, %L17 ], [ %.lcssa, %L41.loopexit ]
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45: ret i64 %value_phi10, !dbg !52
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46: }
check:309'0 ~~
47: ; *** IR Dump Before AfterVectorizationMarkerPass on jfptr_f_200 ***
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:309'1 ? possible intended match
48: ; Function Attrs: noinline optnone
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49: define nonnull ptr addrspace(10) @jfptr_f_200(ptr addrspace(10) %0, ptr noalias nocapture noundef readonly %1, i32 %2) #1 {
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50: top:
check:309'0 ~~~~~
51: %3 = call ptr @julia.get_pgcstack()
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52: %4 = getelementptr inbounds ptr addrspace(10), ptr %1, i32 0
check:309'0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.
.
.
>>>>>>
--
********************
Failed Tests (1):
Julia :: pipeline-prints.ll
```
The problem is that these tests assume x86_64, which fails because the
target isn't available, so it presumably uses the native target which
has different vectorization characteristics:
```
❯ ./usr/tools/opt --load-pass-plugin=libjulia-codegen.dylib -passes='julia' --print-before=AfterVectorization -o /dev/null ../../test/llvmpasses/pipeline-prints.ll
./usr/tools/opt: WARNING: failed to create target machine for 'x86_64-unknown-linux-gnu': unable to get target for 'x86_64-unknown-linux-gnu', see --version and --triple.
```
There's other tests that assume this (e.g. the `fma` cpufeatures one),
but they don't fail, so I've left them as is.1 parent 6c70bf7 commit 005608a
1 file changed
+2
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
311 | 311 | | |
312 | 312 | | |
313 | 313 | | |
314 | | - | |
| 314 | + | |
0 commit comments