1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_v2f32_to_signed_v2i64(<2 x float> %in) { 4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_to_signed_v2i64: 5*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtl [[VAL64:v[0-9]+]].2d, v0.2s 6*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2d v0, [[VAL64]] 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker %val = fptosi <2 x float> %in to <2 x i64> 9*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %val 10*9880d681SAndroid Build Coastguard Worker} 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_v2f32_to_unsigned_v2i64(<2 x float> %in) { 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_to_unsigned_v2i64: 14*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtl [[VAL64:v[0-9]+]].2d, v0.2s 15*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzu.2d v0, [[VAL64]] 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker %val = fptoui <2 x float> %in to <2 x i64> 18*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %val 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerdefine <2 x i16> @test_v2f32_to_signed_v2i16(<2 x float> %in) { 22*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_to_signed_v2i16: 23*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2s v0, v0 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker %val = fptosi <2 x float> %in to <2 x i16> 26*9880d681SAndroid Build Coastguard Worker ret <2 x i16> %val 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdefine <2 x i16> @test_v2f32_to_unsigned_v2i16(<2 x float> %in) { 30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_to_unsigned_v2i16: 31*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2s v0, v0 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker %val = fptoui <2 x float> %in to <2 x i16> 34*9880d681SAndroid Build Coastguard Worker ret <2 x i16> %val 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdefine <2 x i8> @test_v2f32_to_signed_v2i8(<2 x float> %in) { 38*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_to_signed_v2i8: 39*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2s v0, v0 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker %val = fptosi <2 x float> %in to <2 x i8> 42*9880d681SAndroid Build Coastguard Worker ret <2 x i8> %val 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerdefine <2 x i8> @test_v2f32_to_unsigned_v2i8(<2 x float> %in) { 46*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f32_to_unsigned_v2i8: 47*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2s v0, v0 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker %val = fptoui <2 x float> %in to <2 x i8> 50*9880d681SAndroid Build Coastguard Worker ret <2 x i8> %val 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_v4f32_to_signed_v4i16(<4 x float> %in) { 54*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_to_signed_v4i16: 55*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.4s [[VAL64:v[0-9]+]], v0 56*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.4h v0, [[VAL64]] 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker %val = fptosi <4 x float> %in to <4 x i16> 59*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %val 60*9880d681SAndroid Build Coastguard Worker} 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @test_v4f32_to_unsigned_v4i16(<4 x float> %in) { 63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_to_unsigned_v4i16: 64*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzu.4s [[VAL64:v[0-9]+]], v0 65*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.4h v0, [[VAL64]] 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker %val = fptoui <4 x float> %in to <4 x i16> 68*9880d681SAndroid Build Coastguard Worker ret <4 x i16> %val 69*9880d681SAndroid Build Coastguard Worker} 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Workerdefine <4 x i8> @test_v4f32_to_signed_v4i8(<4 x float> %in) { 72*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_to_signed_v4i8: 73*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.4s [[VAL64:v[0-9]+]], v0 74*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.4h v0, [[VAL64]] 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker %val = fptosi <4 x float> %in to <4 x i8> 77*9880d681SAndroid Build Coastguard Worker ret <4 x i8> %val 78*9880d681SAndroid Build Coastguard Worker} 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workerdefine <4 x i8> @test_v4f32_to_unsigned_v4i8(<4 x float> %in) { 81*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v4f32_to_unsigned_v4i8: 82*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.4s [[VAL64:v[0-9]+]], v0 83*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.4h v0, [[VAL64]] 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker %val = fptoui <4 x float> %in to <4 x i8> 86*9880d681SAndroid Build Coastguard Worker ret <4 x i8> %val 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_v2f64_to_signed_v2i32(<2 x double> %in) { 90*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_to_signed_v2i32: 91*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0 92*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.2s v0, [[VAL64]] 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker %val = fptosi <2 x double> %in to <2 x i32> 95*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %val 96*9880d681SAndroid Build Coastguard Worker} 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @test_v2f64_to_unsigned_v2i32(<2 x double> %in) { 99*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_to_unsigned_v2i32: 100*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzu.2d [[VAL64:v[0-9]+]], v0 101*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.2s v0, [[VAL64]] 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker %val = fptoui <2 x double> %in to <2 x i32> 104*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %val 105*9880d681SAndroid Build Coastguard Worker} 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Workerdefine <2 x i16> @test_v2f64_to_signed_v2i16(<2 x double> %in) { 108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_to_signed_v2i16: 109*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0 110*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.2s v0, [[VAL64]] 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker %val = fptosi <2 x double> %in to <2 x i16> 113*9880d681SAndroid Build Coastguard Worker ret <2 x i16> %val 114*9880d681SAndroid Build Coastguard Worker} 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerdefine <2 x i16> @test_v2f64_to_unsigned_v2i16(<2 x double> %in) { 117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_to_unsigned_v2i16: 118*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0 119*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.2s v0, [[VAL64]] 120*9880d681SAndroid Build Coastguard Worker 121*9880d681SAndroid Build Coastguard Worker %val = fptoui <2 x double> %in to <2 x i16> 122*9880d681SAndroid Build Coastguard Worker ret <2 x i16> %val 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Workerdefine <2 x i8> @test_v2f64_to_signed_v2i8(<2 x double> %in) { 126*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_to_signed_v2i8: 127*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0 128*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.2s v0, [[VAL64]] 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Worker %val = fptosi <2 x double> %in to <2 x i8> 131*9880d681SAndroid Build Coastguard Worker ret <2 x i8> %val 132*9880d681SAndroid Build Coastguard Worker} 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Workerdefine <2 x i8> @test_v2f64_to_unsigned_v2i8(<2 x double> %in) { 135*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_v2f64_to_unsigned_v2i8: 136*9880d681SAndroid Build Coastguard Worker; CHECK: fcvtzs.2d [[VAL64:v[0-9]+]], v0 137*9880d681SAndroid Build Coastguard Worker; CHECK: xtn.2s v0, [[VAL64]] 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker %val = fptoui <2 x double> %in to <2 x i8> 140*9880d681SAndroid Build Coastguard Worker ret <2 x i8> %val 141*9880d681SAndroid Build Coastguard Worker} 142