brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · bb362d2 Raw
129 lines · plain
1; RUN: llc < %s -mtriple=arm64-linux-gnu | FileCheck %s -check-prefixes=NOZCM-FPR128-CPU --match-full-lines2; RUN: llc < %s -mtriple=arm64-apple-macosx -mcpu=generic | FileCheck %s -check-prefixes=NOZCM-FPR128-CPU --match-full-lines3; RUN: llc < %s -mtriple=arm64-apple-macosx -mcpu=apple-m1 | FileCheck %s -check-prefixes=ZCM-FPR128-CPU --match-full-lines4; RUN: llc < %s -mtriple=arm64-apple-macosx -mcpu=apple-m1 -mattr=-zcm-fpr128 | FileCheck %s -check-prefixes=NOZCM-FPR128-ATTR --match-full-lines5; RUN: llc < %s -mtriple=arm64-apple-macosx -mattr=+zcm-fpr128 | FileCheck %s -check-prefixes=ZCM-FPR128-ATTR --match-full-lines6 7define void @zero_cycle_regmove_FPR64(double %a, double %b, double %c, double %d) {8entry:9; CHECK-LABEL: t:10; NOZCM-FPR128-CPU: fmov d0, d211; NOZCM-FPR128-CPU: fmov d1, d312; NOZCM-FPR128-CPU: fmov [[REG2:d[0-9]+]], d313; NOZCM-FPR128-CPU: fmov [[REG1:d[0-9]+]], d214; NOZCM-FPR128-CPU-NEXT: bl {{_?foo_double}}15; NOZCM-FPR128-CPU: fmov d0, [[REG1]]16; NOZCM-FPR128-CPU: fmov d1, [[REG2]]17 18; ZCM-FPR128-CPU: mov.16b [[REG2:v[0-9]+]], v319; ZCM-FPR128-CPU: mov.16b [[REG1:v[0-9]+]], v220; ZCM-FPR128-CPU: mov.16b v0, v221; ZCM-FPR128-CPU: mov.16b v1, v322; ZCM-FPR128-CPU-NEXT: bl {{_?foo_double}}23; ZCM-FPR128-CPU: mov.16b v0, [[REG1]]24; ZCM-FPR128-CPU: mov.16b v1, [[REG2]]25 26; NOZCM-FPR128-ATTR: fmov [[REG2:d[0-9]+]], d327; NOZCM-FPR128-ATTR: fmov [[REG1:d[0-9]+]], d228; NOZCM-FPR128-ATTR: fmov d0, d229; NOZCM-FPR128-ATTR: fmov d1, d330; NOZCM-FPR128-ATTR-NEXT: bl {{_?foo_double}}31; NOZCM-FPR128-ATTR: fmov d0, [[REG1]]32; NOZCM-FPR128-ATTR: fmov d1, [[REG2]]33 34; ZCM-FPR128-ATTR: mov.16b v0, v235; ZCM-FPR128-ATTR: mov.16b v1, v336; ZCM-FPR128-ATTR: mov.16b [[REG2:v[0-9]+]], v337; ZCM-FPR128-ATTR: mov.16b [[REG1:v[0-9]+]], v238; ZCM-FPR128-ATTR-NEXT: bl {{_?foo_double}}39; ZCM-FPR128-ATTR: mov.16b v0, [[REG1]]40; ZCM-FPR128-ATTR: mov.16b v1, [[REG2]]41  %call = call double @foo_double(double %c, double %d)42  %call1 = call double @foo_double(double %c, double %d)43  unreachable44}45 46declare float @foo_double(double, double)47 48define void @zero_cycle_regmove_FPR32(float %a, float %b, float %c, float %d) {49entry:50; CHECK-LABEL: t:51; NOZCM-FPR128-CPU: fmov s0, s252; NOZCM-FPR128-CPU: fmov s1, s353; NOZCM-FPR128-CPU: fmov [[REG2:s[0-9]+]], s354; NOZCM-FPR128-CPU: fmov [[REG1:s[0-9]+]], s255; NOZCM-FPR128-CPU-NEXT: bl {{_?foo_float}}56; NOZCM-FPR128-CPU: fmov s0, [[REG1]]57; NOZCM-FPR128-CPU: fmov s1, [[REG2]]58 59; ZCM-FPR128-CPU: mov.16b [[REG2:v[0-9]+]], v360; ZCM-FPR128-CPU: mov.16b [[REG1:v[0-9]+]], v261; ZCM-FPR128-CPU: mov.16b v0, v262; ZCM-FPR128-CPU: mov.16b v1, v363; ZCM-FPR128-CPU-NEXT: bl {{_?foo_float}}64; ZCM-FPR128-CPU: mov.16b v0, [[REG1]]65; ZCM-FPR128-CPU: mov.16b v1, [[REG2]]66 67; NOZCM-FPR128-ATTR: fmov [[REG2:s[0-9]+]], s368; NOZCM-FPR128-ATTR: fmov [[REG1:s[0-9]+]], s269; NOZCM-FPR128-ATTR: fmov s0, s270; NOZCM-FPR128-ATTR: fmov s1, s371; NOZCM-FPR128-ATTR-NEXT: bl {{_?foo_float}}72; NOZCM-FPR128-ATTR: fmov s0, [[REG1]]73; NOZCM-FPR128-ATTR: fmov s1, [[REG2]]74 75; ZCM-FPR128-ATTR: mov.16b v0, v276; ZCM-FPR128-ATTR: mov.16b v1, v377; ZCM-FPR128-ATTR: mov.16b [[REG2:v[0-9]+]], v378; ZCM-FPR128-ATTR: mov.16b [[REG1:v[0-9]+]], v279; ZCM-FPR128-ATTR-NEXT: bl {{_?foo_float}}80; ZCM-FPR128-ATTR: mov.16b v0, [[REG1]]81; ZCM-FPR128-ATTR: mov.16b v1, [[REG2]]82  %call = call float @foo_float(float %c, float %d)83  %call1 = call float @foo_float(float %c, float %d)84  unreachable85}86 87declare float @foo_float(float, float)88 89define void @zero_cycle_regmove_FPR16(half %a, half %b, half %c, half %d) {90entry:91; CHECK-LABEL: t:92; NOZCM-FPR128-CPU: fmov s0, s293; NOZCM-FPR128-CPU: fmov s1, s394; NOZCM-FPR128-CPU: fmov [[REG2:s[0-9]+]], s395; NOZCM-FPR128-CPU: fmov [[REG1:s[0-9]+]], s296; NOZCM-FPR128-CPU-NEXT: bl {{_?foo_half}}97; NOZCM-FPR128-CPU: fmov s0, [[REG1]]98; NOZCM-FPR128-CPU: fmov s1, [[REG2]]99 100; ZCM-FPR128-CPU: mov.16b [[REG2:v[0-9]+]], v3101; ZCM-FPR128-CPU: mov.16b [[REG1:v[0-9]+]], v2102; ZCM-FPR128-CPU: mov.16b v0, v2103; ZCM-FPR128-CPU: mov.16b v1, v3104; ZCM-FPR128-CPU-NEXT: bl {{_?foo_half}}105; ZCM-FPR128-CPU: mov.16b v0, [[REG1]]106; ZCM-FPR128-CPU: mov.16b v1, [[REG2]]107 108; NOZCM-FPR128-ATTR: fmov [[REG2:s[0-9]+]], s3109; NOZCM-FPR128-ATTR: fmov [[REG1:s[0-9]+]], s2110; NOZCM-FPR128-ATTR: fmov s0, s2111; NOZCM-FPR128-ATTR: fmov s1, s3112; NOZCM-FPR128-ATTR-NEXT: bl {{_?foo_half}}113; NOZCM-FPR128-ATTR: fmov s0, [[REG1]]114; NOZCM-FPR128-ATTR: fmov s1, [[REG2]]115 116; ZCM-FPR128-ATTR: mov.16b v0, v2117; ZCM-FPR128-ATTR: mov.16b v1, v3118; ZCM-FPR128-ATTR: mov.16b [[REG2:v[0-9]+]], v3119; ZCM-FPR128-ATTR: mov.16b [[REG1:v[0-9]+]], v2120; ZCM-FPR128-ATTR-NEXT: bl {{_?foo_half}}121; ZCM-FPR128-ATTR: mov.16b v0, [[REG1]]122; ZCM-FPR128-ATTR: mov.16b v1, [[REG2]]123  %call = call half @foo_half(half %c, half %d)124  %call1 = call half @foo_half(half %c, half %d)125  unreachable126}127 128declare half @foo_half(half, half)129