41 lines · c
1// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-unknown -emit-llvm -o - -Wall -Werror | FileCheck %s2// RUN: %clang_cc1 -x c -ffreestanding %s -triple=i386-unknown-unknown -emit-llvm -o - -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-unknown -emit-llvm -o - -Wall -Werror | FileCheck %s4// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=i386-unknown-unknown -emit-llvm -o - -Wall -Werror | FileCheck %s5 6// RUN: %clang_cc1 -x c -ffreestanding %s -triple=x86_64-unknown-unknown -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s7// RUN: %clang_cc1 -x c -ffreestanding %s -triple=i386-unknown-unknown -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s8// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=x86_64-unknown-unknown -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s9// RUN: %clang_cc1 -x c++ -ffreestanding %s -triple=i386-unknown-unknown -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s10 11#include <x86intrin.h>12#include "builtin_test_helpers.h"13 14unsigned int test_castf32_u32 (float __A){15 // CHECK-LABEL: test_castf32_u3216 // CHECK: %{{.*}} = load i32, ptr %{{.*}}, align 417 return _castf32_u32(__A);18}19TEST_CONSTEXPR(_castf32_u32(-0.0f) == 0x80000000);20 21unsigned long long test_castf64_u64 (double __A){22 // CHECK-LABEL: test_castf64_u6423 // CHECK: %{{.*}} = load i64, ptr %{{.*}}, align 824 return _castf64_u64(__A);25}26TEST_CONSTEXPR(_castf64_u64(-0.0) == 0x8000000000000000);27 28float test_castu32_f32 (unsigned int __A){29 // CHECK-LABEL: test_castu32_f3230 // CHECK: %{{.*}} = load float, ptr %{{.*}}, align 431 return _castu32_f32(__A);32}33TEST_CONSTEXPR(_castu32_f32(0x3F800000) == +1.0f);34 35double test_castu64_f64 (unsigned long long __A){36 // CHECK-LABEL: test_castu64_f6437 // CHECK: %{{.*}} = load double, ptr %{{.*}}, align 838 return _castu64_f64(__A);39}40TEST_CONSTEXPR(_castu64_f64(0xBFF0000000000000ULL) == -1.0);41