Simon Pilgrim ad3a0ae9e1
[VectorCombine] foldSelectShuffle - early-out cases where the max vector register width isn't large enough (#157430)
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
2025-09-08 12:04:23 +00:00

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
}