@@ -5,43 +5,82 @@ target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
5
5
6
6
define void @sve_truncs () {
7
7
; 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>
23
40
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
24
41
;
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 >
28
46
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 >
32
51
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 >
36
56
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 >
39
64
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 >
42
72
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 >
45
84
46
85
ret void
47
86
}
0 commit comments