brintos

brintos / llvm-project-archived public Read only

0
0
Text · 35.7 KiB · 905d110 Raw
1027 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s | FileCheck %s3; RUN: llc -use-constant-fp-for-scalable-splat < %s | FileCheck %s4 5target triple = "aarch64-unknown-linux-gnu"6 7;8; FADD9;10 11define <vscale x 8 x half> @fadd_h_immhalf(<vscale x 8 x half> %a) #0 {12; CHECK-LABEL: fadd_h_immhalf:13; CHECK:       // %bb.0:14; CHECK-NEXT:    ptrue p0.h15; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, #0.516; CHECK-NEXT:    ret17  %out = fadd <vscale x 8 x half> %a, splat(half 0.500000e+00)18  ret <vscale x 8 x half> %out19}20 21define <vscale x 8 x half> @fadd_h_immone(<vscale x 8 x half> %a) #0 {22; CHECK-LABEL: fadd_h_immone:23; CHECK:       // %bb.0:24; CHECK-NEXT:    ptrue p0.h25; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, #1.026; CHECK-NEXT:    ret27  %out = fadd <vscale x 8 x half> %a, splat(half 1.000000e+00)28  ret <vscale x 8 x half> %out29}30 31define <vscale x 4 x half> @fadd_4h_immhalf(<vscale x 4 x half> %a) #0 {32; CHECK-LABEL: fadd_4h_immhalf:33; CHECK:       // %bb.0:34; CHECK-NEXT:    ptrue p0.s35; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, #0.536; CHECK-NEXT:    ret37  %out = fadd <vscale x 4 x half> %a, splat(half 0.500000e+00)38  ret <vscale x 4 x half> %out39}40 41define <vscale x 4 x half> @fadd_4h_immone(<vscale x 4 x half> %a) #0 {42; CHECK-LABEL: fadd_4h_immone:43; CHECK:       // %bb.0:44; CHECK-NEXT:    ptrue p0.s45; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, #1.046; CHECK-NEXT:    ret47  %out = fadd <vscale x 4 x half> %a, splat(half 1.000000e+00)48  ret <vscale x 4 x half> %out49}50 51define <vscale x 2 x half> @fadd_2h_immhalf(<vscale x 2 x half> %a) #0 {52; CHECK-LABEL: fadd_2h_immhalf:53; CHECK:       // %bb.0:54; CHECK-NEXT:    ptrue p0.d55; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, #0.556; CHECK-NEXT:    ret57  %out = fadd <vscale x 2 x half> %a, splat(half 0.500000e+00)58  ret <vscale x 2 x half> %out59}60 61define <vscale x 2 x half> @fadd_2h_immone(<vscale x 2 x half> %a) #0 {62; CHECK-LABEL: fadd_2h_immone:63; CHECK:       // %bb.0:64; CHECK-NEXT:    ptrue p0.d65; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, #1.066; CHECK-NEXT:    ret67  %out = fadd <vscale x 2 x half> %a, splat(half 1.000000e+00)68  ret <vscale x 2 x half> %out69}70 71define <vscale x 4 x float> @fadd_s_immhalf(<vscale x 4 x float> %a) #0 {72; CHECK-LABEL: fadd_s_immhalf:73; CHECK:       // %bb.0:74; CHECK-NEXT:    ptrue p0.s75; CHECK-NEXT:    fadd z0.s, p0/m, z0.s, #0.576; CHECK-NEXT:    ret77  %out = fadd <vscale x 4 x float> %a, splat(float 0.500000e+00)78  ret <vscale x 4 x float> %out79}80 81define <vscale x 4 x float> @fadd_s_immone(<vscale x 4 x float> %a) #0 {82; CHECK-LABEL: fadd_s_immone:83; CHECK:       // %bb.0:84; CHECK-NEXT:    ptrue p0.s85; CHECK-NEXT:    fadd z0.s, p0/m, z0.s, #1.086; CHECK-NEXT:    ret87  %out = fadd <vscale x 4 x float> %a, splat(float 1.000000e+00)88  ret <vscale x 4 x float> %out89}90 91define <vscale x 2 x float> @fadd_2s_immhalf(<vscale x 2 x float> %a) #0 {92; CHECK-LABEL: fadd_2s_immhalf:93; CHECK:       // %bb.0:94; CHECK-NEXT:    ptrue p0.d95; CHECK-NEXT:    fadd z0.s, p0/m, z0.s, #0.596; CHECK-NEXT:    ret97  %out = fadd <vscale x 2 x float> %a, splat(float 0.500000e+00)98  ret <vscale x 2 x float> %out99}100 101define <vscale x 2 x float> @fadd_2s_immone(<vscale x 2 x float> %a) #0 {102; CHECK-LABEL: fadd_2s_immone:103; CHECK:       // %bb.0:104; CHECK-NEXT:    ptrue p0.d105; CHECK-NEXT:    fadd z0.s, p0/m, z0.s, #1.0106; CHECK-NEXT:    ret107  %out = fadd <vscale x 2 x float> %a, splat(float 1.000000e+00)108  ret <vscale x 2 x float> %out109}110 111 112define <vscale x 2 x double> @fadd_d_immhalf(<vscale x 2 x double> %a) #0 {113; CHECK-LABEL: fadd_d_immhalf:114; CHECK:       // %bb.0:115; CHECK-NEXT:    ptrue p0.d116; CHECK-NEXT:    fadd z0.d, p0/m, z0.d, #0.5117; CHECK-NEXT:    ret118  %out = fadd <vscale x 2 x double> %a, splat(double 0.500000e+00)119  ret <vscale x 2 x double> %out120}121 122define <vscale x 2 x double> @fadd_d_immone(<vscale x 2 x double> %a) #0 {123; CHECK-LABEL: fadd_d_immone:124; CHECK:       // %bb.0:125; CHECK-NEXT:    ptrue p0.d126; CHECK-NEXT:    fadd z0.d, p0/m, z0.d, #1.0127; CHECK-NEXT:    ret128  %out = fadd <vscale x 2 x double> %a, splat(double 1.000000e+00)129  ret <vscale x 2 x double> %out130}131 132;133; FMAX134;135 136define <vscale x 8 x half> @fmax_h_immzero(<vscale x 8 x half> %a) #0 {137; CHECK-LABEL: fmax_h_immzero:138; CHECK:       // %bb.0:139; CHECK-NEXT:    ptrue p0.h140; CHECK-NEXT:    fmax z0.h, p0/m, z0.h, #0.0141; CHECK-NEXT:    ret142  %out = call <vscale x 8 x half> @llvm.maximum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> zeroinitializer)143  ret <vscale x 8 x half> %out144}145 146define <vscale x 8 x half> @fmax_h_immone(<vscale x 8 x half> %a) #0 {147; CHECK-LABEL: fmax_h_immone:148; CHECK:       // %bb.0:149; CHECK-NEXT:    ptrue p0.h150; CHECK-NEXT:    fmax z0.h, p0/m, z0.h, #1.0151; CHECK-NEXT:    ret152  %out = call <vscale x 8 x half> @llvm.maximum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> splat(half 1.000000e+00))153  ret <vscale x 8 x half> %out154}155 156define <vscale x 4 x half> @fmax_4h_immzero(<vscale x 4 x half> %a) #0 {157; CHECK-LABEL: fmax_4h_immzero:158; CHECK:       // %bb.0:159; CHECK-NEXT:    ptrue p0.s160; CHECK-NEXT:    fmax z0.h, p0/m, z0.h, #0.0161; CHECK-NEXT:    ret162  %out = call <vscale x 4 x half> @llvm.maximum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> zeroinitializer)163  ret <vscale x 4 x half> %out164}165 166define <vscale x 4 x half> @fmax_4h_immone(<vscale x 4 x half> %a) #0 {167; CHECK-LABEL: fmax_4h_immone:168; CHECK:       // %bb.0:169; CHECK-NEXT:    ptrue p0.s170; CHECK-NEXT:    fmax z0.h, p0/m, z0.h, #1.0171; CHECK-NEXT:    ret172  %out = call <vscale x 4 x half> @llvm.maximum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> splat(half 1.000000e+00))173  ret <vscale x 4 x half> %out174}175 176define <vscale x 2 x half> @fmax_2h_immzero(<vscale x 2 x half> %a) #0 {177; CHECK-LABEL: fmax_2h_immzero:178; CHECK:       // %bb.0:179; CHECK-NEXT:    ptrue p0.d180; CHECK-NEXT:    fmax z0.h, p0/m, z0.h, #0.0181; CHECK-NEXT:    ret182  %out = call <vscale x 2 x half> @llvm.maximum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> zeroinitializer)183  ret <vscale x 2 x half> %out184}185 186define <vscale x 2 x half> @fmax_2h_immone(<vscale x 2 x half> %a) #0 {187; CHECK-LABEL: fmax_2h_immone:188; CHECK:       // %bb.0:189; CHECK-NEXT:    ptrue p0.d190; CHECK-NEXT:    fmax z0.h, p0/m, z0.h, #1.0191; CHECK-NEXT:    ret192  %out = call <vscale x 2 x half> @llvm.maximum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> splat(half 1.000000e+00))193  ret <vscale x 2 x half> %out194}195 196define <vscale x 4 x float> @fmax_s_immzero(<vscale x 4 x float> %a) #0 {197; CHECK-LABEL: fmax_s_immzero:198; CHECK:       // %bb.0:199; CHECK-NEXT:    ptrue p0.s200; CHECK-NEXT:    fmax z0.s, p0/m, z0.s, #0.0201; CHECK-NEXT:    ret202  %out = call <vscale x 4 x float> @llvm.maximum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> zeroinitializer)203  ret <vscale x 4 x float> %out204}205 206define <vscale x 4 x float> @fmax_s_immone(<vscale x 4 x float> %a) #0 {207; CHECK-LABEL: fmax_s_immone:208; CHECK:       // %bb.0:209; CHECK-NEXT:    ptrue p0.s210; CHECK-NEXT:    fmax z0.s, p0/m, z0.s, #1.0211; CHECK-NEXT:    ret212  %out = call <vscale x 4 x float> @llvm.maximum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> splat(float 1.000000e+00))213  ret <vscale x 4 x float> %out214}215 216define <vscale x 2 x float> @fmax_2s_immzero(<vscale x 2 x float> %a) #0 {217; CHECK-LABEL: fmax_2s_immzero:218; CHECK:       // %bb.0:219; CHECK-NEXT:    ptrue p0.d220; CHECK-NEXT:    fmax z0.s, p0/m, z0.s, #0.0221; CHECK-NEXT:    ret222  %out = call <vscale x 2 x float> @llvm.maximum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> zeroinitializer)223  ret <vscale x 2 x float> %out224}225 226define <vscale x 2 x float> @fmax_2s_immone(<vscale x 2 x float> %a) #0 {227; CHECK-LABEL: fmax_2s_immone:228; CHECK:       // %bb.0:229; CHECK-NEXT:    ptrue p0.d230; CHECK-NEXT:    fmax z0.s, p0/m, z0.s, #1.0231; CHECK-NEXT:    ret232  %out = call <vscale x 2 x float> @llvm.maximum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> splat(float 1.000000e+00))233  ret <vscale x 2 x float> %out234}235 236define <vscale x 2 x double> @fmax_d_immzero(<vscale x 2 x double> %a) #0 {237; CHECK-LABEL: fmax_d_immzero:238; CHECK:       // %bb.0:239; CHECK-NEXT:    ptrue p0.d240; CHECK-NEXT:    fmax z0.d, p0/m, z0.d, #0.0241; CHECK-NEXT:    ret242  %out = call <vscale x 2 x double> @llvm.maximum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> zeroinitializer)243  ret <vscale x 2 x double> %out244}245 246define <vscale x 2 x double> @fmax_d_immone(<vscale x 2 x double> %a) #0 {247; CHECK-LABEL: fmax_d_immone:248; CHECK:       // %bb.0:249; CHECK-NEXT:    ptrue p0.d250; CHECK-NEXT:    fmax z0.d, p0/m, z0.d, #1.0251; CHECK-NEXT:    ret252  %out = call <vscale x 2 x double> @llvm.maximum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> splat(double 1.000000e+00))253  ret <vscale x 2 x double> %out254}255 256;257; FMAXNM258;259 260define <vscale x 8 x half> @fmaxnm_h_immzero(<vscale x 8 x half> %a) #0 {261; CHECK-LABEL: fmaxnm_h_immzero:262; CHECK:       // %bb.0:263; CHECK-NEXT:    ptrue p0.h264; CHECK-NEXT:    fmaxnm z0.h, p0/m, z0.h, #0.0265; CHECK-NEXT:    ret266  %out = call <vscale x 8 x half> @llvm.maxnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> zeroinitializer)267  ret <vscale x 8 x half> %out268}269 270define <vscale x 8 x half> @fmaxnm_h_immone(<vscale x 8 x half> %a) #0 {271; CHECK-LABEL: fmaxnm_h_immone:272; CHECK:       // %bb.0:273; CHECK-NEXT:    ptrue p0.h274; CHECK-NEXT:    fmaxnm z0.h, p0/m, z0.h, #1.0275; CHECK-NEXT:    ret276  %out = call <vscale x 8 x half> @llvm.maxnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> splat(half 1.000000e+00))277  ret <vscale x 8 x half> %out278}279 280define <vscale x 4 x half> @fmaxnm_4h_immzero(<vscale x 4 x half> %a) #0 {281; CHECK-LABEL: fmaxnm_4h_immzero:282; CHECK:       // %bb.0:283; CHECK-NEXT:    ptrue p0.s284; CHECK-NEXT:    fmaxnm z0.h, p0/m, z0.h, #0.0285; CHECK-NEXT:    ret286  %out = call <vscale x 4 x half> @llvm.maxnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> zeroinitializer)287  ret <vscale x 4 x half> %out288}289 290define <vscale x 4 x half> @fmaxnm_4h_immone(<vscale x 4 x half> %a) #0 {291; CHECK-LABEL: fmaxnm_4h_immone:292; CHECK:       // %bb.0:293; CHECK-NEXT:    ptrue p0.s294; CHECK-NEXT:    fmaxnm z0.h, p0/m, z0.h, #1.0295; CHECK-NEXT:    ret296  %out = call <vscale x 4 x half> @llvm.maxnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> splat(half 1.000000e+00))297  ret <vscale x 4 x half> %out298}299 300define <vscale x 2 x half> @fmaxnm_2h_immzero(<vscale x 2 x half> %a) #0 {301; CHECK-LABEL: fmaxnm_2h_immzero:302; CHECK:       // %bb.0:303; CHECK-NEXT:    ptrue p0.d304; CHECK-NEXT:    fmaxnm z0.h, p0/m, z0.h, #0.0305; CHECK-NEXT:    ret306  %out = call <vscale x 2 x half> @llvm.maxnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> zeroinitializer)307  ret <vscale x 2 x half> %out308}309 310define <vscale x 2 x half> @fmaxnm_2h_immone(<vscale x 2 x half> %a) #0 {311; CHECK-LABEL: fmaxnm_2h_immone:312; CHECK:       // %bb.0:313; CHECK-NEXT:    ptrue p0.d314; CHECK-NEXT:    fmaxnm z0.h, p0/m, z0.h, #1.0315; CHECK-NEXT:    ret316  %out = call <vscale x 2 x half> @llvm.maxnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> splat(half 1.000000e+00))317  ret <vscale x 2 x half> %out318}319 320define <vscale x 4 x float> @fmaxnm_s_immzero(<vscale x 4 x float> %a) #0 {321; CHECK-LABEL: fmaxnm_s_immzero:322; CHECK:       // %bb.0:323; CHECK-NEXT:    ptrue p0.s324; CHECK-NEXT:    fmaxnm z0.s, p0/m, z0.s, #0.0325; CHECK-NEXT:    ret326  %out = call <vscale x 4 x float> @llvm.maxnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> zeroinitializer)327  ret <vscale x 4 x float> %out328}329 330define <vscale x 4 x float> @fmaxnm_s_immone(<vscale x 4 x float> %a) #0 {331; CHECK-LABEL: fmaxnm_s_immone:332; CHECK:       // %bb.0:333; CHECK-NEXT:    ptrue p0.s334; CHECK-NEXT:    fmaxnm z0.s, p0/m, z0.s, #1.0335; CHECK-NEXT:    ret336  %out = call <vscale x 4 x float> @llvm.maxnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> splat(float 1.000000e+00))337  ret <vscale x 4 x float> %out338}339 340define <vscale x 2 x float> @fmaxnm_2s_immzero(<vscale x 2 x float> %a) #0 {341; CHECK-LABEL: fmaxnm_2s_immzero:342; CHECK:       // %bb.0:343; CHECK-NEXT:    ptrue p0.d344; CHECK-NEXT:    fmaxnm z0.s, p0/m, z0.s, #0.0345; CHECK-NEXT:    ret346  %out = call <vscale x 2 x float> @llvm.maxnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> zeroinitializer)347  ret <vscale x 2 x float> %out348}349 350define <vscale x 2 x float> @fmaxnm_2s_immone(<vscale x 2 x float> %a) #0 {351; CHECK-LABEL: fmaxnm_2s_immone:352; CHECK:       // %bb.0:353; CHECK-NEXT:    ptrue p0.d354; CHECK-NEXT:    fmaxnm z0.s, p0/m, z0.s, #1.0355; CHECK-NEXT:    ret356  %out = call <vscale x 2 x float> @llvm.maxnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> splat(float 1.000000e+00))357  ret <vscale x 2 x float> %out358}359 360define <vscale x 2 x double> @fmaxnm_d_immzero(<vscale x 2 x double> %a) #0 {361; CHECK-LABEL: fmaxnm_d_immzero:362; CHECK:       // %bb.0:363; CHECK-NEXT:    ptrue p0.d364; CHECK-NEXT:    fmaxnm z0.d, p0/m, z0.d, #0.0365; CHECK-NEXT:    ret366  %out = call <vscale x 2 x double> @llvm.maxnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> zeroinitializer)367  ret <vscale x 2 x double> %out368}369 370define <vscale x 2 x double> @fmaxnm_d_immone(<vscale x 2 x double> %a) #0 {371; CHECK-LABEL: fmaxnm_d_immone:372; CHECK:       // %bb.0:373; CHECK-NEXT:    ptrue p0.d374; CHECK-NEXT:    fmaxnm z0.d, p0/m, z0.d, #1.0375; CHECK-NEXT:    ret376  %out = call <vscale x 2 x double> @llvm.maxnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> splat(double 1.000000e+00))377  ret <vscale x 2 x double> %out378}379 380;381; FMIN382;383 384define <vscale x 8 x half> @fmin_h_immzero(<vscale x 8 x half> %a) #0 {385; CHECK-LABEL: fmin_h_immzero:386; CHECK:       // %bb.0:387; CHECK-NEXT:    ptrue p0.h388; CHECK-NEXT:    fmin z0.h, p0/m, z0.h, #0.0389; CHECK-NEXT:    ret390  %out = call <vscale x 8 x half> @llvm.minimum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> zeroinitializer)391  ret <vscale x 8 x half> %out392}393 394define <vscale x 8 x half> @fmin_h_immone(<vscale x 8 x half> %a) #0 {395; CHECK-LABEL: fmin_h_immone:396; CHECK:       // %bb.0:397; CHECK-NEXT:    ptrue p0.h398; CHECK-NEXT:    fmin z0.h, p0/m, z0.h, #1.0399; CHECK-NEXT:    ret400  %out = call <vscale x 8 x half> @llvm.minimum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> splat(half 1.000000e+00))401  ret <vscale x 8 x half> %out402}403 404define <vscale x 4 x half> @fmin_4h_immzero(<vscale x 4 x half> %a) #0 {405; CHECK-LABEL: fmin_4h_immzero:406; CHECK:       // %bb.0:407; CHECK-NEXT:    ptrue p0.s408; CHECK-NEXT:    fmin z0.h, p0/m, z0.h, #0.0409; CHECK-NEXT:    ret410  %out = call <vscale x 4 x half> @llvm.minimum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> zeroinitializer)411  ret <vscale x 4 x half> %out412}413 414define <vscale x 4 x half> @fmin_4h_immone(<vscale x 4 x half> %a) #0 {415; CHECK-LABEL: fmin_4h_immone:416; CHECK:       // %bb.0:417; CHECK-NEXT:    ptrue p0.s418; CHECK-NEXT:    fmin z0.h, p0/m, z0.h, #1.0419; CHECK-NEXT:    ret420  %out = call <vscale x 4 x half> @llvm.minimum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> splat(half 1.000000e+00))421  ret <vscale x 4 x half> %out422}423 424define <vscale x 2 x half> @fmin_2h_immzero(<vscale x 2 x half> %a) #0 {425; CHECK-LABEL: fmin_2h_immzero:426; CHECK:       // %bb.0:427; CHECK-NEXT:    ptrue p0.d428; CHECK-NEXT:    fmin z0.h, p0/m, z0.h, #0.0429; CHECK-NEXT:    ret430  %out = call <vscale x 2 x half> @llvm.minimum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> zeroinitializer)431  ret <vscale x 2 x half> %out432}433 434define <vscale x 2 x half> @fmin_2h_immone(<vscale x 2 x half> %a) #0 {435; CHECK-LABEL: fmin_2h_immone:436; CHECK:       // %bb.0:437; CHECK-NEXT:    ptrue p0.d438; CHECK-NEXT:    fmin z0.h, p0/m, z0.h, #1.0439; CHECK-NEXT:    ret440  %out = call <vscale x 2 x half> @llvm.minimum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> splat(half 1.000000e+00))441  ret <vscale x 2 x half> %out442}443 444define <vscale x 4 x float> @fmin_s_immzero(<vscale x 4 x float> %a) #0 {445; CHECK-LABEL: fmin_s_immzero:446; CHECK:       // %bb.0:447; CHECK-NEXT:    ptrue p0.s448; CHECK-NEXT:    fmin z0.s, p0/m, z0.s, #0.0449; CHECK-NEXT:    ret450  %out = call <vscale x 4 x float> @llvm.minimum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> zeroinitializer)451  ret <vscale x 4 x float> %out452}453 454define <vscale x 4 x float> @fmin_s_immone(<vscale x 4 x float> %a) #0 {455; CHECK-LABEL: fmin_s_immone:456; CHECK:       // %bb.0:457; CHECK-NEXT:    ptrue p0.s458; CHECK-NEXT:    fmin z0.s, p0/m, z0.s, #1.0459; CHECK-NEXT:    ret460  %out = call <vscale x 4 x float> @llvm.minimum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> splat(float 1.000000e+00))461  ret <vscale x 4 x float> %out462}463 464define <vscale x 2 x float> @fmin_2s_immzero(<vscale x 2 x float> %a) #0 {465; CHECK-LABEL: fmin_2s_immzero:466; CHECK:       // %bb.0:467; CHECK-NEXT:    ptrue p0.d468; CHECK-NEXT:    fmin z0.s, p0/m, z0.s, #0.0469; CHECK-NEXT:    ret470  %out = call <vscale x 2 x float> @llvm.minimum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> zeroinitializer)471  ret <vscale x 2 x float> %out472}473 474define <vscale x 2 x float> @fmin_2s_immone(<vscale x 2 x float> %a) #0 {475; CHECK-LABEL: fmin_2s_immone:476; CHECK:       // %bb.0:477; CHECK-NEXT:    ptrue p0.d478; CHECK-NEXT:    fmin z0.s, p0/m, z0.s, #1.0479; CHECK-NEXT:    ret480  %out = call <vscale x 2 x float> @llvm.minimum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> splat(float 1.000000e+00))481  ret <vscale x 2 x float> %out482}483 484define <vscale x 2 x double> @fmin_d_immzero(<vscale x 2 x double> %a) #0 {485; CHECK-LABEL: fmin_d_immzero:486; CHECK:       // %bb.0:487; CHECK-NEXT:    ptrue p0.d488; CHECK-NEXT:    fmin z0.d, p0/m, z0.d, #0.0489; CHECK-NEXT:    ret490  %out = call <vscale x 2 x double> @llvm.minimum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> zeroinitializer)491  ret <vscale x 2 x double> %out492}493 494define <vscale x 2 x double> @fmin_d_immone(<vscale x 2 x double> %a) #0 {495; CHECK-LABEL: fmin_d_immone:496; CHECK:       // %bb.0:497; CHECK-NEXT:    ptrue p0.d498; CHECK-NEXT:    fmin z0.d, p0/m, z0.d, #1.0499; CHECK-NEXT:    ret500  %out = call <vscale x 2 x double> @llvm.minimum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> splat(double 1.000000e+00))501  ret <vscale x 2 x double> %out502}503 504;505; FMINNM506;507 508define <vscale x 8 x half> @fminnm_h_immzero(<vscale x 8 x half> %a) #0 {509; CHECK-LABEL: fminnm_h_immzero:510; CHECK:       // %bb.0:511; CHECK-NEXT:    ptrue p0.h512; CHECK-NEXT:    fminnm z0.h, p0/m, z0.h, #0.0513; CHECK-NEXT:    ret514  %out = call <vscale x 8 x half> @llvm.minnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> zeroinitializer)515  ret <vscale x 8 x half> %out516}517 518define <vscale x 8 x half> @fminnm_h_immone(<vscale x 8 x half> %a) #0 {519; CHECK-LABEL: fminnm_h_immone:520; CHECK:       // %bb.0:521; CHECK-NEXT:    ptrue p0.h522; CHECK-NEXT:    fminnm z0.h, p0/m, z0.h, #1.0523; CHECK-NEXT:    ret524  %out = call <vscale x 8 x half> @llvm.minnum.nxv8f16(<vscale x 8 x half> %a, <vscale x 8 x half> splat(half 1.000000e+00))525  ret <vscale x 8 x half> %out526}527 528define <vscale x 4 x half> @fminnm_4h_immzero(<vscale x 4 x half> %a) #0 {529; CHECK-LABEL: fminnm_4h_immzero:530; CHECK:       // %bb.0:531; CHECK-NEXT:    ptrue p0.s532; CHECK-NEXT:    fminnm z0.h, p0/m, z0.h, #0.0533; CHECK-NEXT:    ret534  %out = call <vscale x 4 x half> @llvm.minnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> zeroinitializer)535  ret <vscale x 4 x half> %out536}537 538define <vscale x 4 x half> @fminnm_4h_immone(<vscale x 4 x half> %a) #0 {539; CHECK-LABEL: fminnm_4h_immone:540; CHECK:       // %bb.0:541; CHECK-NEXT:    ptrue p0.s542; CHECK-NEXT:    fminnm z0.h, p0/m, z0.h, #1.0543; CHECK-NEXT:    ret544  %out = call <vscale x 4 x half> @llvm.minnum.nxv4f16(<vscale x 4 x half> %a, <vscale x 4 x half> splat(half 1.000000e+00))545  ret <vscale x 4 x half> %out546}547 548define <vscale x 2 x half> @fminnm_2h_immzero(<vscale x 2 x half> %a) #0 {549; CHECK-LABEL: fminnm_2h_immzero:550; CHECK:       // %bb.0:551; CHECK-NEXT:    ptrue p0.d552; CHECK-NEXT:    fminnm z0.h, p0/m, z0.h, #0.0553; CHECK-NEXT:    ret554  %out = call <vscale x 2 x half> @llvm.minnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> zeroinitializer)555  ret <vscale x 2 x half> %out556}557 558define <vscale x 2 x half> @fminnm_2h_immone(<vscale x 2 x half> %a) #0 {559; CHECK-LABEL: fminnm_2h_immone:560; CHECK:       // %bb.0:561; CHECK-NEXT:    ptrue p0.d562; CHECK-NEXT:    fminnm z0.h, p0/m, z0.h, #1.0563; CHECK-NEXT:    ret564  %out = call <vscale x 2 x half> @llvm.minnum.nxv2f16(<vscale x 2 x half> %a, <vscale x 2 x half> splat(half 1.000000e+00))565  ret <vscale x 2 x half> %out566}567 568define <vscale x 4 x float> @fminnm_s_immzero(<vscale x 4 x float> %a) #0 {569; CHECK-LABEL: fminnm_s_immzero:570; CHECK:       // %bb.0:571; CHECK-NEXT:    ptrue p0.s572; CHECK-NEXT:    fminnm z0.s, p0/m, z0.s, #0.0573; CHECK-NEXT:    ret574  %out = call <vscale x 4 x float> @llvm.minnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> zeroinitializer)575  ret <vscale x 4 x float> %out576}577 578define <vscale x 4 x float> @fminnm_s_immone(<vscale x 4 x float> %a) #0 {579; CHECK-LABEL: fminnm_s_immone:580; CHECK:       // %bb.0:581; CHECK-NEXT:    ptrue p0.s582; CHECK-NEXT:    fminnm z0.s, p0/m, z0.s, #1.0583; CHECK-NEXT:    ret584  %out = call <vscale x 4 x float> @llvm.minnum.nxv4f32(<vscale x 4 x float> %a, <vscale x 4 x float> splat(float 1.000000e+00))585  ret <vscale x 4 x float> %out586}587 588define <vscale x 2 x float> @fminnm_2s_immzero(<vscale x 2 x float> %a) #0 {589; CHECK-LABEL: fminnm_2s_immzero:590; CHECK:       // %bb.0:591; CHECK-NEXT:    ptrue p0.d592; CHECK-NEXT:    fminnm z0.s, p0/m, z0.s, #0.0593; CHECK-NEXT:    ret594  %out = call <vscale x 2 x float> @llvm.minnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> zeroinitializer)595  ret <vscale x 2 x float> %out596}597 598define <vscale x 2 x float> @fminnm_2s_immone(<vscale x 2 x float> %a) #0 {599; CHECK-LABEL: fminnm_2s_immone:600; CHECK:       // %bb.0:601; CHECK-NEXT:    ptrue p0.d602; CHECK-NEXT:    fminnm z0.s, p0/m, z0.s, #1.0603; CHECK-NEXT:    ret604  %out = call <vscale x 2 x float> @llvm.minnum.nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> splat(float 1.000000e+00))605  ret <vscale x 2 x float> %out606}607 608define <vscale x 2 x double> @fminnm_d_immzero(<vscale x 2 x double> %a) #0 {609; CHECK-LABEL: fminnm_d_immzero:610; CHECK:       // %bb.0:611; CHECK-NEXT:    ptrue p0.d612; CHECK-NEXT:    fminnm z0.d, p0/m, z0.d, #0.0613; CHECK-NEXT:    ret614  %out = call <vscale x 2 x double> @llvm.minnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> zeroinitializer)615  ret <vscale x 2 x double> %out616}617 618define <vscale x 2 x double> @fminnm_d_immone(<vscale x 2 x double> %a) #0 {619; CHECK-LABEL: fminnm_d_immone:620; CHECK:       // %bb.0:621; CHECK-NEXT:    ptrue p0.d622; CHECK-NEXT:    fminnm z0.d, p0/m, z0.d, #1.0623; CHECK-NEXT:    ret624  %out = call <vscale x 2 x double> @llvm.minnum.nxv2f64(<vscale x 2 x double> %a, <vscale x 2 x double> splat(double 1.000000e+00))625  ret <vscale x 2 x double> %out626}627 628;629; FMUL630;631 632define <vscale x 8 x half> @fmul_h_immhalf(<vscale x 8 x half> %a) #0 {633; CHECK-LABEL: fmul_h_immhalf:634; CHECK:       // %bb.0:635; CHECK-NEXT:    ptrue p0.h636; CHECK-NEXT:    fmul z0.h, p0/m, z0.h, #0.5637; CHECK-NEXT:    ret638  %out = fmul <vscale x 8 x half> %a, splat(half 0.500000e+00)639  ret <vscale x 8 x half> %out640}641 642define <vscale x 8 x half> @fmul_h_immtwo(<vscale x 8 x half> %a) #0 {643; CHECK-LABEL: fmul_h_immtwo:644; CHECK:       // %bb.0:645; CHECK-NEXT:    fadd z0.h, z0.h, z0.h646; CHECK-NEXT:    ret647  %out = fmul <vscale x 8 x half> %a, splat(half 2.000000e+00)648  ret <vscale x 8 x half> %out649}650 651define <vscale x 4 x half> @fmul_4h_immhalf(<vscale x 4 x half> %a) #0 {652; CHECK-LABEL: fmul_4h_immhalf:653; CHECK:       // %bb.0:654; CHECK-NEXT:    ptrue p0.s655; CHECK-NEXT:    fmul z0.h, p0/m, z0.h, #0.5656; CHECK-NEXT:    ret657  %out = fmul <vscale x 4 x half> %a, splat(half 0.500000e+00)658  ret <vscale x 4 x half> %out659}660 661define <vscale x 4 x half> @fmul_4h_immtwo(<vscale x 4 x half> %a) #0 {662; CHECK-LABEL: fmul_4h_immtwo:663; CHECK:       // %bb.0:664; CHECK-NEXT:    ptrue p0.s665; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, z0.h666; CHECK-NEXT:    ret667  %out = fmul <vscale x 4 x half> %a, splat(half 2.000000e+00)668  ret <vscale x 4 x half> %out669}670 671define <vscale x 2 x half> @fmul_2h_immhalf(<vscale x 2 x half> %a) #0 {672; CHECK-LABEL: fmul_2h_immhalf:673; CHECK:       // %bb.0:674; CHECK-NEXT:    ptrue p0.d675; CHECK-NEXT:    fmul z0.h, p0/m, z0.h, #0.5676; CHECK-NEXT:    ret677  %out = fmul <vscale x 2 x half> %a, splat(half 0.500000e+00)678  ret <vscale x 2 x half> %out679}680 681define <vscale x 2 x half> @fmul_2h_immtwo(<vscale x 2 x half> %a) #0 {682; CHECK-LABEL: fmul_2h_immtwo:683; CHECK:       // %bb.0:684; CHECK-NEXT:    ptrue p0.d685; CHECK-NEXT:    fadd z0.h, p0/m, z0.h, z0.h686; CHECK-NEXT:    ret687  %out = fmul <vscale x 2 x half> %a, splat(half 2.000000e+00)688  ret <vscale x 2 x half> %out689}690 691define <vscale x 4 x float> @fmul_s_immhalf(<vscale x 4 x float> %a) #0 {692; CHECK-LABEL: fmul_s_immhalf:693; CHECK:       // %bb.0:694; CHECK-NEXT:    ptrue p0.s695; CHECK-NEXT:    fmul z0.s, p0/m, z0.s, #0.5696; CHECK-NEXT:    ret697  %out = fmul <vscale x 4 x float> %a, splat(float 0.500000e+00)698  ret <vscale x 4 x float> %out699}700 701define <vscale x 4 x float> @fmul_s_immtwo(<vscale x 4 x float> %a) #0 {702; CHECK-LABEL: fmul_s_immtwo:703; CHECK:       // %bb.0:704; CHECK-NEXT:    fadd z0.s, z0.s, z0.s705; CHECK-NEXT:    ret706  %out = fmul <vscale x 4 x float> %a, splat(float 2.000000e+00)707  ret <vscale x 4 x float> %out708}709 710define <vscale x 2 x float> @fmul_2s_immhalf(<vscale x 2 x float> %a) #0 {711; CHECK-LABEL: fmul_2s_immhalf:712; CHECK:       // %bb.0:713; CHECK-NEXT:    ptrue p0.d714; CHECK-NEXT:    fmul z0.s, p0/m, z0.s, #0.5715; CHECK-NEXT:    ret716  %out = fmul <vscale x 2 x float> %a, splat(float 0.500000e+00)717  ret <vscale x 2 x float> %out718}719 720define <vscale x 2 x float> @fmul_2s_immtwo(<vscale x 2 x float> %a) #0 {721; CHECK-LABEL: fmul_2s_immtwo:722; CHECK:       // %bb.0:723; CHECK-NEXT:    ptrue p0.d724; CHECK-NEXT:    fadd z0.s, p0/m, z0.s, z0.s725; CHECK-NEXT:    ret726  %out = fmul <vscale x 2 x float> %a, splat(float 2.000000e+00)727  ret <vscale x 2 x float> %out728}729 730define <vscale x 2 x double> @fmul_d_immhalf(<vscale x 2 x double> %a) #0 {731; CHECK-LABEL: fmul_d_immhalf:732; CHECK:       // %bb.0:733; CHECK-NEXT:    ptrue p0.d734; CHECK-NEXT:    fmul z0.d, p0/m, z0.d, #0.5735; CHECK-NEXT:    ret736  %out = fmul <vscale x 2 x double> %a, splat(double 0.500000e+00)737  ret <vscale x 2 x double> %out738}739 740define <vscale x 2 x double> @fmul_d_immtwo(<vscale x 2 x double> %a) #0 {741; CHECK-LABEL: fmul_d_immtwo:742; CHECK:       // %bb.0:743; CHECK-NEXT:    fadd z0.d, z0.d, z0.d744; CHECK-NEXT:    ret745  %out = fmul <vscale x 2 x double> %a, splat(double 2.000000e+00)746  ret <vscale x 2 x double> %out747}748 749;750; FSUB751;752 753define <vscale x 8 x half> @fsub_h_immhalf(<vscale x 8 x half> %a) #0 {754; CHECK-LABEL: fsub_h_immhalf:755; CHECK:       // %bb.0:756; CHECK-NEXT:    ptrue p0.h757; CHECK-NEXT:    fsub z0.h, p0/m, z0.h, #0.5758; CHECK-NEXT:    ret759  %out = fsub <vscale x 8 x half> %a, splat(half 0.500000e+00)760  ret <vscale x 8 x half> %out761}762 763define <vscale x 8 x half> @fsub_h_immone(<vscale x 8 x half> %a) #0 {764; CHECK-LABEL: fsub_h_immone:765; CHECK:       // %bb.0:766; CHECK-NEXT:    ptrue p0.h767; CHECK-NEXT:    fsub z0.h, p0/m, z0.h, #1.0768; CHECK-NEXT:    ret769  %out = fsub <vscale x 8 x half> %a, splat(half 1.000000e+00)770  ret <vscale x 8 x half> %out771}772 773define <vscale x 4 x half> @fsub_4h_immhalf(<vscale x 4 x half> %a) #0 {774; CHECK-LABEL: fsub_4h_immhalf:775; CHECK:       // %bb.0:776; CHECK-NEXT:    ptrue p0.s777; CHECK-NEXT:    fsub z0.h, p0/m, z0.h, #0.5778; CHECK-NEXT:    ret779  %out = fsub <vscale x 4 x half> %a, splat(half 0.500000e+00)780  ret <vscale x 4 x half> %out781}782 783define <vscale x 4 x half> @fsub_4h_immone(<vscale x 4 x half> %a) #0 {784; CHECK-LABEL: fsub_4h_immone:785; CHECK:       // %bb.0:786; CHECK-NEXT:    ptrue p0.s787; CHECK-NEXT:    fsub z0.h, p0/m, z0.h, #1.0788; CHECK-NEXT:    ret789  %out = fsub <vscale x 4 x half> %a, splat(half 1.000000e+00)790  ret <vscale x 4 x half> %out791}792 793define <vscale x 2 x half> @fsub_2h_immhalf(<vscale x 2 x half> %a) #0 {794; CHECK-LABEL: fsub_2h_immhalf:795; CHECK:       // %bb.0:796; CHECK-NEXT:    ptrue p0.d797; CHECK-NEXT:    fsub z0.h, p0/m, z0.h, #0.5798; CHECK-NEXT:    ret799  %out = fsub <vscale x 2 x half> %a, splat(half 0.500000e+00)800  ret <vscale x 2 x half> %out801}802 803define <vscale x 2 x half> @fsub_2h_immone(<vscale x 2 x half> %a) #0 {804; CHECK-LABEL: fsub_2h_immone:805; CHECK:       // %bb.0:806; CHECK-NEXT:    ptrue p0.d807; CHECK-NEXT:    fsub z0.h, p0/m, z0.h, #1.0808; CHECK-NEXT:    ret809  %out = fsub <vscale x 2 x half> %a, splat(half 1.000000e+00)810  ret <vscale x 2 x half> %out811}812 813define <vscale x 4 x float> @fsub_s_immhalf(<vscale x 4 x float> %a) #0 {814; CHECK-LABEL: fsub_s_immhalf:815; CHECK:       // %bb.0:816; CHECK-NEXT:    ptrue p0.s817; CHECK-NEXT:    fsub z0.s, p0/m, z0.s, #0.5818; CHECK-NEXT:    ret819  %out = fsub <vscale x 4 x float> %a, splat(float 0.500000e+00)820  ret <vscale x 4 x float> %out821}822 823define <vscale x 4 x float> @fsub_s_immone(<vscale x 4 x float> %a) #0 {824; CHECK-LABEL: fsub_s_immone:825; CHECK:       // %bb.0:826; CHECK-NEXT:    ptrue p0.s827; CHECK-NEXT:    fsub z0.s, p0/m, z0.s, #1.0828; CHECK-NEXT:    ret829  %out = fsub <vscale x 4 x float> %a, splat(float 1.000000e+00)830  ret <vscale x 4 x float> %out831}832 833define <vscale x 2 x float> @fsub_2s_immhalf(<vscale x 2 x float> %a) #0 {834; CHECK-LABEL: fsub_2s_immhalf:835; CHECK:       // %bb.0:836; CHECK-NEXT:    ptrue p0.d837; CHECK-NEXT:    fsub z0.s, p0/m, z0.s, #0.5838; CHECK-NEXT:    ret839  %out = fsub <vscale x 2 x float> %a, splat(float 0.500000e+00)840  ret <vscale x 2 x float> %out841}842 843define <vscale x 2 x float> @fsub_2s_immone(<vscale x 2 x float> %a) #0 {844; CHECK-LABEL: fsub_2s_immone:845; CHECK:       // %bb.0:846; CHECK-NEXT:    ptrue p0.d847; CHECK-NEXT:    fsub z0.s, p0/m, z0.s, #1.0848; CHECK-NEXT:    ret849  %out = fsub <vscale x 2 x float> %a, splat(float 1.000000e+00)850  ret <vscale x 2 x float> %out851}852 853define <vscale x 2 x double> @fsub_d_immhalf(<vscale x 2 x double> %a) #0 {854; CHECK-LABEL: fsub_d_immhalf:855; CHECK:       // %bb.0:856; CHECK-NEXT:    ptrue p0.d857; CHECK-NEXT:    fsub z0.d, p0/m, z0.d, #0.5858; CHECK-NEXT:    ret859  %out = fsub <vscale x 2 x double> %a, splat(double 0.500000e+00)860  ret <vscale x 2 x double> %out861}862 863define <vscale x 2 x double> @fsub_d_immone(<vscale x 2 x double> %a) #0 {864; CHECK-LABEL: fsub_d_immone:865; CHECK:       // %bb.0:866; CHECK-NEXT:    ptrue p0.d867; CHECK-NEXT:    fsub z0.d, p0/m, z0.d, #1.0868; CHECK-NEXT:    ret869  %out = fsub <vscale x 2 x double> %a, splat(double 1.000000e+00)870  ret <vscale x 2 x double> %out871}872 873;874; FSUBR875;876 877define <vscale x 8 x half> @fsubr_h_immhalf(<vscale x 8 x half> %a) #0 {878; CHECK-LABEL: fsubr_h_immhalf:879; CHECK:       // %bb.0:880; CHECK-NEXT:    ptrue p0.h881; CHECK-NEXT:    fsubr z0.h, p0/m, z0.h, #0.5882; CHECK-NEXT:    ret883  %out = fsub <vscale x 8 x half> splat(half 0.500000e+00), %a884  ret <vscale x 8 x half> %out885}886 887define <vscale x 8 x half> @fsubr_h_immone(<vscale x 8 x half> %a) #0 {888; CHECK-LABEL: fsubr_h_immone:889; CHECK:       // %bb.0:890; CHECK-NEXT:    ptrue p0.h891; CHECK-NEXT:    fsubr z0.h, p0/m, z0.h, #1.0892; CHECK-NEXT:    ret893  %out = fsub <vscale x 8 x half> splat(half 1.000000e+00), %a894  ret <vscale x 8 x half> %out895}896 897define <vscale x 4 x half> @fsubr_4h_immhalf(<vscale x 4 x half> %a) #0 {898; CHECK-LABEL: fsubr_4h_immhalf:899; CHECK:       // %bb.0:900; CHECK-NEXT:    ptrue p0.s901; CHECK-NEXT:    fsubr z0.h, p0/m, z0.h, #0.5902; CHECK-NEXT:    ret903  %out = fsub <vscale x 4 x half> splat(half 0.500000e+00), %a904  ret <vscale x 4 x half> %out905}906 907define <vscale x 4 x half> @fsubr_4h_immone(<vscale x 4 x half> %a) #0 {908; CHECK-LABEL: fsubr_4h_immone:909; CHECK:       // %bb.0:910; CHECK-NEXT:    ptrue p0.s911; CHECK-NEXT:    fsubr z0.h, p0/m, z0.h, #1.0912; CHECK-NEXT:    ret913  %out = fsub <vscale x 4 x half> splat(half 1.000000e+00), %a914  ret <vscale x 4 x half> %out915}916 917define <vscale x 2 x half> @fsubr_2h_immhalf(<vscale x 2 x half> %a) #0 {918; CHECK-LABEL: fsubr_2h_immhalf:919; CHECK:       // %bb.0:920; CHECK-NEXT:    ptrue p0.d921; CHECK-NEXT:    fsubr z0.h, p0/m, z0.h, #0.5922; CHECK-NEXT:    ret923  %out = fsub <vscale x 2 x half> splat(half 0.500000e+00), %a924  ret <vscale x 2 x half> %out925}926 927define <vscale x 2 x half> @fsubr_2h_immone(<vscale x 2 x half> %a) #0 {928; CHECK-LABEL: fsubr_2h_immone:929; CHECK:       // %bb.0:930; CHECK-NEXT:    ptrue p0.d931; CHECK-NEXT:    fsubr z0.h, p0/m, z0.h, #1.0932; CHECK-NEXT:    ret933  %out = fsub <vscale x 2 x half> splat(half 1.000000e+00), %a934  ret <vscale x 2 x half> %out935}936 937define <vscale x 4 x float> @fsubr_s_immhalf(<vscale x 4 x float> %a) #0 {938; CHECK-LABEL: fsubr_s_immhalf:939; CHECK:       // %bb.0:940; CHECK-NEXT:    ptrue p0.s941; CHECK-NEXT:    fsubr z0.s, p0/m, z0.s, #0.5942; CHECK-NEXT:    ret943  %out = fsub <vscale x 4 x float> splat(float 0.500000e+00), %a944  ret <vscale x 4 x float> %out945}946 947define <vscale x 4 x float> @fsubr_s_immone(<vscale x 4 x float> %a) #0 {948; CHECK-LABEL: fsubr_s_immone:949; CHECK:       // %bb.0:950; CHECK-NEXT:    ptrue p0.s951; CHECK-NEXT:    fsubr z0.s, p0/m, z0.s, #1.0952; CHECK-NEXT:    ret953  %out = fsub <vscale x 4 x float> splat(float 1.000000e+00), %a954  ret <vscale x 4 x float> %out955}956 957define <vscale x 2 x float> @fsubr_2s_immhalf(<vscale x 2 x float> %a) #0 {958; CHECK-LABEL: fsubr_2s_immhalf:959; CHECK:       // %bb.0:960; CHECK-NEXT:    ptrue p0.d961; CHECK-NEXT:    fsubr z0.s, p0/m, z0.s, #0.5962; CHECK-NEXT:    ret963  %out = fsub <vscale x 2 x float> splat(float 0.500000e+00), %a964  ret <vscale x 2 x float> %out965}966 967define <vscale x 2 x float> @fsubr_2s_immone(<vscale x 2 x float> %a) #0 {968; CHECK-LABEL: fsubr_2s_immone:969; CHECK:       // %bb.0:970; CHECK-NEXT:    ptrue p0.d971; CHECK-NEXT:    fsubr z0.s, p0/m, z0.s, #1.0972; CHECK-NEXT:    ret973  %out = fsub <vscale x 2 x float> splat(float 1.000000e+00), %a974  ret <vscale x 2 x float> %out975}976 977define <vscale x 2 x double> @fsubr_d_immhalf(<vscale x 2 x double> %a) #0 {978; CHECK-LABEL: fsubr_d_immhalf:979; CHECK:       // %bb.0:980; CHECK-NEXT:    ptrue p0.d981; CHECK-NEXT:    fsubr z0.d, p0/m, z0.d, #0.5982; CHECK-NEXT:    ret983  %out = fsub <vscale x 2 x double> splat(double 0.500000e+00), %a984  ret <vscale x 2 x double> %out985}986 987define <vscale x 2 x double> @fsubr_d_immone(<vscale x 2 x double> %a) #0 {988; CHECK-LABEL: fsubr_d_immone:989; CHECK:       // %bb.0:990; CHECK-NEXT:    ptrue p0.d991; CHECK-NEXT:    fsubr z0.d, p0/m, z0.d, #1.0992; CHECK-NEXT:    ret993  %out = fsub <vscale x 2 x double> splat(double 1.000000e+00), %a994  ret <vscale x 2 x double> %out995}996 997declare <vscale x 8 x half> @llvm.maximum.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>)998declare <vscale x 4 x half> @llvm.maximum.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>)999declare <vscale x 2 x half> @llvm.maximum.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>)1000declare <vscale x 4 x float> @llvm.maximum.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)1001declare <vscale x 2 x float> @llvm.maximum.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>)1002declare <vscale x 2 x double> @llvm.maximum.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>)1003 1004declare <vscale x 8 x half> @llvm.maxnum.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>)1005declare <vscale x 4 x half> @llvm.maxnum.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>)1006declare <vscale x 2 x half> @llvm.maxnum.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>)1007declare <vscale x 4 x float> @llvm.maxnum.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)1008declare <vscale x 2 x float> @llvm.maxnum.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>)1009declare <vscale x 2 x double> @llvm.maxnum.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>)1010 1011declare <vscale x 8 x half> @llvm.minimum.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>)1012declare <vscale x 4 x half> @llvm.minimum.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>)1013declare <vscale x 2 x half> @llvm.minimum.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>)1014declare <vscale x 4 x float> @llvm.minimum.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)1015declare <vscale x 2 x float> @llvm.minimum.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>)1016declare <vscale x 2 x double> @llvm.minimum.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>)1017 1018declare <vscale x 8 x half> @llvm.minnum.nxv8f16(<vscale x 8 x half>, <vscale x 8 x half>)1019declare <vscale x 4 x half> @llvm.minnum.nxv4f16(<vscale x 4 x half>, <vscale x 4 x half>)1020declare <vscale x 2 x half> @llvm.minnum.nxv2f16(<vscale x 2 x half>, <vscale x 2 x half>)1021declare <vscale x 4 x float> @llvm.minnum.nxv4f32(<vscale x 4 x float>, <vscale x 4 x float>)1022declare <vscale x 2 x float> @llvm.minnum.nxv2f32(<vscale x 2 x float>, <vscale x 2 x float>)1023declare <vscale x 2 x double> @llvm.minnum.nxv2f64(<vscale x 2 x double>, <vscale x 2 x double>)1024 1025attributes #0 = { "target-features"="+sve" }1026attributes #1 = { "target-features"="+sve,+use-experimental-zeroing-pseudos" }1027