// e.g. both _CMP_GT_OS & _CMP_GT_OQ are translated to FCMP_OGT.
FCmpInst::Predicate Pred;
switch (CC) {
- case 0x00: Pred = FCmpInst::FCMP_OEQ; break;
- case 0x01: Pred = FCmpInst::FCMP_OLT; break;
- case 0x02: Pred = FCmpInst::FCMP_OLE; break;
- case 0x03: Pred = FCmpInst::FCMP_UNO; break;
- case 0x04: Pred = FCmpInst::FCMP_UNE; break;
- case 0x05: Pred = FCmpInst::FCMP_UGE; break;
- case 0x06: Pred = FCmpInst::FCMP_UGT; break;
- case 0x07: Pred = FCmpInst::FCMP_ORD; break;
- case 0x08: Pred = FCmpInst::FCMP_UEQ; break;
- case 0x09: Pred = FCmpInst::FCMP_ULT; break;
- case 0x0a: Pred = FCmpInst::FCMP_ULE; break;
- case 0x0c: Pred = FCmpInst::FCMP_ONE; break;
- case 0x0d: Pred = FCmpInst::FCMP_OGE; break;
- case 0x0e: Pred = FCmpInst::FCMP_OGT; break;
- case 0x10: Pred = FCmpInst::FCMP_OEQ; break;
- case 0x11: Pred = FCmpInst::FCMP_OLT; break;
- case 0x12: Pred = FCmpInst::FCMP_OLE; break;
- case 0x13: Pred = FCmpInst::FCMP_UNO; break;
- case 0x14: Pred = FCmpInst::FCMP_UNE; break;
- case 0x15: Pred = FCmpInst::FCMP_UGE; break;
- case 0x16: Pred = FCmpInst::FCMP_UGT; break;
- case 0x17: Pred = FCmpInst::FCMP_ORD; break;
- case 0x18: Pred = FCmpInst::FCMP_UEQ; break;
- case 0x19: Pred = FCmpInst::FCMP_ULT; break;
- case 0x1a: Pred = FCmpInst::FCMP_ULE; break;
- case 0x1c: Pred = FCmpInst::FCMP_ONE; break;
- case 0x1d: Pred = FCmpInst::FCMP_OGE; break;
- case 0x1e: Pred = FCmpInst::FCMP_OGT; break;
- // _CMP_TRUE_UQ, _CMP_TRUE_US produce -1,-1... vector
- // on any input and _CMP_FALSE_OQ, _CMP_FALSE_OS produce 0, 0...
- case 0x0b: // FALSE_OQ
- case 0x1b: // FALSE_OS
- return llvm::Constant::getNullValue(ConvertType(E->getType()));
- case 0x0f: // TRUE_UQ
- case 0x1f: // TRUE_US
- return llvm::Constant::getAllOnesValue(ConvertType(E->getType()));
-
+ case 0x00: Pred = FCmpInst::FCMP_OEQ; break;
+ case 0x01: Pred = FCmpInst::FCMP_OLT; break;
+ case 0x02: Pred = FCmpInst::FCMP_OLE; break;
+ case 0x03: Pred = FCmpInst::FCMP_UNO; break;
+ case 0x04: Pred = FCmpInst::FCMP_UNE; break;
+ case 0x05: Pred = FCmpInst::FCMP_UGE; break;
+ case 0x06: Pred = FCmpInst::FCMP_UGT; break;
+ case 0x07: Pred = FCmpInst::FCMP_ORD; break;
+ case 0x08: Pred = FCmpInst::FCMP_UEQ; break;
+ case 0x09: Pred = FCmpInst::FCMP_ULT; break;
+ case 0x0a: Pred = FCmpInst::FCMP_ULE; break;
+ case 0x0b: Pred = FCmpInst::FCMP_FALSE; break;
+ case 0x0c: Pred = FCmpInst::FCMP_ONE; break;
+ case 0x0d: Pred = FCmpInst::FCMP_OGE; break;
+ case 0x0e: Pred = FCmpInst::FCMP_OGT; break;
+ case 0x0f: Pred = FCmpInst::FCMP_TRUE; break;
+ case 0x10: Pred = FCmpInst::FCMP_OEQ; break;
+ case 0x11: Pred = FCmpInst::FCMP_OLT; break;
+ case 0x12: Pred = FCmpInst::FCMP_OLE; break;
+ case 0x13: Pred = FCmpInst::FCMP_UNO; break;
+ case 0x14: Pred = FCmpInst::FCMP_UNE; break;
+ case 0x15: Pred = FCmpInst::FCMP_UGE; break;
+ case 0x16: Pred = FCmpInst::FCMP_UGT; break;
+ case 0x17: Pred = FCmpInst::FCMP_ORD; break;
+ case 0x18: Pred = FCmpInst::FCMP_UEQ; break;
+ case 0x19: Pred = FCmpInst::FCMP_ULT; break;
+ case 0x1a: Pred = FCmpInst::FCMP_ULE; break;
+ case 0x1b: Pred = FCmpInst::FCMP_FALSE; break;
+ case 0x1c: Pred = FCmpInst::FCMP_ONE; break;
+ case 0x1d: Pred = FCmpInst::FCMP_OGE; break;
+ case 0x1e: Pred = FCmpInst::FCMP_OGT; break;
+ case 0x1f: Pred = FCmpInst::FCMP_TRUE; break;
default: llvm_unreachable("Unhandled CC");
}
__m256d test_mm256_cmp_pd_false_oq(__m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_cmp_pd_false_oq
- // CHECK-NOT: call
- // CHECK: ret <4 x double> zeroinitializer
+ // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
return _mm256_cmp_pd(a, b, _CMP_FALSE_OQ);
}
__m256d test_mm256_cmp_pd_true_uq(__m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_cmp_pd_true_uq
- // CHECK-NOT: call
- // CHECK: ret <4 x double> <double 0xFFFFFFFFFFFFFFFF, double 0xFFFFFFFFFFFFFFFF, double 0xFFFFFFFFFFFFFFFF, double 0xFFFFFFFFFFFFFFFF>
+ // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
return _mm256_cmp_pd(a, b, _CMP_TRUE_UQ);
}
__m256d test_mm256_cmp_pd_false_os(__m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_cmp_pd_false_os
- // CHECK-NOT: call
- // CHECK: ret <4 x double> zeroinitializer
+ // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
return _mm256_cmp_pd(a, b, _CMP_FALSE_OS);
}
__m256d test_mm256_cmp_pd_true_us(__m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_cmp_pd_true_us
- // CHECK-NOT: call
- // CHECK: ret <4 x double> <double 0xFFFFFFFFFFFFFFFF, double 0xFFFFFFFFFFFFFFFF, double 0xFFFFFFFFFFFFFFFF, double 0xFFFFFFFFFFFFFFFF>
+ // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
return _mm256_cmp_pd(a, b, _CMP_TRUE_US);
}
__m256 test_mm256_cmp_ps_false_oq(__m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_cmp_ps_false_oq
- // CHECK-NOT: call
- // CHECK: ret <8 x float> zeroinitializer
+ // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
return _mm256_cmp_ps(a, b, _CMP_FALSE_OQ);
}
__m256 test_mm256_cmp_ps_true_uq(__m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_cmp_ps_true_uq
- // CHECK-NOT: call
- // CHECK: ret <8 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000>
+ // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
return _mm256_cmp_ps(a, b, _CMP_TRUE_UQ);
}
__m256 test_mm256_cmp_ps_false_os(__m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_cmp_ps_false_os
- // CHECK-NOT: call
- // CHECK: ret <8 x float> zeroinitializer
+ // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
return _mm256_cmp_ps(a, b, _CMP_FALSE_OS);
}
__m256 test_mm256_cmp_ps_true_us(__m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_cmp_ps_true_us
- // CHECK-NOT: call
- // CHECK: ret <8 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000>
+ // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
return _mm256_cmp_ps(a, b, _CMP_TRUE_US);
}
__m128d test_mm_cmp_pd_false_oq(__m128d a, __m128d b) {
// CHECK-LABEL: test_mm_cmp_pd_false_oq
- // CHECK-NOT: call
- // CHECK: ret <2 x double> zeroinitializer
+ // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
return _mm_cmp_pd(a, b, _CMP_FALSE_OQ);
}
__m128d test_mm_cmp_pd_true_uq(__m128d a, __m128d b) {
// CHECK-LABEL: test_mm_cmp_pd_true_uq
- // CHECK-NOT: call
- // CHECK: ret <2 x double> <double 0xFFFFFFFFFFFFFFFF, double 0xFFFFFFFFFFFFFFFF>
+ // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
return _mm_cmp_pd(a, b, _CMP_TRUE_UQ);
}
__m128d test_mm_cmp_pd_false_os(__m128d a, __m128d b) {
// CHECK-LABEL: test_mm_cmp_pd_false_os
- // CHECK-NOT: call
- // CHECK: ret <2 x double> zeroinitializer
+ // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
return _mm_cmp_pd(a, b, _CMP_FALSE_OS);
}
__m128d test_mm_cmp_pd_true_us(__m128d a, __m128d b) {
// CHECK-LABEL: test_mm_cmp_pd_true_us
- // CHECK-NOT: call
- // CHECK: ret <2 x double> <double 0xFFFFFFFFFFFFFFFF, double 0xFFFFFFFFFFFFFFFF>
+ // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
return _mm_cmp_pd(a, b, _CMP_TRUE_US);
}
__m128 test_mm_cmp_ps_false_oq(__m128 a, __m128 b) {
// CHECK-LABEL: test_mm_cmp_ps_false_oq
- // CHECK-NOT: call
- // CHECK: ret <4 x float> zeroinitializer
+ // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
return _mm_cmp_ps(a, b, _CMP_FALSE_OQ);
}
__m128 test_mm_cmp_ps_true_uq(__m128 a, __m128 b) {
// CHECK-LABEL: test_mm_cmp_ps_true_uq
- // CHECK-NOT: call
- // CHECK: ret <4 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000>
+ // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
return _mm_cmp_ps(a, b, _CMP_TRUE_UQ);
}
__m128 test_mm_cmp_ps_false_os(__m128 a, __m128 b) {
// CHECK-LABEL: test_mm_cmp_ps_false_os
- // CHECK-NOT: call
- // CHECK: ret <4 x float> zeroinitializer
+ // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
return _mm_cmp_ps(a, b, _CMP_FALSE_OS);
}
__m128 test_mm_cmp_ps_true_us(__m128 a, __m128 b) {
// CHECK-LABEL: test_mm_cmp_ps_true_us
- // CHECK-NOT: call
- // CHECK: ret <4 x float> <float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000, float 0xFFFFFFFFE0000000>
+ // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
return _mm_cmp_ps(a, b, _CMP_TRUE_US);
}
__mmask16 test_mm512_cmp_ps_mask_false_oq(__m512 a, __m512 b) {
// CHECK-LABEL: test_mm512_cmp_ps_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i16 0
+ // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
}
__mmask16 test_mm512_cmp_ps_mask_true_uq(__m512 a, __m512 b) {
// CHECK-LABEL: test_mm512_cmp_ps_mask_true_uq
- // CHECK-NOT: call
- // CHECK: ret i16 -1
+ // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
}
__mmask16 test_mm512_cmp_ps_mask_false_os(__m512 a, __m512 b) {
// CHECK-LABEL: test_mm512_cmp_ps_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i16 0
+ // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OS);
}
__mmask16 test_mm512_cmp_ps_mask_true_us(__m512 a, __m512 b) {
// CHECK-LABEL: test_mm512_cmp_ps_mask_true_us
- // CHECK-NOT: call
- // CHECK: ret i16 -1
+ // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_US);
}
__mmask16 test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m, __m512 a, __m512 b) {
// CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i16 0
+ // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> [[CMP]], {{.*}}
return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
}
__mmask16 test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m, __m512 a, __m512 b) {
// CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_uq
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> [[CMP]], {{.*}}
return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
}
__mmask16 test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m, __m512 a, __m512 b) {
// CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i16 0
+ // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> [[CMP]], {{.*}}
return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
}
__mmask16 test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m, __m512 a, __m512 b) {
// CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_us
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <16 x i1> [[CMP]], {{.*}}
return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
}
__mmask8 test_mm512_cmp_pd_mask_false_oq(__m512d a, __m512d b) {
// CHECK-LABEL: test_mm512_cmp_pd_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm512_cmp_pd_mask_true_uq(__m512d a, __m512d b) {
// CHECK-LABEL: test_mm512_cmp_pd_mask_true_uq
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm512_cmp_pd_mask_false_os(__m512d a, __m512d b) {
// CHECK-LABEL: test_mm512_cmp_pd_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm512_cmp_pd_mask_true_us(__m512d a, __m512d b) {
// CHECK-LABEL: test_mm512_cmp_pd_mask_true_us
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_US);
}
__mmask8 test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m, __m512d a, __m512d b) {
// CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> [[CMP]], {{.*}}
return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m, __m512d a, __m512d b) {
// CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_uq
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> [[CMP]], {{.*}}
return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m, __m512d a, __m512d b) {
// CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> [[CMP]], {{.*}}
return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m, __m512d a, __m512d b) {
// CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_us
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> [[CMP]], {{.*}}
return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
}
__mmask8 test_mm256_cmp_ps_mask_false_oq(__m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_cmp_ps_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm256_cmp_ps_mask_true_uq(__m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_cmp_ps_mask_true_uq
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm256_cmp_ps_mask_false_os(__m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_cmp_ps_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}
return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm256_cmp_ps_mask_true_us(__m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_cmp_ps_mask_true_us
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}
return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_US);
}
__mmask8 test_mm256_mask_cmp_ps_mask_false_oq(__mmask8 m, __m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> [[CMP]], {{.*}}
return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm256_mask_cmp_ps_mask_true_uq(__mmask8 m, __m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_uq
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> [[CMP]], {{.*}}
return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm256_mask_cmp_ps_mask_false_os(__mmask8 m, __m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> [[CMP]], {{.*}}
return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm256_mask_cmp_ps_mask_true_us(__mmask8 m, __m256 a, __m256 b) {
// CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_us
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <8 x i1> [[CMP]], {{.*}}
return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
}
__mmask8 test_mm256_cmp_pd_mask_false_oq(__m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_cmp_pd_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm256_cmp_pd_mask_true_uq(__m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_cmp_pd_mask_true_uq
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm256_cmp_pd_mask_false_os(__m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_cmp_pd_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}
return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm256_cmp_pd_mask_true_us(__m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_cmp_pd_mask_true_us
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}
return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_US);
}
__mmask8 test_mm256_mask_cmp_pd_mask_false_oq(__mmask8 m, __m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <4 x i1> [[CMP]], {{.*}}
return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm256_mask_cmp_pd_mask_true_uq(__mmask8 m, __m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_uq
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <4 x i1> [[CMP]], {{.*}}
return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm256_mask_cmp_pd_mask_false_os(__mmask8 m, __m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <4 x i1> [[CMP]], {{.*}}
return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm256_mask_cmp_pd_mask_true_us(__mmask8 m, __m256d a, __m256d b) {
// CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_us
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <4 x i1> [[CMP]], {{.*}}
return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
}
__mmask8 test_mm_cmp_ps_mask_false_oq(__m128 a, __m128 b) {
// CHECK-LABEL: test_mm_cmp_ps_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm_cmp_ps_mask_true_uq(__m128 a, __m128 b) {
// CHECK-LABEL: test_mm_cmp_ps_mask_true_uq
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
return _mm_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm_cmp_ps_mask_false_os(__m128 a, __m128 b) {
// CHECK-LABEL: test_mm_cmp_ps_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}
return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm_cmp_ps_mask_true_us(__m128 a, __m128 b) {
// CHECK-LABEL: test_mm_cmp_ps_mask_true_us
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}
return _mm_cmp_ps_mask(a, b, _CMP_TRUE_US);
}
__mmask8 test_mm_mask_cmp_ps_mask_false_oq(__mmask8 m, __m128 a, __m128 b) {
// CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <4 x i1> [[CMP]], {{.*}}
return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm_mask_cmp_ps_mask_true_uq(__mmask8 m, __m128 a, __m128 b) {
// CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_uq
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <4 x i1> [[CMP]], {{.*}}
return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm_mask_cmp_ps_mask_false_os(__mmask8 m, __m128 a, __m128 b) {
// CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <4 x i1> [[CMP]], {{.*}}
return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm_mask_cmp_ps_mask_true_us(__mmask8 m, __m128 a, __m128 b) {
// CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_us
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}
+ // CHECK: and <4 x i1> [[CMP]], {{.*}}
return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
}
__mmask8 test_mm_cmp_pd_mask_false_oq(__m128d a, __m128d b) {
// CHECK-LABEL: test_mm_cmp_pd_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm_cmp_pd_mask_true_uq(__m128d a, __m128d b) {
// CHECK-LABEL: test_mm_cmp_pd_mask_true_uq
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
return _mm_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm_cmp_pd_mask_false_os(__m128d a, __m128d b) {
// CHECK-LABEL: test_mm_cmp_pd_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}
return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm_cmp_pd_mask_true_us(__m128d a, __m128d b) {
// CHECK-LABEL: test_mm_cmp_pd_mask_true_us
- // CHECK-NOT: call
- // CHECK: ret i8 -1
+ // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}
return _mm_cmp_pd_mask(a, b, _CMP_TRUE_US);
}
__mmask8 test_mm_mask_cmp_pd_mask_false_oq(__mmask8 m, __m128d a, __m128d b) {
// CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_oq
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <2 x i1> [[CMP]], {{.*}}
return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
}
__mmask8 test_mm_mask_cmp_pd_mask_true_uq(__mmask8 m, __m128d a, __m128d b) {
// CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_uq
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <2 x i1> [[CMP]], {{.*}}
return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
}
__mmask8 test_mm_mask_cmp_pd_mask_false_os(__mmask8 m, __m128d a, __m128d b) {
// CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_os
- // CHECK-NOT: call
- // CHECK: ret i8 0
+ // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <2 x i1> [[CMP]], {{.*}}
return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
}
__mmask8 test_mm_mask_cmp_pd_mask_true_us(__mmask8 m, __m128d a, __m128d b) {
// CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_us
- // FIXME
+ // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}
+ // CHECK: and <2 x i1> [[CMP]], {{.*}}
return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
}