brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 550a2b5 Raw
187 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=hexagon -hexagon-bit=false < %s | FileCheck %s3 4define bfloat @load_scalar_bf(ptr %addr) {5; CHECK-LABEL: load_scalar_bf:6; CHECK:         .cfi_startproc7; CHECK-NEXT:  // %bb.0: // %entry8; CHECK-NEXT:    {9; CHECK-NEXT:     [[REG:r[0-9]+]] = memuh(r0+#0)10; CHECK-NEXT:    }11; CHECK-NEXT:    {12; CHECK-NEXT:     r0 = aslh([[REG]])13; CHECK-NEXT:     jumpr r3114; CHECK-NEXT:    }15 16entry:17  %0 = load bfloat, ptr %addr, align 218  ret bfloat %019}20 21define void @store_scalar_bf(bfloat %v, ptr %addr) {22; CHECK-LABEL: store_scalar_bf:23; CHECK:         .cfi_startproc24; CHECK-NEXT:  // %bb.0: // %entry25; CHECK-NEXT:    {26; CHECK-NEXT:     [[R_A:r[0-9]+]] = ##13107127; CHECK-NEXT:     [[R_B:r[0-9]+]] = ##3276828; CHECK-NEXT:    }29; CHECK-NEXT:    {30; CHECK-NEXT:     [[R_C:r[0-9]+]] = ##6553531; CHECK-NEXT:     [[R_D:r[0-9]+]] = asrh(r0)32; CHECK-NEXT:     [[R_A]] = and(r0,[[R_A]])33; CHECK-NEXT:    }34; CHECK-NEXT:    {35; CHECK-NEXT:     [[P0:p[0-9]+]] = sfclass(r0,#16)36; CHECK-NEXT:     [[R_E:r[0-9]+]] = and(r0,[[R_B]])37; CHECK-NEXT:     [[P1:p[0-9]+]] = cmp.eq([[R_A]],[[R_B]])38; CHECK-NEXT:    }39; CHECK-NEXT:    {40; CHECK-NEXT:     r0 = add(r0,[[R_E]])41; CHECK-NEXT:    }42; CHECK-NEXT:    {43; CHECK-NEXT:     r0 = asrh(r0)44; CHECK-NEXT:     if ([[P1]]) [[R_B]] = and([[R_D]],[[R_C]])45; CHECK-NEXT:    }46; CHECK-NEXT:    {47; CHECK-NEXT:     if (![[P1]]) [[R_B]] = and(r0,[[R_C]])48; CHECK-NEXT:    }49; CHECK-NEXT:    {50; CHECK-NEXT:     if ([[P0]]) [[R_B]] = ##3276751; CHECK-NEXT:    }52; CHECK-NEXT:    {53; CHECK-NEXT:     jumpr r3154; CHECK-NEXT:     memh(r1+#0) = [[R_B]]55; CHECK-NEXT:    }56 57entry:58  store bfloat %v, ptr %addr, align 259  ret void60}61 62define bfloat @sum(bfloat %a, bfloat %b) #0 {63; CHECK-LABEL: sum:64; CHECK:         .cfi_startproc65; CHECK-NEXT:  // %bb.0: // %entry66; CHECK-NEXT:    {67; CHECK-NEXT:     [[R3:r[0-9]+]] = ##3276868; CHECK-NEXT:     [[R4:r[0-9]+]] = ##13107169; CHECK-NEXT:    }70; CHECK-NEXT:    {71; CHECK-NEXT:     [[R2:r[0-9]+]] = ##6553572; CHECK-NEXT:     [[R6:r[0-9]+]] = and(r0,[[R3]])73; CHECK-NEXT:     [[R5:r[0-9]+]] = and(r0,[[R4]])74; CHECK-NEXT:    }75; CHECK-NEXT:    {76; CHECK-NEXT:     [[R8:r[0-9]+]] = and(r1,[[R3]])77; CHECK-NEXT:     [[R7:r[0-9]+]] = and(r1,[[R4]])78; CHECK-NEXT:     [[R6]] = add(r0,[[R6]])79; CHECK-NEXT:     [[P0:p[0-9]+]] = cmp.eq([[R5]],[[R3]])80; CHECK-NEXT:    }81; CHECK-NEXT:    {82; CHECK-NEXT:     [[R5]] = asrh(r0)83; CHECK-NEXT:     [[P1:p[0-9]+]] = cmp.eq([[R7]],[[R3]])84; CHECK-NEXT:     [[R7]] = asrh(r1)85; CHECK-NEXT:     [[R8]] = add(r1,[[R8]])86; CHECK-NEXT:    }87; CHECK-NEXT:    {88; CHECK-NEXT:     [[R6]] = asrh([[R6]])89; CHECK-NEXT:     if ([[P0]]) [[R5]] = and([[R5]],[[R2]])90; CHECK-NEXT:    }91; CHECK-NEXT:    {92; CHECK-NEXT:     [[P0]] = sfclass(r0,#16)93; CHECK-NEXT:     if (![[P0]]) [[R5]] = and([[R6]],[[R2]])94; CHECK-NEXT:     [[R6]] = asrh([[R8]])95; CHECK-NEXT:     if ([[P1]]) [[R7]] = and([[R7]],[[R2]])96; CHECK-NEXT:    }97; CHECK-NEXT:    {98; CHECK-NEXT:     [[P1]] = sfclass(r1,#16)99; CHECK-NEXT:     [[R0:r[0-9]+]] = #32767100; CHECK-NEXT:     if (![[P1]]) [[R7]] = and([[R6]],[[R2]])101; CHECK-NEXT:    }102; CHECK-NEXT:    {103; CHECK-NEXT:     if ([[P0]]) [[R5]] = add([[R0]],#0)104; CHECK-NEXT:     if ([[P1]]) [[R7]] = add([[R0]],#0)105; CHECK-NEXT:    }106; CHECK-NEXT:    {107; CHECK-NEXT:     [[R6]] = aslh([[R7]])108; CHECK-NEXT:     [[R5]] = aslh([[R5]])109; CHECK-NEXT:    }110; CHECK-NEXT:    {111; CHECK-NEXT:     [[R1:r[0-9]+]] = sfadd([[R5]],[[R6]])112; CHECK-NEXT:    }113; CHECK-NEXT:    {114; CHECK-NEXT:     [[R5]] = and([[R1]],[[R3]])115; CHECK-NEXT:     [[R4]] = and([[R1]],[[R4]])116; CHECK-NEXT:     [[R6]] = asrh([[R1]])117; CHECK-NEXT:    }118; CHECK-NEXT:    {119; CHECK-NEXT:     [[P0]] = cmp.eq([[R4]],[[R3]])120; CHECK-NEXT:     [[R5]] = add([[R1]],[[R5]])121; CHECK-NEXT:    }122; CHECK-NEXT:    {123; CHECK-NEXT:     [[R3]] = asrh([[R5]])124; CHECK-NEXT:     if ([[P0]]) [[R4]] = and([[R6]],[[R2]])125; CHECK-NEXT:    }126; CHECK-NEXT:    {127; CHECK-NEXT:     [[P0]] = sfclass([[R1]],#16)128; CHECK-NEXT:     if (![[P0]]) [[R4]] = and([[R3]],[[R2]])129; CHECK-NEXT:    }130; CHECK-NEXT:    {131; CHECK-NEXT:     if ([[P0]]) [[R4]] = add([[R0]],#0)132; CHECK-NEXT:    }133; CHECK-NEXT:    {134; CHECK-NEXT:     r0 = aslh([[R4]])135; CHECK-NEXT:     jumpr r31136; CHECK-NEXT:    }137 138entry:139  %add = fadd bfloat %a, %b140  ret bfloat %add141}142 143; Function Attrs: noinline nounwind optnone144define dso_local i32 @double_bf16(bfloat %a, bfloat %b) #0 {145; CHECK-LABEL: double_bf16:146; CHECK:         .cfi_startproc147; CHECK-NEXT:  // %bb.0: // %entry148; CHECK-NEXT:    {149; CHECK-NEXT:     [[PAIR_A:r[0-9]+:[0-9]+]] = convert_sf2df(r0)150; CHECK-NEXT:     [[PAIR_B:r[0-9]+:[0-9]+]] = convert_sf2df(r1)151; CHECK-NEXT:     [[SP:r[0-9]+]] = add([[SP]],#-16)152; CHECK-NEXT:    }153; CHECK-NEXT:    {154; CHECK-NEXT:     [[RESULT:r[0-9]+:[0-9]+]] = dfadd([[PAIR_A]],[[PAIR_B]])155; CHECK-NEXT:    }156; CHECK-NEXT:    {157; CHECK-NEXT:     memd([[SP]]+#8) = [[RESULT]]158; CHECK-NEXT:    }159; CHECK-NEXT:    {160; CHECK-NEXT:     [[TMP:r[0-9]+]] = convert_df2sf([[RESULT]])161; CHECK-NEXT:    }162; CHECK-NEXT:    {163; CHECK-NEXT:     [[TMP1:r[0-9]+]] = lsr([[TMP]],#16)164; CHECK-NEXT:     [[R0:r[0-9]+]] = and([[TMP]],##-65536)165; CHECK-NEXT:     memh([[SP]]+#6) = [[TMP1]].new166; CHECK-NEXT:    }167; CHECK-NEXT:    {168; CHECK-NEXT:     [[R0]] = convert_sf2w([[R0]]):chop169; CHECK-NEXT:     jumpr r31170; CHECK-NEXT:     [[SP]] = add([[SP]],#16)171; CHECK-NEXT:    }172 173entry:174  %c = alloca double, align 8175  %d = alloca bfloat, align 2176  %conv = fpext bfloat %a to double177  %conv1 = fpext bfloat %b to double178  %add = fadd double %conv, %conv1179  store double %add, ptr %c, align 8180  %2 = load double, ptr %c, align 8181  %conv2 = fptrunc double %2 to bfloat182  store bfloat %conv2, ptr %d, align 2183  %3 = load bfloat, ptr %d, align 2184  %conv3 = fptosi bfloat %3 to i32185  ret i32 %conv3186}187