xref: /llvm-project/llvm/test/Transforms/InstCombine/ExtractCast.ll (revision acdc419c897f8a9414c7a00c8908ac32312afee2)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -passes=instcombine -S -o - | FileCheck %s
3
4define i32 @a(<4 x i64> %I) {
5; CHECK-LABEL: @a(
6; CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i64> [[I:%.*]] to <8 x i32>
7; CHECK-NEXT:    [[K:%.*]] = extractelement <8 x i32> [[TMP1]], i64 6
8; CHECK-NEXT:    ret i32 [[K]]
9;
10  %J = trunc <4 x i64> %I to <4 x i32>
11  %K = extractelement <4 x i32> %J, i32 3
12  ret i32 %K
13}
14
15define i32 @b(<4 x float> %I) {
16; CHECK-LABEL: @b(
17; CHECK-NEXT:    [[TMP1:%.*]] = extractelement <4 x float> [[I:%.*]], i64 3
18; CHECK-NEXT:    [[K:%.*]] = fptosi float [[TMP1]] to i32
19; CHECK-NEXT:    ret i32 [[K]]
20;
21  %J = fptosi <4 x float> %I to <4 x i32>
22  %K = extractelement <4 x i32> %J, i32 3
23  ret i32 %K
24}
25
26