brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · 02dfaa1 Raw
209 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=arm64-eabi -aarch64-neon-syntax=apple | FileCheck %s3 4define void @autogen_SD19655(ptr %addr, ptr %addrfloat) {5; CHECK-LABEL: autogen_SD19655:6; CHECK:       // %bb.0:7; CHECK-NEXT:    ldp x8, x9, [x0]8; CHECK-NEXT:    scvtf s0, x99; CHECK-NEXT:    scvtf s1, x810; CHECK-NEXT:    mov.s v1[1], v0[0]11; CHECK-NEXT:    str d1, [x1]12; CHECK-NEXT:    ret13  %T = load <2 x i64>, ptr %addr14  %F = sitofp <2 x i64> %T to <2 x float>15  store <2 x float> %F, ptr %addrfloat16  ret void17}18 19define <2 x double> @test_signed_v2i32_to_v2f64(<2 x i32> %v) nounwind readnone {20; CHECK-LABEL: test_signed_v2i32_to_v2f64:21; CHECK:       // %bb.0:22; CHECK-NEXT:    sshll.2d v0, v0, #023; CHECK-NEXT:    scvtf.2d v0, v024; CHECK-NEXT:    ret25  %conv = sitofp <2 x i32> %v to <2 x double>26  ret <2 x double> %conv27}28 29define <2 x double> @test_unsigned_v2i32_to_v2f64(<2 x i32> %v) nounwind readnone {30; CHECK-LABEL: test_unsigned_v2i32_to_v2f64:31; CHECK:       // %bb.0:32; CHECK-NEXT:    ushll.2d v0, v0, #033; CHECK-NEXT:    ucvtf.2d v0, v034; CHECK-NEXT:    ret35  %conv = uitofp <2 x i32> %v to <2 x double>36  ret <2 x double> %conv37}38 39define <2 x double> @test_signed_v2i16_to_v2f64(<2 x i16> %v) nounwind readnone {40; CHECK-LABEL: test_signed_v2i16_to_v2f64:41; CHECK:       // %bb.0:42; CHECK-NEXT:    shl.2s v0, v0, #1643; CHECK-NEXT:    sshr.2s v0, v0, #1644; CHECK-NEXT:    sshll.2d v0, v0, #045; CHECK-NEXT:    scvtf.2d v0, v046; CHECK-NEXT:    ret47 48  %conv = sitofp <2 x i16> %v to <2 x double>49  ret <2 x double> %conv50}51define <2 x double> @test_unsigned_v2i16_to_v2f64(<2 x i16> %v) nounwind readnone {52; CHECK-LABEL: test_unsigned_v2i16_to_v2f64:53; CHECK:       // %bb.0:54; CHECK-NEXT:    movi d1, #0x00ffff0000ffff55; CHECK-NEXT:    and.8b v0, v0, v156; CHECK-NEXT:    ushll.2d v0, v0, #057; CHECK-NEXT:    ucvtf.2d v0, v058; CHECK-NEXT:    ret59 60  %conv = uitofp <2 x i16> %v to <2 x double>61  ret <2 x double> %conv62}63 64define <2 x double> @test_signed_v2i8_to_v2f64(<2 x i8> %v) nounwind readnone {65; CHECK-LABEL: test_signed_v2i8_to_v2f64:66; CHECK:       // %bb.0:67; CHECK-NEXT:    shl.2s v0, v0, #2468; CHECK-NEXT:    sshr.2s v0, v0, #2469; CHECK-NEXT:    sshll.2d v0, v0, #070; CHECK-NEXT:    scvtf.2d v0, v071; CHECK-NEXT:    ret72 73  %conv = sitofp <2 x i8> %v to <2 x double>74  ret <2 x double> %conv75}76define <2 x double> @test_unsigned_v2i8_to_v2f64(<2 x i8> %v) nounwind readnone {77; CHECK-LABEL: test_unsigned_v2i8_to_v2f64:78; CHECK:       // %bb.0:79; CHECK-NEXT:    movi d1, #0x0000ff000000ff80; CHECK-NEXT:    and.8b v0, v0, v181; CHECK-NEXT:    ushll.2d v0, v0, #082; CHECK-NEXT:    ucvtf.2d v0, v083; CHECK-NEXT:    ret84 85  %conv = uitofp <2 x i8> %v to <2 x double>86  ret <2 x double> %conv87}88 89define <2 x float> @test_signed_v2i64_to_v2f32(<2 x i64> %v) nounwind readnone {90; CHECK-LABEL: test_signed_v2i64_to_v2f32:91; CHECK:       // %bb.0:92; CHECK-NEXT:    mov.d x8, v0[1]93; CHECK-NEXT:    fmov x9, d094; CHECK-NEXT:    scvtf s0, x995; CHECK-NEXT:    scvtf s1, x896; CHECK-NEXT:    mov.s v0[1], v1[0]97; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q098; CHECK-NEXT:    ret99 100  %conv = sitofp <2 x i64> %v to <2 x float>101  ret <2 x float> %conv102}103define <2 x float> @test_unsigned_v2i64_to_v2f32(<2 x i64> %v) nounwind readnone {104; CHECK-LABEL: test_unsigned_v2i64_to_v2f32:105; CHECK:       // %bb.0:106; CHECK-NEXT:    mov.d x8, v0[1]107; CHECK-NEXT:    fmov x9, d0108; CHECK-NEXT:    ucvtf s0, x9109; CHECK-NEXT:    ucvtf s1, x8110; CHECK-NEXT:    mov.s v0[1], v1[0]111; CHECK-NEXT:    // kill: def $d0 killed $d0 killed $q0112; CHECK-NEXT:    ret113 114  %conv = uitofp <2 x i64> %v to <2 x float>115  ret <2 x float> %conv116}117 118define <2 x float> @test_signed_v2i16_to_v2f32(<2 x i16> %v) nounwind readnone {119; CHECK-LABEL: test_signed_v2i16_to_v2f32:120; CHECK:       // %bb.0:121; CHECK-NEXT:    shl.2s v0, v0, #16122; CHECK-NEXT:    sshr.2s v0, v0, #16123; CHECK-NEXT:    scvtf.2s v0, v0124; CHECK-NEXT:    ret125 126  %conv = sitofp <2 x i16> %v to <2 x float>127  ret <2 x float> %conv128}129define <2 x float> @test_unsigned_v2i16_to_v2f32(<2 x i16> %v) nounwind readnone {130; CHECK-LABEL: test_unsigned_v2i16_to_v2f32:131; CHECK:       // %bb.0:132; CHECK-NEXT:    movi d1, #0x00ffff0000ffff133; CHECK-NEXT:    and.8b v0, v0, v1134; CHECK-NEXT:    ucvtf.2s v0, v0135; CHECK-NEXT:    ret136 137  %conv = uitofp <2 x i16> %v to <2 x float>138  ret <2 x float> %conv139}140 141define <2 x float> @test_signed_v2i8_to_v2f32(<2 x i8> %v) nounwind readnone {142; CHECK-LABEL: test_signed_v2i8_to_v2f32:143; CHECK:       // %bb.0:144; CHECK-NEXT:    shl.2s v0, v0, #24145; CHECK-NEXT:    sshr.2s v0, v0, #24146; CHECK-NEXT:    scvtf.2s v0, v0147; CHECK-NEXT:    ret148 149  %conv = sitofp <2 x i8> %v to <2 x float>150  ret <2 x float> %conv151}152define <2 x float> @test_unsigned_v2i8_to_v2f32(<2 x i8> %v) nounwind readnone {153; CHECK-LABEL: test_unsigned_v2i8_to_v2f32:154; CHECK:       // %bb.0:155; CHECK-NEXT:    movi d1, #0x0000ff000000ff156; CHECK-NEXT:    and.8b v0, v0, v1157; CHECK-NEXT:    ucvtf.2s v0, v0158; CHECK-NEXT:    ret159 160  %conv = uitofp <2 x i8> %v to <2 x float>161  ret <2 x float> %conv162}163 164define <4 x float> @test_signed_v4i16_to_v4f32(<4 x i16> %v) nounwind readnone {165; CHECK-LABEL: test_signed_v4i16_to_v4f32:166; CHECK:       // %bb.0:167; CHECK-NEXT:    sshll.4s v0, v0, #0168; CHECK-NEXT:    scvtf.4s v0, v0169; CHECK-NEXT:    ret170 171  %conv = sitofp <4 x i16> %v to <4 x float>172  ret <4 x float> %conv173}174 175define <4 x float> @test_unsigned_v4i16_to_v4f32(<4 x i16> %v) nounwind readnone {176; CHECK-LABEL: test_unsigned_v4i16_to_v4f32:177; CHECK:       // %bb.0:178; CHECK-NEXT:    ushll.4s v0, v0, #0179; CHECK-NEXT:    ucvtf.4s v0, v0180; CHECK-NEXT:    ret181 182  %conv = uitofp <4 x i16> %v to <4 x float>183  ret <4 x float> %conv184}185 186define <4 x float> @test_signed_v4i8_to_v4f32(<4 x i8> %v) nounwind readnone {187; CHECK-LABEL: test_signed_v4i8_to_v4f32:188; CHECK:       // %bb.0:189; CHECK-NEXT:    shl.4h v0, v0, #8190; CHECK-NEXT:    sshr.4h v0, v0, #8191; CHECK-NEXT:    sshll.4s v0, v0, #0192; CHECK-NEXT:    scvtf.4s v0, v0193; CHECK-NEXT:    ret194 195  %conv = sitofp <4 x i8> %v to <4 x float>196  ret <4 x float> %conv197}198define <4 x float> @test_unsigned_v4i8_to_v4f32(<4 x i8> %v) nounwind readnone {199; CHECK-LABEL: test_unsigned_v4i8_to_v4f32:200; CHECK:       // %bb.0:201; CHECK-NEXT:    bic.4h v0, #255, lsl #8202; CHECK-NEXT:    ushll.4s v0, v0, #0203; CHECK-NEXT:    ucvtf.4s v0, v0204; CHECK-NEXT:    ret205 206  %conv = uitofp <4 x i8> %v to <4 x float>207  ret <4 x float> %conv208}209