brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · 539c1c4 Raw
119 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 -force-streaming -verify-machineinstrs < %s | FileCheck %s3 4; FRINTA5 6define { <vscale x 4 x float>, <vscale x 4 x float> } @multi_vec_frinta_x2_f32(<vscale x 4 x float> %unused, <vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2) {7; CHECK-LABEL: multi_vec_frinta_x2_f32:8; CHECK:       // %bb.0:9; CHECK-NEXT:    mov z3.d, z2.d10; CHECK-NEXT:    mov z2.d, z1.d11; CHECK-NEXT:    frinta { z0.s, z1.s }, { z2.s, z3.s }12; CHECK-NEXT:    ret13  %res = call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frinta.x2.nxv4f32(<vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2)14  ret { <vscale x 4 x float>, <vscale x 4 x float> } %res15}16 17define { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @multi_vec_frinta_x4_f32(<vscale x 4 x float> %unused, <vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2, <vscale x 4 x float> %zn3, <vscale x 4 x float> %zn4) {18; CHECK-LABEL: multi_vec_frinta_x4_f32:19; CHECK:       // %bb.0:20; CHECK-NEXT:    mov z7.d, z4.d21; CHECK-NEXT:    mov z6.d, z3.d22; CHECK-NEXT:    mov z5.d, z2.d23; CHECK-NEXT:    mov z4.d, z1.d24; CHECK-NEXT:    frinta { z0.s - z3.s }, { z4.s - z7.s }25; CHECK-NEXT:    ret26  %res = call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frinta.x4.nxv4f32(<vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2, <vscale x 4 x float> %zn3, <vscale x 4 x float> %zn4)27  ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } %res28}29 30; FRINTM31 32define { <vscale x 4 x float>, <vscale x 4 x float> } @multi_vec_frintm_x2_f32(<vscale x 4 x float> %unused, <vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2) {33; CHECK-LABEL: multi_vec_frintm_x2_f32:34; CHECK:       // %bb.0:35; CHECK-NEXT:    mov z3.d, z2.d36; CHECK-NEXT:    mov z2.d, z1.d37; CHECK-NEXT:    frintm { z0.s, z1.s }, { z2.s, z3.s }38; CHECK-NEXT:    ret39  %res = call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintm.x2.nxv4f32(<vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2)40  ret { <vscale x 4 x float>, <vscale x 4 x float> } %res41}42 43define { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @multi_vec_frintm_x4_f32(<vscale x 4 x float> %unused, <vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2, <vscale x 4 x float> %zn3, <vscale x 4 x float> %zn4) {44; CHECK-LABEL: multi_vec_frintm_x4_f32:45; CHECK:       // %bb.0:46; CHECK-NEXT:    mov z7.d, z4.d47; CHECK-NEXT:    mov z6.d, z3.d48; CHECK-NEXT:    mov z5.d, z2.d49; CHECK-NEXT:    mov z4.d, z1.d50; CHECK-NEXT:    frintm { z0.s - z3.s }, { z4.s - z7.s }51; CHECK-NEXT:    ret52  %res = call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintm.x4.nxv4f32(<vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2, <vscale x 4 x float> %zn3, <vscale x 4 x float> %zn4)53  ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } %res54}55 56; FRINTN57 58define { <vscale x 4 x float>, <vscale x 4 x float> } @multi_vec_frintn_x2_f32(<vscale x 4 x float> %unused, <vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2) {59; CHECK-LABEL: multi_vec_frintn_x2_f32:60; CHECK:       // %bb.0:61; CHECK-NEXT:    mov z3.d, z2.d62; CHECK-NEXT:    mov z2.d, z1.d63; CHECK-NEXT:    frintn { z0.s, z1.s }, { z2.s, z3.s }64; CHECK-NEXT:    ret65  %res = call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintn.x2.nxv4f32(<vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2)66  ret { <vscale x 4 x float>, <vscale x 4 x float> } %res67}68 69define { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @multi_vec_frintn_x4_f32(<vscale x 4 x float> %unused, <vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2, <vscale x 4 x float> %zn3, <vscale x 4 x float> %zn4) {70; CHECK-LABEL: multi_vec_frintn_x4_f32:71; CHECK:       // %bb.0:72; CHECK-NEXT:    mov z7.d, z4.d73; CHECK-NEXT:    mov z6.d, z3.d74; CHECK-NEXT:    mov z5.d, z2.d75; CHECK-NEXT:    mov z4.d, z1.d76; CHECK-NEXT:    frintn { z0.s - z3.s }, { z4.s - z7.s }77; CHECK-NEXT:    ret78  %res = call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintn.x4.nxv4f32(<vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2, <vscale x 4 x float> %zn3, <vscale x 4 x float> %zn4)79  ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } %res80}81 82; FRINTP83 84define { <vscale x 4 x float>, <vscale x 4 x float> } @multi_vec_frintp_x2_f32(<vscale x 4 x float> %unused, <vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2) {85; CHECK-LABEL: multi_vec_frintp_x2_f32:86; CHECK:       // %bb.0:87; CHECK-NEXT:    mov z3.d, z2.d88; CHECK-NEXT:    mov z2.d, z1.d89; CHECK-NEXT:    frintp { z0.s, z1.s }, { z2.s, z3.s }90; CHECK-NEXT:    ret91  %res = call { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintp.x2.nxv4f32(<vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2)92  ret { <vscale x 4 x float>, <vscale x 4 x float> } %res93}94 95define { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @multi_vec_frintp_x4_f32(<vscale x 4 x float> %unused, <vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2, <vscale x 4 x float> %zn3, <vscale x 4 x float> %zn4) {96; CHECK-LABEL: multi_vec_frintp_x4_f32:97; CHECK:       // %bb.0:98; CHECK-NEXT:    mov z7.d, z4.d99; CHECK-NEXT:    mov z6.d, z3.d100; CHECK-NEXT:    mov z5.d, z2.d101; CHECK-NEXT:    mov z4.d, z1.d102; CHECK-NEXT:    frintp { z0.s - z3.s }, { z4.s - z7.s }103; CHECK-NEXT:    ret104  %res = call { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintp.x4.nxv4f32(<vscale x 4 x float> %zn1, <vscale x 4 x float> %zn2, <vscale x 4 x float> %zn3, <vscale x 4 x float> %zn4)105  ret { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } %res106}107 108declare { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frinta.x2.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)109declare { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frinta.x4.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)110 111declare { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintm.x2.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)112declare { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintm.x4.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)113 114declare { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintn.x2.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)115declare { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintn.x4.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)116 117declare { <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintp.x2.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)118declare { <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float> } @llvm.aarch64.sve.frintp.x4.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>, <vscale x 4 x float>)119