184 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown -ppc-vsr-nums-as-vr \3; RUN: -relocation-model=pic -ppc-asm-full-reg-names -verify-machineinstrs \4; RUN: < %s | FileCheck %s5; RUN: llc -mcpu=pwr9 -mtriple=powerpc64-unknown-unknown -ppc-vsr-nums-as-vr \6; RUN: -ppc-asm-full-reg-names -verify-machineinstrs \7; RUN: < %s | FileCheck %s -check-prefix=CHECK-BE8 9define dso_local void @testutof(<8 x i16> %a, ptr nocapture %ptr) local_unnamed_addr #0 {10; CHECK-LABEL: testutof:11; CHECK: # %bb.0: # %entry12; CHECK-NEXT: vextractuh v2, v2, 1413; CHECK-NEXT: xscvuxdsp f0, v214; CHECK-NEXT: stfs f0, 0(r5)15; CHECK-NEXT: blr16;17; CHECK-BE-LABEL: testutof:18; CHECK-BE: # %bb.0: # %entry19; CHECK-BE-NEXT: vextractuh v2, v2, 020; CHECK-BE-NEXT: xscvuxdsp f0, v221; CHECK-BE-NEXT: stfs f0, 0(r5)22; CHECK-BE-NEXT: blr23entry:24 %vecext = extractelement <8 x i16> %a, i32 025 %conv = uitofp i16 %vecext to float26 store float %conv, ptr %ptr, align 427 ret void28}29 30define dso_local void @testutod(<8 x i16> %a, ptr nocapture %ptr) local_unnamed_addr #0 {31; CHECK-LABEL: testutod:32; CHECK: # %bb.0: # %entry33; CHECK-NEXT: vextractuh v2, v2, 1434; CHECK-NEXT: xscvuxddp f0, v235; CHECK-NEXT: stfd f0, 0(r5)36; CHECK-NEXT: blr37;38; CHECK-BE-LABEL: testutod:39; CHECK-BE: # %bb.0: # %entry40; CHECK-BE-NEXT: vextractuh v2, v2, 041; CHECK-BE-NEXT: xscvuxddp f0, v242; CHECK-BE-NEXT: stfd f0, 0(r5)43; CHECK-BE-NEXT: blr44entry:45 %vecext = extractelement <8 x i16> %a, i32 046 %conv = uitofp i16 %vecext to double47 store double %conv, ptr %ptr, align 848 ret void49}50 51define dso_local void @teststof(<8 x i16> %a, ptr nocapture %ptr) local_unnamed_addr #0 {52; CHECK-LABEL: teststof:53; CHECK: # %bb.0: # %entry54; CHECK-NEXT: vextractuh v2, v2, 1455; CHECK-NEXT: vextsh2d v2, v256; CHECK-NEXT: xscvsxdsp f0, v257; CHECK-NEXT: stfs f0, 0(r5)58; CHECK-NEXT: blr59;60; CHECK-BE-LABEL: teststof:61; CHECK-BE: # %bb.0: # %entry62; CHECK-BE-NEXT: vextractuh v2, v2, 063; CHECK-BE-NEXT: vextsh2d v2, v264; CHECK-BE-NEXT: xscvsxdsp f0, v265; CHECK-BE-NEXT: stfs f0, 0(r5)66; CHECK-BE-NEXT: blr67entry:68 %vecext = extractelement <8 x i16> %a, i32 069 %conv = sitofp i16 %vecext to float70 store float %conv, ptr %ptr, align 471 ret void72}73 74define dso_local void @teststod(<8 x i16> %a, ptr nocapture %ptr) local_unnamed_addr #0 {75; CHECK-LABEL: teststod:76; CHECK: # %bb.0: # %entry77; CHECK-NEXT: vextractuh v2, v2, 1478; CHECK-NEXT: vextsh2d v2, v279; CHECK-NEXT: xscvsxddp f0, v280; CHECK-NEXT: stfd f0, 0(r5)81; CHECK-NEXT: blr82;83; CHECK-BE-LABEL: teststod:84; CHECK-BE: # %bb.0: # %entry85; CHECK-BE-NEXT: vextractuh v2, v2, 086; CHECK-BE-NEXT: vextsh2d v2, v287; CHECK-BE-NEXT: xscvsxddp f0, v288; CHECK-BE-NEXT: stfd f0, 0(r5)89; CHECK-BE-NEXT: blr90entry:91 %vecext = extractelement <8 x i16> %a, i32 092 %conv = sitofp i16 %vecext to double93 store double %conv, ptr %ptr, align 894 ret void95}96 97define dso_local void @testsubtod(<16 x i8> %a, ptr nocapture %ptr) local_unnamed_addr #0 {98; CHECK-LABEL: testsubtod:99; CHECK: # %bb.0: # %entry100; CHECK-NEXT: vextractub v2, v2, 15101; CHECK-NEXT: xscvuxddp f0, v2102; CHECK-NEXT: stfd f0, 0(r5)103; CHECK-NEXT: blr104;105; CHECK-BE-LABEL: testsubtod:106; CHECK-BE: # %bb.0: # %entry107; CHECK-BE-NEXT: vextractub v2, v2, 0108; CHECK-BE-NEXT: xscvuxddp f0, v2109; CHECK-BE-NEXT: stfd f0, 0(r5)110; CHECK-BE-NEXT: blr111entry:112 %vecext = extractelement <16 x i8> %a, i32 0113 %conv = uitofp i8 %vecext to double114 store double %conv, ptr %ptr, align 8115 ret void116}117 118define dso_local void @testsbtod(<16 x i8> %a, ptr nocapture %ptr) local_unnamed_addr #0 {119; CHECK-LABEL: testsbtod:120; CHECK: # %bb.0: # %entry121; CHECK-NEXT: vextractuh v2, v2, 15122; CHECK-NEXT: vextsh2d v2, v2123; CHECK-NEXT: xscvsxddp f0, v2124; CHECK-NEXT: stfd f0, 0(r5)125; CHECK-NEXT: blr126;127; CHECK-BE-LABEL: testsbtod:128; CHECK-BE: # %bb.0: # %entry129; CHECK-BE-NEXT: vextractub v2, v2, 0130; CHECK-BE-NEXT: vextsh2d v2, v2131; CHECK-BE-NEXT: xscvsxddp f0, v2132; CHECK-BE-NEXT: stfd f0, 0(r5)133; CHECK-BE-NEXT: blr134entry:135 %vecext = extractelement <16 x i8> %a, i32 0136 %conv = sitofp i8 %vecext to double137 store double %conv, ptr %ptr, align 8138 ret void139}140 141define dso_local void @testsubtof(<16 x i8> %a, ptr nocapture %ptr) local_unnamed_addr #0 {142; CHECK-LABEL: testsubtof:143; CHECK: # %bb.0: # %entry144; CHECK-NEXT: vextractub v2, v2, 15145; CHECK-NEXT: xscvuxdsp f0, v2146; CHECK-NEXT: stfs f0, 0(r5)147; CHECK-NEXT: blr148;149; CHECK-BE-LABEL: testsubtof:150; CHECK-BE: # %bb.0: # %entry151; CHECK-BE-NEXT: vextractub v2, v2, 0152; CHECK-BE-NEXT: xscvuxdsp f0, v2153; CHECK-BE-NEXT: stfs f0, 0(r5)154; CHECK-BE-NEXT: blr155entry:156 %vecext = extractelement <16 x i8> %a, i32 0157 %conv = uitofp i8 %vecext to float158 store float %conv, ptr %ptr, align 8159 ret void160}161 162define dso_local void @testsbtof(<16 x i8> %a, ptr nocapture %ptr) local_unnamed_addr #0 {163; CHECK-LABEL: testsbtof:164; CHECK: # %bb.0: # %entry165; CHECK-NEXT: vextractub v2, v2, 15166; CHECK-NEXT: vextsh2d v2, v2167; CHECK-NEXT: xscvsxdsp f0, v2168; CHECK-NEXT: stfs f0, 0(r5)169; CHECK-NEXT: blr170;171; CHECK-BE-LABEL: testsbtof:172; CHECK-BE: # %bb.0: # %entry173; CHECK-BE-NEXT: vextractub v2, v2, 0174; CHECK-BE-NEXT: vextsh2d v2, v2175; CHECK-BE-NEXT: xscvsxdsp f0, v2176; CHECK-BE-NEXT: stfs f0, 0(r5)177; CHECK-BE-NEXT: blr178entry:179 %vecext = extractelement <16 x i8> %a, i32 0180 %conv = sitofp i8 %vecext to float181 store float %conv, ptr %ptr, align 8182 ret void183}184