@@ -6087,9 +6087,106 @@ define <2 x double> @test_v4f64_ogt2_s(<2 x double> %a, <2 x double> %b) #0 {
6087
6087
ret <2 x double > %res
6088
6088
}
6089
6089
6090
+ define <2 x float > @test_v2f32_ogt2_s (<2 x float > %a , <2 x float > %b ) #0 {
6091
+ ; SSE-32-LABEL: test_v2f32_ogt2_s:
6092
+ ; SSE-32: # %bb.0:
6093
+ ; SSE-32-NEXT: maxps %xmm1, %xmm0
6094
+ ; SSE-32-NEXT: retl
6095
+ ;
6096
+ ; SSE-64-LABEL: test_v2f32_ogt2_s:
6097
+ ; SSE-64: # %bb.0:
6098
+ ; SSE-64-NEXT: maxps %xmm1, %xmm0
6099
+ ; SSE-64-NEXT: retq
6100
+ ;
6101
+ ; AVX-32-LABEL: test_v2f32_ogt2_s:
6102
+ ; AVX-32: # %bb.0:
6103
+ ; AVX-32-NEXT: vmaxps %xmm1, %xmm0, %xmm0
6104
+ ; AVX-32-NEXT: retl
6105
+ ;
6106
+ ; AVX-64-LABEL: test_v2f32_ogt2_s:
6107
+ ; AVX-64: # %bb.0:
6108
+ ; AVX-64-NEXT: vmaxps %xmm1, %xmm0, %xmm0
6109
+ ; AVX-64-NEXT: retq
6110
+ ;
6111
+ ; AVX512-32-LABEL: test_v2f32_ogt2_s:
6112
+ ; AVX512-32: # %bb.0:
6113
+ ; AVX512-32-NEXT: vmaxps %xmm1, %xmm0, %xmm0
6114
+ ; AVX512-32-NEXT: retl
6115
+ ;
6116
+ ; AVX512-64-LABEL: test_v2f32_ogt2_s:
6117
+ ; AVX512-64: # %bb.0:
6118
+ ; AVX512-64-NEXT: vmaxps %xmm1, %xmm0, %xmm0
6119
+ ; AVX512-64-NEXT: retq
6120
+ ;
6121
+ ; AVX512F-32-LABEL: test_v2f32_ogt2_s:
6122
+ ; AVX512F-32: # %bb.0:
6123
+ ; AVX512F-32-NEXT: vmaxps %xmm1, %xmm0, %xmm0
6124
+ ; AVX512F-32-NEXT: retl
6125
+ ;
6126
+ ; AVX512F-64-LABEL: test_v2f32_ogt2_s:
6127
+ ; AVX512F-64: # %bb.0:
6128
+ ; AVX512F-64-NEXT: vmaxps %xmm1, %xmm0, %xmm0
6129
+ ; AVX512F-64-NEXT: retq
6130
+ %cond = call <2 x i1 > @llvm.experimental.constrained.fcmps.v2f32 (
6131
+ <2 x float > %a , <2 x float > %b , metadata !"ogt" ,
6132
+ metadata !"fpexcept.strict" )
6133
+ %res = select <2 x i1 > %cond , <2 x float > %a , <2 x float > %b
6134
+ ret <2 x float > %res
6135
+ }
6136
+
6137
+ define <2 x float > @test_v2f32_ule2_s (<2 x float > %a , <2 x float > %b ) #0 {
6138
+ ; SSE-32-LABEL: test_v2f32_ule2_s:
6139
+ ; SSE-32: # %bb.0:
6140
+ ; SSE-32-NEXT: minps %xmm0, %xmm1
6141
+ ; SSE-32-NEXT: movaps %xmm1, %xmm0
6142
+ ; SSE-32-NEXT: retl
6143
+ ;
6144
+ ; SSE-64-LABEL: test_v2f32_ule2_s:
6145
+ ; SSE-64: # %bb.0:
6146
+ ; SSE-64-NEXT: minps %xmm0, %xmm1
6147
+ ; SSE-64-NEXT: movaps %xmm1, %xmm0
6148
+ ; SSE-64-NEXT: retq
6149
+ ;
6150
+ ; AVX-32-LABEL: test_v2f32_ule2_s:
6151
+ ; AVX-32: # %bb.0:
6152
+ ; AVX-32-NEXT: vminps %xmm0, %xmm1, %xmm0
6153
+ ; AVX-32-NEXT: retl
6154
+ ;
6155
+ ; AVX-64-LABEL: test_v2f32_ule2_s:
6156
+ ; AVX-64: # %bb.0:
6157
+ ; AVX-64-NEXT: vminps %xmm0, %xmm1, %xmm0
6158
+ ; AVX-64-NEXT: retq
6159
+ ;
6160
+ ; AVX512-32-LABEL: test_v2f32_ule2_s:
6161
+ ; AVX512-32: # %bb.0:
6162
+ ; AVX512-32-NEXT: vminps %xmm0, %xmm1, %xmm0
6163
+ ; AVX512-32-NEXT: retl
6164
+ ;
6165
+ ; AVX512-64-LABEL: test_v2f32_ule2_s:
6166
+ ; AVX512-64: # %bb.0:
6167
+ ; AVX512-64-NEXT: vminps %xmm0, %xmm1, %xmm0
6168
+ ; AVX512-64-NEXT: retq
6169
+ ;
6170
+ ; AVX512F-32-LABEL: test_v2f32_ule2_s:
6171
+ ; AVX512F-32: # %bb.0:
6172
+ ; AVX512F-32-NEXT: vminps %xmm0, %xmm1, %xmm0
6173
+ ; AVX512F-32-NEXT: retl
6174
+ ;
6175
+ ; AVX512F-64-LABEL: test_v2f32_ule2_s:
6176
+ ; AVX512F-64: # %bb.0:
6177
+ ; AVX512F-64-NEXT: vminps %xmm0, %xmm1, %xmm0
6178
+ ; AVX512F-64-NEXT: retq
6179
+ %cond = call <2 x i1 > @llvm.experimental.constrained.fcmps.v2f32 (
6180
+ <2 x float > %a , <2 x float > %b , metadata !"ule" ,
6181
+ metadata !"fpexcept.strict" )
6182
+ %res = select <2 x i1 > %cond , <2 x float > %a , <2 x float > %b
6183
+ ret <2 x float > %res
6184
+ }
6185
+
6090
6186
attributes #0 = { strictfp nounwind }
6091
6187
6092
6188
declare <4 x i1 > @llvm.experimental.constrained.fcmp.v4f32 (<4 x float >, <4 x float >, metadata , metadata )
6093
6189
declare <2 x i1 > @llvm.experimental.constrained.fcmp.v2f64 (<2 x double >, <2 x double >, metadata , metadata )
6190
+ declare <2 x i1 > @llvm.experimental.constrained.fcmps.v2f32 (<2 x float >, <2 x float >, metadata , metadata )
6094
6191
declare <4 x i1 > @llvm.experimental.constrained.fcmps.v4f32 (<4 x float >, <4 x float >, metadata , metadata )
6095
6192
declare <2 x i1 > @llvm.experimental.constrained.fcmps.v2f64 (<2 x double >, <2 x double >, metadata , metadata )
0 commit comments