[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AArch64 / GlobalISel / select-intrinsic-round.mir
blob3745e4a942d192cc6fceeb23eb3f501284598e9f
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
4 ...
5 ---
6 name:            test_f64.intrinsic_round
7 alignment:       4
8 legalized:       true
9 regBankSelected: true
10 tracksRegLiveness: true
11 machineFunctionInfo: {}
12 body:             |
13   bb.0:
14     liveins: $d0
16     ; CHECK-LABEL: name: test_f64.intrinsic_round
17     ; CHECK: liveins: $d0
18     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
19     ; CHECK: [[FRINTADr:%[0-9]+]]:fpr64 = FRINTADr [[COPY]]
20     ; CHECK: $d0 = COPY [[FRINTADr]]
21     ; CHECK: RET_ReallyLR implicit $d0
22     %0:fpr(s64) = COPY $d0
23     %1:fpr(s64) = G_INTRINSIC_ROUND %0
24     $d0 = COPY %1(s64)
25     RET_ReallyLR implicit $d0
27 ...
28 ---
29 name:            test_f32.intrinsic_round
30 alignment:       4
31 legalized:       true
32 regBankSelected: true
33 tracksRegLiveness: true
34 machineFunctionInfo: {}
35 body:             |
36   bb.0:
37     liveins: $s0
39     ; CHECK-LABEL: name: test_f32.intrinsic_round
40     ; CHECK: liveins: $s0
41     ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
42     ; CHECK: [[FRINTASr:%[0-9]+]]:fpr32 = FRINTASr [[COPY]]
43     ; CHECK: $s0 = COPY [[FRINTASr]]
44     ; CHECK: RET_ReallyLR implicit $s0
45     %0:fpr(s32) = COPY $s0
46     %1:fpr(s32) = G_INTRINSIC_ROUND %0
47     $s0 = COPY %1(s32)
48     RET_ReallyLR implicit $s0
50 ...
51 ---
52 name:            test_f16.intrinsic_round
53 alignment:       4
54 legalized:       true
55 regBankSelected: true
56 tracksRegLiveness: true
57 frameInfo:
58   maxCallFrameSize: 0
59 machineFunctionInfo: {}
60 body:             |
61   bb.0:
62     liveins: $h0
64     ; CHECK-LABEL: name: test_f16.intrinsic_round
65     ; CHECK: liveins: $h0
66     ; CHECK: [[COPY:%[0-9]+]]:fpr16 = COPY $h0
67     ; CHECK: [[FRINTAHr:%[0-9]+]]:fpr16 = FRINTAHr [[COPY]]
68     ; CHECK: $h0 = COPY [[FRINTAHr]]
69     ; CHECK: RET_ReallyLR implicit $h0
70     %0:fpr(s16) = COPY $h0
71     %1:fpr(s16) = G_INTRINSIC_ROUND %0
72     $h0 = COPY %1(s16)
73     RET_ReallyLR implicit $h0
75 ...
76 ---
77 name:            test_v4f16.intrinsic_round
78 alignment:       4
79 legalized:       true
80 regBankSelected: true
81 tracksRegLiveness: true
82 frameInfo:
83   maxCallFrameSize: 0
84 machineFunctionInfo: {}
85 body:             |
86   bb.0:
87     liveins: $d0
89     ; CHECK-LABEL: name: test_v4f16.intrinsic_round
90     ; CHECK: liveins: $d0
91     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
92     ; CHECK: [[FRINTAv4f16_:%[0-9]+]]:fpr64 = FRINTAv4f16 [[COPY]]
93     ; CHECK: $d0 = COPY [[FRINTAv4f16_]]
94     ; CHECK: RET_ReallyLR implicit $d0
95     %0:fpr(<4 x s16>) = COPY $d0
96     %1:fpr(<4 x s16>) = G_INTRINSIC_ROUND %0
97     $d0 = COPY %1(<4 x s16>)
98     RET_ReallyLR implicit $d0
102 name:            test_v8f16.intrinsic_round
103 alignment:       4
104 legalized:       true
105 regBankSelected: true
106 tracksRegLiveness: true
107 frameInfo:
108   maxCallFrameSize: 0
109 machineFunctionInfo: {}
110 body:             |
111   bb.0:
112     liveins: $q0
114     ; CHECK-LABEL: name: test_v8f16.intrinsic_round
115     ; CHECK: liveins: $q0
116     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
117     ; CHECK: [[FRINTAv8f16_:%[0-9]+]]:fpr128 = FRINTAv8f16 [[COPY]]
118     ; CHECK: $q0 = COPY [[FRINTAv8f16_]]
119     ; CHECK: RET_ReallyLR implicit $q0
120     %0:fpr(<8 x s16>) = COPY $q0
121     %1:fpr(<8 x s16>) = G_INTRINSIC_ROUND %0
122     $q0 = COPY %1(<8 x s16>)
123     RET_ReallyLR implicit $q0
127 name:            test_v2f32.intrinsic_round
128 alignment:       4
129 legalized:       true
130 regBankSelected: true
131 tracksRegLiveness: true
132 frameInfo:
133   maxCallFrameSize: 0
134 machineFunctionInfo: {}
135 body:             |
136   bb.0:
137     liveins: $d0
139     ; CHECK-LABEL: name: test_v2f32.intrinsic_round
140     ; CHECK: liveins: $d0
141     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
142     ; CHECK: [[FRINTAv2f32_:%[0-9]+]]:fpr64 = FRINTAv2f32 [[COPY]]
143     ; CHECK: $d0 = COPY [[FRINTAv2f32_]]
144     ; CHECK: RET_ReallyLR implicit $d0
145     %0:fpr(<2 x s32>) = COPY $d0
146     %1:fpr(<2 x s32>) = G_INTRINSIC_ROUND %0
147     $d0 = COPY %1(<2 x s32>)
148     RET_ReallyLR implicit $d0
152 name:            test_v4f32.intrinsic_round
153 alignment:       4
154 legalized:       true
155 regBankSelected: true
156 tracksRegLiveness: true
157 frameInfo:
158   maxCallFrameSize: 0
159 machineFunctionInfo: {}
160 body:             |
161   bb.0:
162     liveins: $q0
164     ; CHECK-LABEL: name: test_v4f32.intrinsic_round
165     ; CHECK: liveins: $q0
166     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
167     ; CHECK: [[FRINTAv4f32_:%[0-9]+]]:fpr128 = FRINTAv4f32 [[COPY]]
168     ; CHECK: $q0 = COPY [[FRINTAv4f32_]]
169     ; CHECK: RET_ReallyLR implicit $q0
170     %0:fpr(<4 x s32>) = COPY $q0
171     %1:fpr(<4 x s32>) = G_INTRINSIC_ROUND %0
172     $q0 = COPY %1(<4 x s32>)
173     RET_ReallyLR implicit $q0
177 name:            test_v2f64.intrinsic_round
178 alignment:       4
179 legalized:       true
180 regBankSelected: true
181 tracksRegLiveness: true
182 frameInfo:
183   maxCallFrameSize: 0
184 machineFunctionInfo: {}
185 body:             |
186   bb.0:
187     liveins: $q0
189     ; CHECK-LABEL: name: test_v2f64.intrinsic_round
190     ; CHECK: liveins: $q0
191     ; CHECK: [[COPY:%[0-9]+]]:fpr128 = COPY $q0
192     ; CHECK: [[FRINTAv2f64_:%[0-9]+]]:fpr128 = FRINTAv2f64 [[COPY]]
193     ; CHECK: $q0 = COPY [[FRINTAv2f64_]]
194     ; CHECK: RET_ReallyLR implicit $q0
195     %0:fpr(<2 x s64>) = COPY $q0
196     %1:fpr(<2 x s64>) = G_INTRINSIC_ROUND %0
197     $q0 = COPY %1(<2 x s64>)
198     RET_ReallyLR implicit $q0