[AMDGPU][True16][CodeGen] true16 codegen pattern for v_med3_u/i16 (#121850)
[llvm-project.git] / llvm / test / CodeGen / X86 / avx10_2_512fptosi_satcvtds.ll
blobd7ad7b048c6d6930c5fb7b480a2558e7a903f6b1
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686-linux -mattr=+avx10.2-512 | FileCheck %s --check-prefixes=CHECK,X86
3 ; RUN: llc < %s -mtriple=x86_64-linux -mattr=+avx10.2-512 | FileCheck %s --check-prefixes=CHECK,X64
5 ; VCVTTPD2DQS
6 define <8 x i32> @test_signed_v8i32_v8f64(<8 x double> %f) nounwind {
7 ; CHECK-LABEL: test_signed_v8i32_v8f64:
8 ; CHECK:       # %bb.0:
9 ; CHECK-NEXT:    vcvttpd2dqs %zmm0, %ymm0
10 ; CHECK-NEXT:    ret{{[l|q]}}
11   %x = call  <8 x i32> @llvm.fptosi.sat.v8i32.v8f64(<8 x double> %f)
12   ret <8 x i32> %x
15 ; VCVTTPD2QQS
16 define <8 x i64> @test_signed_v8i64_v8f64(<8 x double> %f) nounwind {
17 ; CHECK-LABEL: test_signed_v8i64_v8f64:
18 ; CHECK:       # %bb.0:
19 ; CHECK-NEXT:    vcvttpd2qqs %zmm0, %zmm0
20 ; CHECK-NEXT:    ret{{[l|q]}}
21   %x = call <8 x i64> @llvm.fptosi.sat.v8i64.v8f64(<8 x double> %f)
22   ret <8 x i64> %x
25 ; VCVTTPD2UDQS
26 define <8 x i32> @test_unsigned_v8i32_v8f64(<8 x double> %f) nounwind {
27 ; CHECK-LABEL: test_unsigned_v8i32_v8f64:
28 ; CHECK:       # %bb.0:
29 ; CHECK-NEXT:    vcvttpd2udqs %zmm0, %ymm0
30 ; CHECK-NEXT:    ret{{[l|q]}}
31   %x = call  <8 x i32> @llvm.fptoui.sat.v8i32.v8f64(<8 x double> %f)
32  ret <8 x i32> %x
35 ; VCVTTPD2UQQS
36 define <8 x i64> @test_unsigned_v8i64_v8f64(<8 x double> %f) nounwind {
37 ; CHECK-LABEL: test_unsigned_v8i64_v8f64:
38 ; CHECK:       # %bb.0:
39 ; CHECK-NEXT:    vcvttpd2uqqs %zmm0, %zmm0
40 ; CHECK-NEXT:    ret{{[l|q]}}
41   %x = call  <8 x i64> @llvm.fptoui.sat.v8i64.v8f64(<8 x double> %f)
42   ret <8 x i64> %x
45 ; VCVTTPS2DQS
46 define <16 x i32> @test_signed_v16i32_v16f32(<16 x float> %f) nounwind {
47 ; CHECK-LABEL: test_signed_v16i32_v16f32:
48 ; CHECK:       # %bb.0:
49 ; CHECK-NEXT:    vcvttps2dqs %zmm0, %zmm0
50 ; CHECK-NEXT:    ret{{[l|q]}}
51   %x = call  <16 x i32> @llvm.fptosi.sat.v16i32.v16f32(<16 x float> %f)
52   ret <16 x i32> %x
55 ; VCVTTPS2UDQS
56 define <16 x i32> @test_unsigned_v16i32_v16f32(<16 x float> %f) nounwind {
57 ; CHECK-LABEL: test_unsigned_v16i32_v16f32:
58 ; CHECK:       # %bb.0:
59 ; CHECK-NEXT:    vcvttps2udqs %zmm0, %zmm0
60 ; CHECK-NEXT:    ret{{[l|q]}}
61   %x = call  <16 x i32> @llvm.fptoui.sat.v16i32.v16f32(<16 x float> %f)
62   ret <16 x i32> %x
64 ; VCVTTPS2QQS
65 define <8 x i64> @test_signed_v8i64_v8f32(<8 x float> %f) nounwind {
66 ; CHECK-LABEL: test_signed_v8i64_v8f32:
67 ; CHECK:       # %bb.0:
68 ; CHECK-NEXT:    vcvttps2qqs %ymm0, %zmm0
69 ; CHECK-NEXT:    ret{{[l|q]}}
70   %x = call  <8 x i64> @llvm.fptosi.sat.v8i64.v8f32(<8 x float> %f)
71   ret <8 x i64> %x
74 ; VCVTTPS2UQQS
75 define <8 x i64> @test_unsigned_v8i64_v8f32(<8 x float> %f) nounwind {
76 ; CHECK-LABEL: test_unsigned_v8i64_v8f32:
77 ; CHECK:       # %bb.0:
78 ; CHECK-NEXT:    vcvttps2uqqs %ymm0, %zmm0
79 ; CHECK-NEXT:    ret{{[l|q]}}
80   %x = call  <8 x i64> @llvm.fptoui.sat.v8i64.v8f32(<8 x float> %f)
81   ret <8 x i64> %x
83 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
84 ; X64: {{.*}}
85 ; X86: {{.*}}