brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 6070380 Raw
113 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=aarch64-linux -mattr=+neon,+fp8 < %s | FileCheck %s3 4define <8 x bfloat> @test_vbfcvtl1_low(<8 x i8> %vn) {5; CHECK-LABEL: test_vbfcvtl1_low:6; CHECK:       // %bb.0:7; CHECK-NEXT:    bf1cvtl v0.8h, v0.8b8; CHECK-NEXT:    ret9  %res = call <8 x bfloat> @llvm.aarch64.neon.fp8.cvtl1.v8bf16.v8i8(<8 x i8> %vn)10  ret <8 x bfloat> %res11}12 13define <8 x bfloat> @test_vbfcvtl1_high(<16 x i8> %vn) {14; CHECK-LABEL: test_vbfcvtl1_high:15; CHECK:       // %bb.0:16; CHECK-NEXT:    bf1cvtl2 v0.8h, v0.16b17; CHECK-NEXT:    ret18  %res = call <8 x bfloat> @llvm.aarch64.neon.fp8.cvtl1.v8bf16.v16i8(<16 x i8> %vn)19  ret <8 x bfloat> %res20}21 22define <8 x bfloat> @test_vbfcvtl2_low(<8 x i8> %vn) {23; CHECK-LABEL: test_vbfcvtl2_low:24; CHECK:       // %bb.0:25; CHECK-NEXT:    bf2cvtl v0.8h, v0.8b26; CHECK-NEXT:    ret27  %res = call <8 x bfloat> @llvm.aarch64.neon.fp8.cvtl2.v8bf16.v8i8(<8 x i8> %vn)28  ret <8 x bfloat> %res29}30 31define <8 x bfloat> @test_vbfcvtl2_high(<16 x i8> %vn) {32; CHECK-LABEL: test_vbfcvtl2_high:33; CHECK:       // %bb.0:34; CHECK-NEXT:    bf2cvtl2 v0.8h, v0.16b35; CHECK-NEXT:    ret36  %res = call <8 x bfloat> @llvm.aarch64.neon.fp8.cvtl2.v8bf16.v16i8(<16 x i8> %vn)37  ret <8 x bfloat> %res38}39 40 41define <8 x half> @test_vfcvtl1_low(<8 x i8> %vn) {42; CHECK-LABEL: test_vfcvtl1_low:43; CHECK:       // %bb.0:44; CHECK-NEXT:    f1cvtl v0.8h, v0.8b45; CHECK-NEXT:    ret46   %res = call <8 x half> @llvm.aarch64.neon.fp8.cvtl1.v8f16.v8i8(<8 x i8> %vn)47  ret <8 x half> %res48}49 50define <8 x half> @test_vfcvtl1_high(<16 x i8> %vn) {51; CHECK-LABEL: test_vfcvtl1_high:52; CHECK:       // %bb.0:53; CHECK-NEXT:    f1cvtl2 v0.8h, v0.16b54; CHECK-NEXT:    ret55  %res = call <8 x half> @llvm.aarch64.neon.fp8.cvtl1.v8f16.v16i8(<16 x i8> %vn)56  ret <8 x half> %res57}58 59define <8 x half> @test_vfcvtl2_low(<8 x i8> %vn) {60; CHECK-LABEL: test_vfcvtl2_low:61; CHECK:       // %bb.0:62; CHECK-NEXT:    f2cvtl v0.8h, v0.8b63; CHECK-NEXT:    ret64  %res = call <8 x half> @llvm.aarch64.neon.fp8.cvtl2.v8f16.v8i8(<8 x i8> %vn)65  ret <8 x half> %res66}67 68define <8 x half> @test_vfcvtl2_high(<16 x i8> %vn) {69; CHECK-LABEL: test_vfcvtl2_high:70; CHECK:       // %bb.0:71; CHECK-NEXT:    f2cvtl2 v0.8h, v0.16b72; CHECK-NEXT:    ret73  %res = call <8 x half> @llvm.aarch64.neon.fp8.cvtl2.v8f16.v16i8(<16 x i8> %vn)74  ret <8 x half> %res75}76 77define <8 x i8> @test_vcvtn_low_f8_f32(<4 x float> %vn, <4 x float> %vm) {78; CHECK-LABEL: test_vcvtn_low_f8_f32:79; CHECK:       // %bb.0:80; CHECK-NEXT:    fcvtn v0.8b, v0.4s, v1.4s81; CHECK-NEXT:    ret82  %res = call <8 x i8> @llvm.aarch64.neon.fp8.fcvtn.v8i8.v4f32(<4 x float> %vn, <4 x float> %vm)83  ret <8 x i8> %res84}85 86define <16 x i8> @test_vcvtn_high_f8_f32(<16 x i8> %vd, <4 x float> %vn, <4 x float> %vm) {87; CHECK-LABEL: test_vcvtn_high_f8_f32:88; CHECK:       // %bb.0:89; CHECK-NEXT:    fcvtn2 v0.16b, v1.4s, v2.4s90; CHECK-NEXT:    ret91  %res = call <16 x i8> @llvm.aarch64.neon.fp8.fcvtn2.v16i8.v4f32(<16 x i8> %vd, <4 x float> %vn, <4 x float> %vm)92  ret <16 x i8> %res93}94 95 96define <8 x i8> @test_vcvtn_f8_f16(<4 x half> %vn, <4 x half> %vm) {97; CHECK-LABEL: test_vcvtn_f8_f16:98; CHECK:       // %bb.0:99; CHECK-NEXT:    fcvtn v0.8b, v0.4h, v1.4h100; CHECK-NEXT:    ret101  %res = call <8 x i8> @llvm.aarch64.neon.fp8.fcvtn.v8i8.v4f16(<4 x half> %vn, <4 x half> %vm)102  ret <8 x i8> %res103}104 105define <16 x i8> @test_vcvtn2_f8_f16(<8 x half> %vn, <8 x half> %vm) {106; CHECK-LABEL: test_vcvtn2_f8_f16:107; CHECK:       // %bb.0:108; CHECK-NEXT:    fcvtn v0.16b, v0.8h, v1.8h109; CHECK-NEXT:    ret110  %res = call <16 x i8> @llvm.aarch64.neon.fp8.fcvtn.v16i8.v8f16(<8 x half> %vn, <8 x half> %vm)111  ret <16 x i8> %res112}113