brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 1ec3dc3 Raw
53 lines · plain
1; RUN: opt -passes=instcombine -S < %s | FileCheck %s2 3define float @extract_from_zero_init_shuffle(<2 x float> %vec, i64 %idx) {4; CHECK-LABEL: @extract_from_zero_init_shuffle(5; CHECK-NEXT:    %extract = extractelement <2 x float> %vec, i64 06; CHECK-NEXT:    ret float %extract7;8  %shuffle = shufflevector <2 x float> %vec, <2 x float> poison, <4 x i32> zeroinitializer9  %extract = extractelement <4 x float> %shuffle, i64 %idx10  ret float %extract11}12 13 14define float @extract_from_general_splat(<2 x float> %vec, i64 %idx) {15; CHECK-LABEL: @extract_from_general_splat(16; CHECK-NEXT:    %extract = extractelement <2 x float> %vec, i64 117; CHECK-NEXT:    ret float %extract18;19  %shuffle = shufflevector <2 x float> %vec, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>20  %extract = extractelement <4 x float> %shuffle, i64 %idx21  ret float %extract22}23 24define float @extract_from_general_scalable_splat(<vscale x 2 x float> %vec, i64 %idx) {25; CHECK-LABEL: @extract_from_general_scalable_splat(26; CHECK-NEXT:    %extract = extractelement <vscale x 2 x float> %vec, i64 027; CHECK-NEXT:    ret float %extract28;29  %shuffle = shufflevector <vscale x 2 x float> %vec, <vscale x 2 x float> poison, <vscale x 4 x i32> zeroinitializer30  %extract = extractelement <vscale x 4 x float> %shuffle, i64 %idx31  ret float %extract32}33 34define float @extract_from_splat_with_poison_0(<2 x float> %vec, i64 %idx) {35; CHECK-LABEL: @extract_from_splat_with_poison_0(36; CHECK-NEXT:    %extract = extractelement <2 x float> %vec, i64 137; CHECK-NEXT:    ret float %extract38;39  %shuffle = shufflevector <2 x float> %vec, <2 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>40  %extract = extractelement <4 x float> %shuffle, i64 %idx41  ret float %extract42}43 44define float @extract_from_splat_with_poison_1(<2 x float> %vec, i64 %idx) {45; CHECK-LABEL: @extract_from_splat_with_poison_1(46; CHECK-NEXT:    %extract = extractelement <2 x float> %vec, i64 147; CHECK-NEXT:    ret float %extract48;49  %shuffle = shufflevector <2 x float> %vec, <2 x float> poison, <4 x i32> <i32 1, i32 poison, i32 1, i32 1>50  %extract = extractelement <4 x float> %shuffle, i64 %idx51  ret float %extract52}53