@@ -5,43 +5,82 @@ target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
55
66define void @sve_truncs () {
77; CHECK-LABEL: 'sve_truncs'
8- ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_v2i16_to_i1 = trunc <vscale x 2 x i16> undef to <vscale x 2 x i1>
9- ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_v2i32_to_i1 = trunc <vscale x 2 x i32> undef to <vscale x 2 x i1>
10- ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_v2i64_to_i1 = trunc <vscale x 2 x i64> undef to <vscale x 2 x i1>
11- ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_v4i16_to_i1 = trunc <vscale x 4 x i16> undef to <vscale x 4 x i1>
12- ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_v4i32_to_i1 = trunc <vscale x 4 x i32> undef to <vscale x 4 x i1>
13- ; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %trunc_v4i64_to_i1 = trunc <vscale x 4 x i64> undef to <vscale x 4 x i1>
14- ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_v8i16_to_i1 = trunc <vscale x 8 x i16> undef to <vscale x 8 x i1>
15- ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %trunc_v8i32_to_i1 = trunc <vscale x 8 x i32> undef to <vscale x 8 x i1>
16- ; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %trunc_v8i64_to_i1 = trunc <vscale x 8 x i64> undef to <vscale x 8 x i1>
17- ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_v2i32_to_i16 = trunc <vscale x 2 x i32> undef to <vscale x 2 x i16>
18- ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_v2i64_to_i32 = trunc <vscale x 2 x i64> undef to <vscale x 2 x i32>
19- ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_v4i32_to_i16 = trunc <vscale x 4 x i32> undef to <vscale x 4 x i16>
20- ; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %trunc_v4i64_to_i32 = trunc <vscale x 4 x i64> undef to <vscale x 4 x i32>
21- ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %trunc_v8i32_to_i16 = trunc <vscale x 8 x i32> undef to <vscale x 8 x i16>
22- ; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %trunc_v8i64_to_i32 = trunc <vscale x 8 x i64> undef to <vscale x 8 x i32>
8+ ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %trunc_nxv2i8_to_i1 = trunc <vscale x 2 x i8> undef to <vscale x 2 x i1>
9+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv2i16_to_i1 = trunc <vscale x 2 x i16> undef to <vscale x 2 x i1>
10+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv2i32_to_i1 = trunc <vscale x 2 x i32> undef to <vscale x 2 x i1>
11+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv2i64_to_i1 = trunc <vscale x 2 x i64> undef to <vscale x 2 x i1>
12+ ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %trunc_nxv4i8_to_i1 = trunc <vscale x 4 x i8> undef to <vscale x 4 x i1>
13+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv4i16_to_i1 = trunc <vscale x 4 x i16> undef to <vscale x 4 x i1>
14+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv4i32_to_i1 = trunc <vscale x 4 x i32> undef to <vscale x 4 x i1>
15+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %trunc_nxv4i64_to_i1 = trunc <vscale x 4 x i64> undef to <vscale x 4 x i1>
16+ ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %trunc_nxv8i8_to_i1 = trunc <vscale x 8 x i8> undef to <vscale x 8 x i1>
17+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv8i16_to_i1 = trunc <vscale x 8 x i16> undef to <vscale x 8 x i1>
18+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %trunc_nxv8i32_to_i1 = trunc <vscale x 8 x i32> undef to <vscale x 8 x i1>
19+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %trunc_nxv8i64_to_i1 = trunc <vscale x 8 x i64> undef to <vscale x 8 x i1>
20+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %trunc_nxv2i16_to_i8 = trunc <vscale x 2 x i16> undef to <vscale x 2 x i8>
21+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %trunc_nxv2i32_to_i8 = trunc <vscale x 2 x i32> undef to <vscale x 2 x i8>
22+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %trunc_nxv2i64_to_i8 = trunc <vscale x 2 x i64> undef to <vscale x 2 x i8>
23+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv2i32_to_i16 = trunc <vscale x 2 x i32> undef to <vscale x 2 x i16>
24+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %trunc_nxv2i64_to_i16 = trunc <vscale x 2 x i64> undef to <vscale x 2 x i16>
25+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv2i64_to_i32 = trunc <vscale x 2 x i64> undef to <vscale x 2 x i32>
26+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %trunc_nxv4i16_to_i8 = trunc <vscale x 4 x i16> undef to <vscale x 4 x i8>
27+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %trunc_nxv4i32_to_i8 = trunc <vscale x 4 x i32> undef to <vscale x 4 x i8>
28+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv4i64_to_i8 = trunc <vscale x 4 x i64> undef to <vscale x 4 x i8>
29+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv4i32_to_i16 = trunc <vscale x 4 x i32> undef to <vscale x 4 x i16>
30+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv4i64_to_i16 = trunc <vscale x 4 x i64> undef to <vscale x 4 x i16>
31+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %trunc_nxv4i64_to_i32 = trunc <vscale x 4 x i64> undef to <vscale x 4 x i32>
32+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %trunc_nxv8i16_to_i8 = trunc <vscale x 8 x i16> undef to <vscale x 8 x i8>
33+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv8i32_to_i8 = trunc <vscale x 8 x i32> undef to <vscale x 8 x i8>
34+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %trunc_nxv8i64_to_i8 = trunc <vscale x 8 x i64> undef to <vscale x 8 x i8>
35+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %trunc_nxv8i32_to_i16 = trunc <vscale x 8 x i32> undef to <vscale x 8 x i16>
36+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %trunc_nxv8i64_to_i16 = trunc <vscale x 8 x i64> undef to <vscale x 8 x i16>
37+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %trunc_nxv16i16_to_i8 = trunc <vscale x 16 x i16> undef to <vscale x 16 x i8>
38+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %trunc_nxv16i32_to_i8 = trunc <vscale x 16 x i32> undef to <vscale x 16 x i8>
39+ ; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %trunc_nxv16i64_to_i8 = trunc <vscale x 16 x i64> undef to <vscale x 16 x i8>
2340; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
2441;
25- %trunc_v2i16_to_i1 = trunc <vscale x 2 x i16 > undef to <vscale x 2 x i1 >
26- %trunc_v2i32_to_i1 = trunc <vscale x 2 x i32 > undef to <vscale x 2 x i1 >
27- %trunc_v2i64_to_i1 = trunc <vscale x 2 x i64 > undef to <vscale x 2 x i1 >
42+ %trunc_nxv2i8_to_i1 = trunc <vscale x 2 x i8 > undef to <vscale x 2 x i1 >
43+ %trunc_nxv2i16_to_i1 = trunc <vscale x 2 x i16 > undef to <vscale x 2 x i1 >
44+ %trunc_nxv2i32_to_i1 = trunc <vscale x 2 x i32 > undef to <vscale x 2 x i1 >
45+ %trunc_nxv2i64_to_i1 = trunc <vscale x 2 x i64 > undef to <vscale x 2 x i1 >
2846
29- %trunc_v4i16_to_i1 = trunc <vscale x 4 x i16 > undef to <vscale x 4 x i1 >
30- %trunc_v4i32_to_i1 = trunc <vscale x 4 x i32 > undef to <vscale x 4 x i1 >
31- %trunc_v4i64_to_i1 = trunc <vscale x 4 x i64 > undef to <vscale x 4 x i1 >
47+ %trunc_nxv4i8_to_i1 = trunc <vscale x 4 x i8 > undef to <vscale x 4 x i1 >
48+ %trunc_nxv4i16_to_i1 = trunc <vscale x 4 x i16 > undef to <vscale x 4 x i1 >
49+ %trunc_nxv4i32_to_i1 = trunc <vscale x 4 x i32 > undef to <vscale x 4 x i1 >
50+ %trunc_nxv4i64_to_i1 = trunc <vscale x 4 x i64 > undef to <vscale x 4 x i1 >
3251
33- %trunc_v8i16_to_i1 = trunc <vscale x 8 x i16 > undef to <vscale x 8 x i1 >
34- %trunc_v8i32_to_i1 = trunc <vscale x 8 x i32 > undef to <vscale x 8 x i1 >
35- %trunc_v8i64_to_i1 = trunc <vscale x 8 x i64 > undef to <vscale x 8 x i1 >
52+ %trunc_nxv8i8_to_i1 = trunc <vscale x 8 x i8 > undef to <vscale x 8 x i1 >
53+ %trunc_nxv8i16_to_i1 = trunc <vscale x 8 x i16 > undef to <vscale x 8 x i1 >
54+ %trunc_nxv8i32_to_i1 = trunc <vscale x 8 x i32 > undef to <vscale x 8 x i1 >
55+ %trunc_nxv8i64_to_i1 = trunc <vscale x 8 x i64 > undef to <vscale x 8 x i1 >
3656
37- %trunc_v2i32_to_i16 = trunc <vscale x 2 x i32 > undef to <vscale x 2 x i16 >
38- %trunc_v2i64_to_i32 = trunc <vscale x 2 x i64 > undef to <vscale x 2 x i32 >
57+ ; Truncates to unpacked or legal types with vscale x 2 elements
58+ %trunc_nxv2i16_to_i8 = trunc <vscale x 2 x i16 > undef to <vscale x 2 x i8 >
59+ %trunc_nxv2i32_to_i8 = trunc <vscale x 2 x i32 > undef to <vscale x 2 x i8 >
60+ %trunc_nxv2i64_to_i8 = trunc <vscale x 2 x i64 > undef to <vscale x 2 x i8 >
61+ %trunc_nxv2i32_to_i16 = trunc <vscale x 2 x i32 > undef to <vscale x 2 x i16 >
62+ %trunc_nxv2i64_to_i16 = trunc <vscale x 2 x i64 > undef to <vscale x 2 x i16 >
63+ %trunc_nxv2i64_to_i32 = trunc <vscale x 2 x i64 > undef to <vscale x 2 x i32 >
3964
40- %trunc_v4i32_to_i16 = trunc <vscale x 4 x i32 > undef to <vscale x 4 x i16 >
41- %trunc_v4i64_to_i32 = trunc <vscale x 4 x i64 > undef to <vscale x 4 x i32 >
65+ ; Truncates to unpacked or legal with vscale x 4 elements
66+ %trunc_nxv4i16_to_i8 = trunc <vscale x 4 x i16 > undef to <vscale x 4 x i8 >
67+ %trunc_nxv4i32_to_i8 = trunc <vscale x 4 x i32 > undef to <vscale x 4 x i8 >
68+ %trunc_nxv4i64_to_i8 = trunc <vscale x 4 x i64 > undef to <vscale x 4 x i8 >
69+ %trunc_nxv4i32_to_i16 = trunc <vscale x 4 x i32 > undef to <vscale x 4 x i16 >
70+ %trunc_nxv4i64_to_i16 = trunc <vscale x 4 x i64 > undef to <vscale x 4 x i16 >
71+ %trunc_nxv4i64_to_i32 = trunc <vscale x 4 x i64 > undef to <vscale x 4 x i32 >
4272
43- %trunc_v8i32_to_i16 = trunc <vscale x 8 x i32 > undef to <vscale x 8 x i16 >
44- %trunc_v8i64_to_i32 = trunc <vscale x 8 x i64 > undef to <vscale x 8 x i32 >
73+ ; Truncates to unpacked or legal with vscale x 8 elements
74+ %trunc_nxv8i16_to_i8 = trunc <vscale x 8 x i16 > undef to <vscale x 8 x i8 >
75+ %trunc_nxv8i32_to_i8 = trunc <vscale x 8 x i32 > undef to <vscale x 8 x i8 >
76+ %trunc_nxv8i64_to_i8 = trunc <vscale x 8 x i64 > undef to <vscale x 8 x i8 >
77+ %trunc_nxv8i32_to_i16 = trunc <vscale x 8 x i32 > undef to <vscale x 8 x i16 >
78+ %trunc_nxv8i64_to_i16 = trunc <vscale x 8 x i64 > undef to <vscale x 8 x i16 >
79+
80+ ; Truncates to unpacked or legal with vscale x 16 elements
81+ %trunc_nxv16i16_to_i8 = trunc <vscale x 16 x i16 > undef to <vscale x 16 x i8 >
82+ %trunc_nxv16i32_to_i8 = trunc <vscale x 16 x i32 > undef to <vscale x 16 x i8 >
83+ %trunc_nxv16i64_to_i8 = trunc <vscale x 16 x i64 > undef to <vscale x 16 x i8 >
4584
4685 ret void
4786}
0 commit comments