mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 13:11:39 +01:00
ab043ff680
Essentially the same as the GEP change in r230786. A similar migration script can be used to update test cases, though a few more test case improvements/changes were required this time around: (r229269-r229278) import fileinput import sys import re pat = re.compile(r"((?:=|:|^)\s*load (?:atomic )?(?:volatile )?(.*?))(| addrspace\(\d+\) *)\*($| *(?:%|@|null|undef|blockaddress|getelementptr|addrspacecast|bitcast|inttoptr|\[\[[a-zA-Z]|\{\{).*$)") for line in sys.stdin: sys.stdout.write(re.sub(pat, r"\1, \2\3*\4", line)) Reviewers: rafael, dexonsmith, grosser Differential Revision: http://reviews.llvm.org/D7649 llvm-svn: 230794
81 lines
3.8 KiB
LLVM
81 lines
3.8 KiB
LLVM
; RUN: llc < %s -march=x86-64 -mcpu=corei7-avx -mattr=+avx
|
|
; Various missing patterns causing crashes.
|
|
; rdar://10538793
|
|
|
|
define void @t1() nounwind {
|
|
entry:
|
|
br label %loop.cond
|
|
|
|
loop.cond: ; preds = %t1.exit, %entry
|
|
br i1 false, label %return, label %loop
|
|
|
|
loop: ; preds = %loop.cond
|
|
br i1 undef, label %0, label %t1.exit
|
|
|
|
; <label>:0 ; preds = %loop
|
|
%1 = load <16 x i32>, <16 x i32> addrspace(1)* undef, align 64
|
|
%2 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> %1, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 16, i32 0, i32 0>
|
|
store <16 x i32> %2, <16 x i32> addrspace(1)* undef, align 64
|
|
br label %t1.exit
|
|
|
|
t1.exit: ; preds = %0, %loop
|
|
br label %loop.cond
|
|
|
|
return: ; preds = %loop.cond
|
|
ret void
|
|
}
|
|
|
|
define void @t2() nounwind {
|
|
br i1 undef, label %1, label %4
|
|
|
|
; <label>:1 ; preds = %0
|
|
%2 = load <16 x i32>, <16 x i32> addrspace(1)* undef, align 64
|
|
%3 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> %2, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 20, i32 0, i32 0, i32 0, i32 0>
|
|
store <16 x i32> %3, <16 x i32> addrspace(1)* undef, align 64
|
|
br label %4
|
|
|
|
; <label>:4 ; preds = %1, %0
|
|
ret void
|
|
}
|
|
|
|
define void @t3() nounwind {
|
|
entry:
|
|
br label %loop.cond
|
|
|
|
loop.cond: ; preds = %t2.exit, %entry
|
|
br i1 false, label %return, label %loop
|
|
|
|
loop: ; preds = %loop.cond
|
|
br i1 undef, label %0, label %t2.exit
|
|
|
|
; <label>:0 ; preds = %loop
|
|
%1 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> undef, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 25, i32 0>
|
|
%2 = load <16 x i32>, <16 x i32> addrspace(1)* undef, align 64
|
|
%3 = shufflevector <16 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>, <16 x i32> %2, <16 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 28, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0>
|
|
store <16 x i32> %3, <16 x i32> addrspace(1)* undef, align 64
|
|
br label %t2.exit
|
|
|
|
t2.exit: ; preds = %0, %loop
|
|
br label %loop.cond
|
|
|
|
return: ; preds = %loop.cond
|
|
ret void
|
|
}
|
|
|
|
define <3 x i64> @t4() nounwind {
|
|
entry:
|
|
%0 = load <2 x i64>, <2 x i64> addrspace(1)* undef, align 16
|
|
%1 = extractelement <2 x i64> %0, i32 0
|
|
%2 = insertelement <3 x i64> <i64 undef, i64 0, i64 0>, i64 %1, i32 0
|
|
ret <3 x i64> %2
|
|
}
|
|
|
|
define void @t5() nounwind {
|
|
entry:
|
|
%0 = shufflevector <2 x i64> zeroinitializer, <2 x i64> undef, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
|
|
%1 = shufflevector <8 x i64> <i64 0, i64 0, i64 0, i64 undef, i64 undef, i64 0, i64 0, i64 0>, <8 x i64> %0, <8 x i32> <i32 0, i32 1, i32 2, i32 9, i32 8, i32 5, i32 6, i32 7>
|
|
store <8 x i64> %1, <8 x i64> addrspace(1)* undef, align 64
|
|
|
|
ret void
|
|
}
|