brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · c9560e7 Raw
123 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=aarch64 -mattr=-fp-armv8 -o - %s | FileCheck %s3 4define half @f2h(float %a) {5; CHECK-LABEL: f2h:6; CHECK:       // %bb.0: // %entry7; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill8; CHECK-NEXT:    .cfi_def_cfa_offset 169; CHECK-NEXT:    .cfi_offset w30, -1610; CHECK-NEXT:    bl __truncsfhf211; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload12; CHECK-NEXT:    ret13entry:14  %0 = fptrunc float %a to half15  ret half %016}17 18define bfloat @f2bfloat(float %a) {19; CHECK-LABEL: f2bfloat:20; CHECK:       // %bb.0: // %entry21; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill22; CHECK-NEXT:    .cfi_def_cfa_offset 1623; CHECK-NEXT:    .cfi_offset w30, -1624; CHECK-NEXT:    bl __truncsfbf225; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload26; CHECK-NEXT:    ret27entry:28  %0 = fptrunc float %a to bfloat29  ret bfloat %030}31 32define double @select_f64(double %a, double %b, i1 %c) {33; CHECK-LABEL: select_f64:34; CHECK:       // %bb.0: // %entry35; CHECK-NEXT:    tst w2, #0x136; CHECK-NEXT:    csel x0, x0, x1, ne37; CHECK-NEXT:    ret38entry:39  %0 = select i1 %c, double %a, double %b40  ret double %041}42 43define float @select_f32(float %a, float %b, i1 %c) {44; CHECK-LABEL: select_f32:45; CHECK:       // %bb.0: // %entry46; CHECK-NEXT:    tst w2, #0x147; CHECK-NEXT:    csel w0, w0, w1, ne48; CHECK-NEXT:    ret49entry:50  %0 = select i1 %c, float %a, float %b51  ret float %052}53 54define half @select_f16(half %a, half %b, i1 %c) {55; CHECK-LABEL: select_f16:56; CHECK:       // %bb.0: // %entry57; CHECK-NEXT:    tst w2, #0x158; CHECK-NEXT:    csel w0, w0, w1, ne59; CHECK-NEXT:    ret60entry:61  %0 = select i1 %c, half %a, half %b62  ret half %063}64 65define bfloat @select_bf16(bfloat %a, bfloat %b, i1 %c) {66; CHECK-LABEL: select_bf16:67; CHECK:       // %bb.0: // %entry68; CHECK-NEXT:    tst w2, #0x169; CHECK-NEXT:    csel w0, w0, w1, ne70; CHECK-NEXT:    ret71entry:72  %0 = select i1 %c, bfloat %a, bfloat %b73  ret bfloat %074}75 76define double @selectcc_f64(double %a, double %b, i32 %d) {77; CHECK-LABEL: selectcc_f64:78; CHECK:       // %bb.0: // %entry79; CHECK-NEXT:    cmp w2, #080; CHECK-NEXT:    csel x0, x0, x1, mi81; CHECK-NEXT:    ret82entry:83  %c = icmp slt i32 %d, 084  %0 = select i1 %c, double %a, double %b85  ret double %086}87 88define float @selectcc_f32(float %a, float %b, i32 %d) {89; CHECK-LABEL: selectcc_f32:90; CHECK:       // %bb.0: // %entry91; CHECK-NEXT:    cmp w2, #092; CHECK-NEXT:    csel w0, w0, w1, mi93; CHECK-NEXT:    ret94entry:95  %c = icmp slt i32 %d, 096  %0 = select i1 %c, float %a, float %b97  ret float %098}99 100define half @selectcc_f16(half %a, half %b, i32 %d) {101; CHECK-LABEL: selectcc_f16:102; CHECK:       // %bb.0: // %entry103; CHECK-NEXT:    cmp w2, #0104; CHECK-NEXT:    csel w0, w0, w1, mi105; CHECK-NEXT:    ret106entry:107  %c = icmp slt i32 %d, 0108  %0 = select i1 %c, half %a, half %b109  ret half %0110}111 112define bfloat @selectcc_bf16(bfloat %a, bfloat %b, i32 %d) {113; CHECK-LABEL: selectcc_bf16:114; CHECK:       // %bb.0: // %entry115; CHECK-NEXT:    cmp w2, #0116; CHECK-NEXT:    csel w0, w0, w1, mi117; CHECK-NEXT:    ret118entry:119  %c = icmp slt i32 %d, 0120  %0 = select i1 %c, bfloat %a, bfloat %b121  ret bfloat %0122}123