mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-06 21:05:51 +00:00
936285440b
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206592 91177308-0d34-0410-b5e6-96231b3b80d8
31 lines
1.2 KiB
LLVM
31 lines
1.2 KiB
LLVM
; RUN: llc < %s -mtriple=aarch64-none-linux-gnu -mattr=+neon | FileCheck %s
|
|
; RUN: llc < %s -mtriple=arm64-none-linux-gnu -mattr=+neon | FileCheck %s
|
|
|
|
; Check that the DAGCombiner does not crash with an assertion failure
|
|
; when performing a target specific combine to simplify a 'or' dag node
|
|
; according to the following rule:
|
|
; (or (and B, A), (and C, ~A)) => (VBSL A, B, C)
|
|
; The assertion failure was caused by an invalid comparison between APInt
|
|
; values with different 'BitWidth'.
|
|
|
|
define <8 x i8> @test1(<8 x i8> %a, <8 x i8> %b) {
|
|
%tmp1 = and <8 x i8> %a, < i8 -1, i8 -1, i8 0, i8 0, i8 -1, i8 -1, i8 0, i8 0 >
|
|
%tmp2 = and <8 x i8> %b, < i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0 >
|
|
%tmp3 = or <8 x i8> %tmp1, %tmp2
|
|
ret <8 x i8> %tmp3
|
|
}
|
|
|
|
; CHECK-LABEL: test1
|
|
; CHECK: ret
|
|
|
|
define <16 x i8> @test2(<16 x i8> %a, <16 x i8> %b) {
|
|
%tmp1 = and <16 x i8> %a, < i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1 >
|
|
%tmp2 = and <16 x i8> %b, < i8 -1, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0 >
|
|
%tmp3 = or <16 x i8> %tmp1, %tmp2
|
|
ret <16 x i8> %tmp3
|
|
}
|
|
|
|
; CHECK-LABEL: test2
|
|
; CHECK: ret
|
|
|