// RUN: %clang_cc1 -ffreestanding -O3 -triple x86_64-apple-macosx10.8.0 -target-feature +sse4.1 -emit-llvm %s -o - | FileCheck %s // FIXME: This test currently depends on optimization - it should be rewritten to avoid it. #include // Byte-shifts look reversed due to xmm register layout __m128 test_mm_slli_si128(__m128 a) { // CHECK-LABEL: @test_mm_slli_si128 // CHECK: shufflevector <16 x i8> <{{.*}}, i8 0, i8 0, i8 0, i8 0, i8 0>, <16 x i8> {{.*}}, <16 x i32> return _mm_slli_si128(a, 5); } __m128 test_mm_slli_si128_0(__m128 a) { // CHECK-LABEL: @test_mm_slli_si128_0 // CHECK-NOT: shufflevector return _mm_slli_si128(a, 0); } __m128 test_mm_slli_si128_16(__m128 a) { // CHECK-LABEL: @test_mm_slli_si128_16 // CHECK-NOT: shufflevector return _mm_slli_si128(a, 16); } __m128 test_mm_srli_si128(__m128 a) { // CHECK-LABEL: @test_mm_srli_si128 // CHECK: shufflevector <16 x i8> {{.*}}, <16 x i8> , <16 x i32> return _mm_srli_si128(a, 5); } __m128 test_mm_srli_si128_0(__m128 a) { // CHECK-LABEL: @test_mm_srli_si128_0 // CHECK-NOT: shufflevector return _mm_srli_si128(a, 0); } __m128 test_mm_srli_si128_16(__m128 a) { // CHECK-LABEL: @test_mm_srli_si128_16 // CHECK-NOT: shufflevector return _mm_srli_si128(a, 16); }