Technically this could happen with vector units that can't handle all legal scalar widths - but its good enough to use a generic crash test without a suitable target Fixes #157335
20 lines
928 B
LLVM
20 lines
928 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -passes=vector-combine -S %s | FileCheck %s
|
|
|
|
define <2 x double> @PR157335() {
|
|
; CHECK-LABEL: @PR157335(
|
|
; CHECK-NEXT: [[V0:%.*]] = fmul <2 x double> zeroinitializer, zeroinitializer
|
|
; CHECK-NEXT: [[V1:%.*]] = fmul <2 x double> zeroinitializer, zeroinitializer
|
|
; CHECK-NEXT: [[V2:%.*]] = fsub <2 x double> [[V0]], [[V1]]
|
|
; CHECK-NEXT: [[V3:%.*]] = fadd <2 x double> [[V0]], [[V1]]
|
|
; CHECK-NEXT: [[V4:%.*]] = shufflevector <2 x double> [[V2]], <2 x double> [[V3]], <2 x i32> <i32 0, i32 3>
|
|
; CHECK-NEXT: ret <2 x double> [[V4]]
|
|
;
|
|
%v0 = fmul <2 x double> zeroinitializer, zeroinitializer
|
|
%v1 = fmul <2 x double> zeroinitializer, zeroinitializer
|
|
%v2 = fsub <2 x double> %v0, %v1
|
|
%v3 = fadd <2 x double> %v0, %v1
|
|
%v4 = shufflevector <2 x double> %v2, <2 x double> %v3, <2 x i32> <i32 0, i32 3>
|
|
ret <2 x double> %v4
|
|
}
|