diff options
Diffstat (limited to 'test/CodeGen/sse-builtins.c')
-rw-r--r-- | test/CodeGen/sse-builtins.c | 288 |
1 files changed, 288 insertions, 0 deletions
diff --git a/test/CodeGen/sse-builtins.c b/test/CodeGen/sse-builtins.c index 238454bb92e94..34c2de7d331bc 100644 --- a/test/CodeGen/sse-builtins.c +++ b/test/CodeGen/sse-builtins.c @@ -255,3 +255,291 @@ __m128i test_blend_epi16(__m128i V1, __m128i V2) { // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 7> return _mm_blend_epi16(V1, V2, 42); } + +__m128 test_mm_cmpeq_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpeq_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 0) + return _mm_cmpeq_ss(__a, __b); +} + +__m128 test_mm_cmplt_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmplt_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 1) + return _mm_cmplt_ss(__a, __b); +} + +__m128 test_mm_cmple_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmple_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 2) + return _mm_cmple_ss(__a, __b); +} + +__m128 test_mm_cmpunord_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpunord_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 3) + return _mm_cmpunord_ss(__a, __b); +} + +__m128 test_mm_cmpneq_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpneq_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 4) + return _mm_cmpneq_ss(__a, __b); +} + +__m128 test_mm_cmpnlt_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpnlt_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 5) + return _mm_cmpnlt_ss(__a, __b); +} + +__m128 test_mm_cmpnle_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpnle_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 6) + return _mm_cmpnle_ss(__a, __b); +} + +__m128 test_mm_cmpord_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpord_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 7) + return _mm_cmpord_ss(__a, __b); +} + +__m128 test_mm_cmpgt_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpgt_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 1) + return _mm_cmpgt_ss(__a, __b); +} + +__m128 test_mm_cmpge_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpge_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 2) + return _mm_cmpge_ss(__a, __b); +} + +__m128 test_mm_cmpngt_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpngt_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 5) + return _mm_cmpngt_ss(__a, __b); +} + +__m128 test_mm_cmpnge_ss(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpnge_ss + // CHECK: @llvm.x86.sse.cmp.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 6) + return _mm_cmpnge_ss(__a, __b); +} + +__m128 test_mm_cmpeq_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpeq_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 0) + return _mm_cmpeq_ps(__a, __b); +} + +__m128 test_mm_cmplt_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmplt_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 1) + return _mm_cmplt_ps(__a, __b); +} + +__m128 test_mm_cmple_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmple_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 2) + return _mm_cmple_ps(__a, __b); +} + +__m128 test_mm_cmpunord_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpunord_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 3) + return _mm_cmpunord_ps(__a, __b); +} + +__m128 test_mm_cmpneq_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpneq_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 4) + return _mm_cmpneq_ps(__a, __b); +} + +__m128 test_mm_cmpnlt_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpnlt_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 5) + return _mm_cmpnlt_ps(__a, __b); +} + +__m128 test_mm_cmpnle_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpnle_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 6) + return _mm_cmpnle_ps(__a, __b); +} + +__m128 test_mm_cmpord_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpord_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 7) + return _mm_cmpord_ps(__a, __b); +} + +__m128 test_mm_cmpgt_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpgt_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 1) + return _mm_cmpgt_ps(__a, __b); +} + +__m128 test_mm_cmpge_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpge_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 2) + return _mm_cmpge_ps(__a, __b); +} + +__m128 test_mm_cmpngt_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpngt_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 5) + return _mm_cmpngt_ps(__a, __b); +} + +__m128 test_mm_cmpnge_ps(__m128 __a, __m128 __b) { + // CHECK-LABEL: @test_mm_cmpnge_ps + // CHECK: @llvm.x86.sse.cmp.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 6) + return _mm_cmpnge_ps(__a, __b); +} + +__m128d test_mm_cmpeq_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpeq_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 0) + return _mm_cmpeq_sd(__a, __b); +} + +__m128d test_mm_cmplt_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmplt_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 1) + return _mm_cmplt_sd(__a, __b); +} + +__m128d test_mm_cmple_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmple_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 2) + return _mm_cmple_sd(__a, __b); +} + +__m128d test_mm_cmpunord_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpunord_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 3) + return _mm_cmpunord_sd(__a, __b); +} + +__m128d test_mm_cmpneq_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpneq_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 4) + return _mm_cmpneq_sd(__a, __b); +} + +__m128d test_mm_cmpnlt_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpnlt_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) + return _mm_cmpnlt_sd(__a, __b); +} + +__m128d test_mm_cmpnle_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpnle_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 6) + return _mm_cmpnle_sd(__a, __b); +} + +__m128d test_mm_cmpord_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpord_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 7) + return _mm_cmpord_sd(__a, __b); +} + +__m128d test_mm_cmpgt_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpgt_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 1) + return _mm_cmpgt_sd(__a, __b); +} + +__m128d test_mm_cmpge_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpge_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 2) + return _mm_cmpge_sd(__a, __b); +} + +__m128d test_mm_cmpngt_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpngt_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) + return _mm_cmpngt_sd(__a, __b); +} + +__m128d test_mm_cmpnge_sd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpnge_sd + // CHECK: @llvm.x86.sse2.cmp.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 6) + return _mm_cmpnge_sd(__a, __b); +} + +__m128d test_mm_cmpeq_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpeq_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 0) + return _mm_cmpeq_pd(__a, __b); +} + +__m128d test_mm_cmplt_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmplt_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 1) + return _mm_cmplt_pd(__a, __b); +} + +__m128d test_mm_cmple_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmple_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 2) + return _mm_cmple_pd(__a, __b); +} + +__m128d test_mm_cmpunord_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpunord_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 3) + return _mm_cmpunord_pd(__a, __b); +} + +__m128d test_mm_cmpneq_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpneq_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 4) + return _mm_cmpneq_pd(__a, __b); +} + +__m128d test_mm_cmpnlt_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpnlt_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) + return _mm_cmpnlt_pd(__a, __b); +} + +__m128d test_mm_cmpnle_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpnle_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 6) + return _mm_cmpnle_pd(__a, __b); +} + +__m128d test_mm_cmpord_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpord_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 7) + return _mm_cmpord_pd(__a, __b); +} + +__m128d test_mm_cmpgt_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpgt_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 1) + return _mm_cmpgt_pd(__a, __b); +} + +__m128d test_mm_cmpge_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpge_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 2) + return _mm_cmpge_pd(__a, __b); +} + +__m128d test_mm_cmpngt_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpngt_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 5) + return _mm_cmpngt_pd(__a, __b); +} + +__m128d test_mm_cmpnge_pd(__m128d __a, __m128d __b) { + // CHECK-LABEL: @test_mm_cmpnge_pd + // CHECK: @llvm.x86.sse2.cmp.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 6) + return _mm_cmpnge_pd(__a, __b); +} |