xref: /llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/select-intrinsic-trunc.mir (revision 27a8735a444fb311838f06f8d0d5b10ca9b541f6)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc %s -verify-machineinstrs -mtriple=aarch64-unknown-unknown -run-pass=instruction-select -mattr=+fullfp16 -o - | FileCheck %s
3
4...
5---
6name:            test_f64.intrinsic_trunc
7alignment:       4
8legalized:       true
9regBankSelected: true
10tracksRegLiveness: true
11machineFunctionInfo: {}
12body:             |
13  bb.0:
14    liveins: $d0
15
16    ; CHECK-LABEL: name: test_f64.intrinsic_trunc
17    ; CHECK: liveins: $d0
18    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
19    ; CHECK: [[FRINTZDr:%[0-9]+]]:fpr64 = nofpexcept FRINTZDr [[COPY]]
20    ; CHECK: $d0 = COPY [[FRINTZDr]]
21    ; CHECK: RET_ReallyLR implicit $d0
22    %0:fpr(s64) = COPY $d0
23    %1:fpr(s64) = G_INTRINSIC_TRUNC %0
24    $d0 = COPY %1(s64)
25    RET_ReallyLR implicit $d0
26
27...
28---
29name:            test_f32.intrinsic_trunc
30alignment:       4
31legalized:       true
32regBankSelected: true
33tracksRegLiveness: true
34machineFunctionInfo: {}
35body:             |
36  bb.0:
37    liveins: $s0
38
39    ; CHECK-LABEL: name: test_f32.intrinsic_trunc
40    ; CHECK: liveins: $s0
41    ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
42    ; CHECK: [[FRINTZSr:%[0-9]+]]:fpr32 = nofpexcept FRINTZSr [[COPY]]
43    ; CHECK: $s0 = COPY [[FRINTZSr]]
44    ; CHECK: RET_ReallyLR implicit $s0
45    %0:fpr(s32) = COPY $s0
46    %1:fpr(s32) = G_INTRINSIC_TRUNC %0
47    $s0 = COPY %1(s32)
48    RET_ReallyLR implicit $s0
49
50...
51---
52name:            test_f16.intrinsic_trunc
53alignment:       4
54legalized:       true
55regBankSelected: true
56tracksRegLiveness: true
57frameInfo:
58  maxCallFrameSize: 0
59machineFunctionInfo: {}
60body:             |
61  bb.0:
62    liveins: $h0
63
64    ; CHECK-LABEL: name: test_f16.intrinsic_trunc
65    ; CHECK: liveins: $h0
66    ; CHECK: [[COPY:%[0-9]+]]:fpr16 = COPY $h0
67    ; CHECK: [[FRINTZHr:%[0-9]+]]:fpr16 = nofpexcept FRINTZHr [[COPY]]
68    ; CHECK: $h0 = COPY [[FRINTZHr]]
69    ; CHECK: RET_ReallyLR implicit $h0
70    %0:fpr(s16) = COPY $h0
71    %1:fpr(s16) = G_INTRINSIC_TRUNC %0
72    $h0 = COPY %1(s16)
73    RET_ReallyLR implicit $h0
74
75...
76---
77name:            test_v4f16.intrinsic_trunc
78alignment:       4
79legalized:       true
80regBankSelected: true
81tracksRegLiveness: true
82frameInfo:
83  maxCallFrameSize: 0
84machineFunctionInfo: {}
85body:             |
86  bb.0:
87    liveins: $d0
88
89    ; CHECK-LABEL: name: test_v4f16.intrinsic_trunc
90    ; CHECK: liveins: $d0
91    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
92    ; CHECK: [[FRINTZv4f16_:%[0-9]+]]:fpr64 = nofpexcept FRINTZv4f16 [[COPY]]
93    ; CHECK: $d0 = COPY [[FRINTZv4f16_]]
94    ; CHECK: RET_ReallyLR implicit $d0
95    %0:fpr(<4 x s16>) = COPY $d0
96    %1:fpr(<4 x s16>) = G_INTRINSIC_TRUNC %0
97    $d0 = COPY %1(<4 x s16>)
98    RET_ReallyLR implicit $d0
99
100...
101---
102name:            test_v8f16.intrinsic_trunc
103alignment:       4
104legalized:       true
105regBankSelected: true
106tracksRegLiveness: true
107frameInfo:
108  maxCallFrameSize: 0
109machineFunctionInfo: {}
110body:             |
111  bb.0:
112    liveins: $q0
113
114    ; CHECK-LABEL: name: test_v8f16.intrinsic_trunc
115    ; CHECK: liveins: $q0
116    ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
117    ; CHECK: [[FRINTZv8f16_:%[0-9]+]]:fpr128 = nofpexcept FRINTZv8f16 [[COPY]]
118    ; CHECK: $q0 = COPY [[FRINTZv8f16_]]
119    ; CHECK: RET_ReallyLR implicit $q0
120    %0:fpr(<8 x s16>) = COPY $q0
121    %1:fpr(<8 x s16>) = G_INTRINSIC_TRUNC %0
122    $q0 = COPY %1(<8 x s16>)
123    RET_ReallyLR implicit $q0
124
125...
126---
127name:            test_v2f32.intrinsic_trunc
128alignment:       4
129legalized:       true
130regBankSelected: true
131tracksRegLiveness: true
132frameInfo:
133  maxCallFrameSize: 0
134machineFunctionInfo: {}
135body:             |
136  bb.0:
137    liveins: $d0
138
139    ; CHECK-LABEL: name: test_v2f32.intrinsic_trunc
140    ; CHECK: liveins: $d0
141    ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
142    ; CHECK: [[FRINTZv2f32_:%[0-9]+]]:fpr64 = nofpexcept FRINTZv2f32 [[COPY]]
143    ; CHECK: $d0 = COPY [[FRINTZv2f32_]]
144    ; CHECK: RET_ReallyLR implicit $d0
145    %0:fpr(<2 x s32>) = COPY $d0
146    %1:fpr(<2 x s32>) = G_INTRINSIC_TRUNC %0
147    $d0 = COPY %1(<2 x s32>)
148    RET_ReallyLR implicit $d0
149
150...
151---
152name:            test_v4f32.intrinsic_trunc
153alignment:       4
154legalized:       true
155regBankSelected: true
156tracksRegLiveness: true
157frameInfo:
158  maxCallFrameSize: 0
159machineFunctionInfo: {}
160body:             |
161  bb.0:
162    liveins: $q0
163
164    ; CHECK-LABEL: name: test_v4f32.intrinsic_trunc
165    ; CHECK: liveins: $q0
166    ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
167    ; CHECK: [[FRINTZv4f32_:%[0-9]+]]:fpr128 = nofpexcept FRINTZv4f32 [[COPY]]
168    ; CHECK: $q0 = COPY [[FRINTZv4f32_]]
169    ; CHECK: RET_ReallyLR implicit $q0
170    %0:fpr(<4 x s32>) = COPY $q0
171    %1:fpr(<4 x s32>) = G_INTRINSIC_TRUNC %0
172    $q0 = COPY %1(<4 x s32>)
173    RET_ReallyLR implicit $q0
174
175...
176---
177name:            test_v2f64.intrinsic_trunc
178alignment:       4
179legalized:       true
180regBankSelected: true
181tracksRegLiveness: true
182frameInfo:
183  maxCallFrameSize: 0
184machineFunctionInfo: {}
185body:             |
186  bb.0:
187    liveins: $q0
188
189    ; CHECK-LABEL: name: test_v2f64.intrinsic_trunc
190    ; CHECK: liveins: $q0
191    ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
192    ; CHECK: [[FRINTZv2f64_:%[0-9]+]]:fpr128 = nofpexcept FRINTZv2f64 [[COPY]]
193    ; CHECK: $q0 = COPY [[FRINTZv2f64_]]
194    ; CHECK: RET_ReallyLR implicit $q0
195    %0:fpr(<2 x s64>) = COPY $q0
196    %1:fpr(<2 x s64>) = G_INTRINSIC_TRUNC %0
197    $q0 = COPY %1(<2 x s64>)
198    RET_ReallyLR implicit $q0
199