xref: /llvm-project/llvm/test/Transforms/InstCombine/vscale_trunc.ll (revision 7203286329defc7976c719d8750712c0d5de9c31)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt < %s -passes=instcombine -S | FileCheck %s
3
4define i8 @vscale_trunc_i32toi8() vscale_range(1, 128) {
5; CHECK-LABEL: @vscale_trunc_i32toi8(
6; CHECK-NEXT:  entry:
7; CHECK-NEXT:    [[TMP0:%.*]] = call i8 @llvm.vscale.i8()
8; CHECK-NEXT:    ret i8 [[TMP0]]
9;
10entry:
11  %0 = call i32 @llvm.vscale.i32()
12  %1 = trunc i32 %0 to i8
13  ret i8 %1
14}
15
16
17define i8 @vscale_trunc_i32toi8_poison() vscale_range(1, 256) {
18; CHECK-LABEL: @vscale_trunc_i32toi8_poison(
19; CHECK-NEXT:  entry:
20; CHECK-NEXT:    [[TMP0:%.*]] = call i32 @llvm.vscale.i32()
21; CHECK-NEXT:    [[TMP1:%.*]] = trunc i32 [[TMP0]] to i8
22; CHECK-NEXT:    ret i8 [[TMP1]]
23;
24  entry:
25  %0 = call i32 @llvm.vscale.i32()
26  %1 = trunc i32 %0 to i8
27  ret i8 %1
28}
29
30define i8 @vscale_trunc_i32toi8_noAttr() {
31; CHECK-LABEL: @vscale_trunc_i32toi8_noAttr(
32; CHECK-NEXT:  entry:
33; CHECK-NEXT:    [[TMP0:%.*]] = call i32 @llvm.vscale.i32()
34; CHECK-NEXT:    [[TMP1:%.*]] = trunc i32 [[TMP0]] to i8
35; CHECK-NEXT:    ret i8 [[TMP1]]
36;
37  entry:
38  %0 = call i32 @llvm.vscale.i32()
39  %1 = trunc i32 %0 to i8
40  ret i8 %1
41}
42
43declare i32 @llvm.vscale.i32()
44