xref: /llvm-project/clang/test/CodeGen/X86/strictfp_patterns.c (revision 6dcce422ca06601f2b00e85cc18c745ede245ca6)
13b49d274SSimon Pilgrim // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
23b49d274SSimon Pilgrim // RUN: %clang_cc1 %s -O2 -emit-llvm -o - -triple x86_64-unknown-unknown -ffreestanding -ffp-exception-behavior=maytrap -Wall -Werror | FileCheck %s
33b49d274SSimon Pilgrim 
43b49d274SSimon Pilgrim #include <immintrin.h>
53b49d274SSimon Pilgrim 
6*6dcce422SSimon Pilgrim // PR104848 - ensure the _mm_set_ss/d headers don't implicity promote any integer/fp values.
73b49d274SSimon Pilgrim 
83b49d274SSimon Pilgrim // CHECK-LABEL: @test_mm_set_ss(
93b49d274SSimon Pilgrim // CHECK-NEXT:  entry:
10*6dcce422SSimon Pilgrim // CHECK-NEXT:    [[VECINIT3_I:%.*]] = insertelement <4 x float> <float poison, float 0.000000e+00, float 0.000000e+00, float 0.000000e+00>, float [[NUM:%.*]], i64 0
11*6dcce422SSimon Pilgrim // CHECK-NEXT:    ret <4 x float> [[VECINIT3_I]]
123b49d274SSimon Pilgrim //
133b49d274SSimon Pilgrim __m128 test_mm_set_ss(float num)
143b49d274SSimon Pilgrim {
153b49d274SSimon Pilgrim     return _mm_set_ss(num);
163b49d274SSimon Pilgrim }
173b49d274SSimon Pilgrim 
183b49d274SSimon Pilgrim // CHECK-LABEL: @test_mm_set_sd(
193b49d274SSimon Pilgrim // CHECK-NEXT:  entry:
20*6dcce422SSimon Pilgrim // CHECK-NEXT:    [[VECINIT1_I:%.*]] = insertelement <2 x double> <double poison, double 0.000000e+00>, double [[NUM:%.*]], i64 0
213b49d274SSimon Pilgrim // CHECK-NEXT:    ret <2 x double> [[VECINIT1_I]]
223b49d274SSimon Pilgrim //
233b49d274SSimon Pilgrim __m128d test_mm_set_sd(double num)
243b49d274SSimon Pilgrim {
253b49d274SSimon Pilgrim     return _mm_set_sd(num);
263b49d274SSimon Pilgrim }
27