1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals 2; RUN: opt -vector-library=sleefgnuabi -replace-with-veclib -S < %s | FileCheck %s 3 4target triple = "aarch64-unknown-linux-gnu" 5 6;. 7; CHECK: @llvm.compiler.used = appending global [34 x ptr] [ptr @_ZGVnN2v_cos, ptr @_ZGVnN4v_cosf, ptr @_ZGVnN2v_exp, ptr @_ZGVnN4v_expf, ptr @_ZGVnN2v_exp10, ptr @_ZGVnN4v_exp10f, ptr @_ZGVnN2v_exp2, ptr @_ZGVnN4v_exp2f, ptr @_ZGVnN2v_log, ptr @_ZGVnN4v_logf, ptr @_ZGVnN2v_log10, ptr @_ZGVnN4v_log10f, ptr @_ZGVnN2v_log2, ptr @_ZGVnN4v_log2f, ptr @_ZGVnN2vv_pow, ptr @_ZGVnN4vv_powf, ptr @_ZGVnN2v_sin, ptr @_ZGVnN4v_sinf, ptr @_ZGVnN2v_tan, ptr @_ZGVnN4v_tanf, ptr @_ZGVnN2v_acos, ptr @_ZGVnN4v_acosf, ptr @_ZGVnN2v_asin, ptr @_ZGVnN4v_asinf, ptr @_ZGVnN2v_atan, ptr @_ZGVnN4v_atanf, ptr @_ZGVnN2vv_atan2, ptr @_ZGVnN4vv_atan2f, ptr @_ZGVnN2v_cosh, ptr @_ZGVnN4v_coshf, ptr @_ZGVnN2v_sinh, ptr @_ZGVnN4v_sinhf, ptr @_ZGVnN2v_tanh, ptr @_ZGVnN4v_tanhf], section "llvm.metadata" 8;. 9define <2 x double> @llvm_ceil_f64(<2 x double> %in) { 10; CHECK-LABEL: @llvm_ceil_f64( 11; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.ceil.v2f64(<2 x double> [[IN:%.*]]) 12; CHECK-NEXT: ret <2 x double> [[TMP1]] 13; 14 %1 = call fast <2 x double> @llvm.ceil.v2f64(<2 x double> %in) 15 ret <2 x double> %1 16} 17 18define <4 x float> @llvm_ceil_f32(<4 x float> %in) { 19; CHECK-LABEL: @llvm_ceil_f32( 20; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.ceil.v4f32(<4 x float> [[IN:%.*]]) 21; CHECK-NEXT: ret <4 x float> [[TMP1]] 22; 23 %1 = call fast <4 x float> @llvm.ceil.v4f32(<4 x float> %in) 24 ret <4 x float> %1 25} 26 27define <2 x double> @llvm_copysign_f64(<2 x double> %mag, <2 x double> %sgn) { 28; CHECK-LABEL: @llvm_copysign_f64( 29; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.copysign.v2f64(<2 x double> [[MAG:%.*]], <2 x double> [[SGN:%.*]]) 30; CHECK-NEXT: ret <2 x double> [[TMP1]] 31; 32 %1 = call fast <2 x double> @llvm.copysign.v2f64(<2 x double> %mag, <2 x double> %sgn) 33 ret <2 x double> %1 34} 35 36define <4 x float> @llvm_copysign_f32(<4 x float> %mag, <4 x float> %sgn) { 37; CHECK-LABEL: @llvm_copysign_f32( 38; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.copysign.v4f32(<4 x float> [[MAG:%.*]], <4 x float> [[SGN:%.*]]) 39; CHECK-NEXT: ret <4 x float> [[TMP1]] 40; 41 %1 = call fast <4 x float> @llvm.copysign.v4f32(<4 x float> %mag, <4 x float> %sgn) 42 ret <4 x float> %1 43} 44 45define <2 x double> @llvm_cos_f64(<2 x double> %in) { 46; CHECK-LABEL: @llvm_cos_f64( 47; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_cos(<2 x double> [[IN:%.*]]) 48; CHECK-NEXT: ret <2 x double> [[TMP1]] 49; 50 %1 = call fast <2 x double> @llvm.cos.v2f64(<2 x double> %in) 51 ret <2 x double> %1 52} 53 54define <4 x float> @llvm_cos_f32(<4 x float> %in) { 55; CHECK-LABEL: @llvm_cos_f32( 56; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_cosf(<4 x float> [[IN:%.*]]) 57; CHECK-NEXT: ret <4 x float> [[TMP1]] 58; 59 %1 = call fast <4 x float> @llvm.cos.v4f32(<4 x float> %in) 60 ret <4 x float> %1 61} 62 63define <2 x double> @llvm_exp_f64(<2 x double> %in) { 64; CHECK-LABEL: @llvm_exp_f64( 65; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_exp(<2 x double> [[IN:%.*]]) 66; CHECK-NEXT: ret <2 x double> [[TMP1]] 67; 68 %1 = call fast <2 x double> @llvm.exp.v2f64(<2 x double> %in) 69 ret <2 x double> %1 70} 71 72define <4 x float> @llvm_exp_f32(<4 x float> %in) { 73; CHECK-LABEL: @llvm_exp_f32( 74; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_expf(<4 x float> [[IN:%.*]]) 75; CHECK-NEXT: ret <4 x float> [[TMP1]] 76; 77 %1 = call fast <4 x float> @llvm.exp.v4f32(<4 x float> %in) 78 ret <4 x float> %1 79} 80 81define <2 x double> @llvm_exp10_f64(<2 x double> %in) { 82; CHECK-LABEL: @llvm_exp10_f64( 83; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_exp10(<2 x double> [[IN:%.*]]) 84; CHECK-NEXT: ret <2 x double> [[TMP1]] 85; 86 %1 = call fast <2 x double> @llvm.exp10.v2f64(<2 x double> %in) 87 ret <2 x double> %1 88} 89 90define <4 x float> @llvm_exp10_f32(<4 x float> %in) { 91; CHECK-LABEL: @llvm_exp10_f32( 92; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_exp10f(<4 x float> [[IN:%.*]]) 93; CHECK-NEXT: ret <4 x float> [[TMP1]] 94; 95 %1 = call fast <4 x float> @llvm.exp10.v4f32(<4 x float> %in) 96 ret <4 x float> %1 97} 98 99define <2 x double> @llvm_exp2_f64(<2 x double> %in) { 100; CHECK-LABEL: @llvm_exp2_f64( 101; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_exp2(<2 x double> [[IN:%.*]]) 102; CHECK-NEXT: ret <2 x double> [[TMP1]] 103; 104 %1 = call fast <2 x double> @llvm.exp2.v2f64(<2 x double> %in) 105 ret <2 x double> %1 106} 107 108define <4 x float> @llvm_exp2_f32(<4 x float> %in) { 109; CHECK-LABEL: @llvm_exp2_f32( 110; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_exp2f(<4 x float> [[IN:%.*]]) 111; CHECK-NEXT: ret <4 x float> [[TMP1]] 112; 113 %1 = call fast <4 x float> @llvm.exp2.v4f32(<4 x float> %in) 114 ret <4 x float> %1 115} 116 117define <2 x double> @llvm_fabs_f64(<2 x double> %in) { 118; CHECK-LABEL: @llvm_fabs_f64( 119; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.fabs.v2f64(<2 x double> [[IN:%.*]]) 120; CHECK-NEXT: ret <2 x double> [[TMP1]] 121; 122 %1 = call fast <2 x double> @llvm.fabs.v2f64(<2 x double> %in) 123 ret <2 x double> %1 124} 125 126define <4 x float> @llvm_fabs_f32(<4 x float> %in) { 127; CHECK-LABEL: @llvm_fabs_f32( 128; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.fabs.v4f32(<4 x float> [[IN:%.*]]) 129; CHECK-NEXT: ret <4 x float> [[TMP1]] 130; 131 %1 = call fast <4 x float> @llvm.fabs.v4f32(<4 x float> %in) 132 ret <4 x float> %1 133} 134 135define <2 x double> @llvm_floor_f64(<2 x double> %in) { 136; CHECK-LABEL: @llvm_floor_f64( 137; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.floor.v2f64(<2 x double> [[IN:%.*]]) 138; CHECK-NEXT: ret <2 x double> [[TMP1]] 139; 140 %1 = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %in) 141 ret <2 x double> %1 142} 143 144define <4 x float> @llvm_floor_f32(<4 x float> %in) { 145; CHECK-LABEL: @llvm_floor_f32( 146; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.floor.v4f32(<4 x float> [[IN:%.*]]) 147; CHECK-NEXT: ret <4 x float> [[TMP1]] 148; 149 %1 = call fast <4 x float> @llvm.floor.v4f32(<4 x float> %in) 150 ret <4 x float> %1 151} 152 153define <2 x double> @llvm_fma_f64(<2 x double> %a, <2 x double> %b, <2 x double> %c ) { 154; CHECK-LABEL: @llvm_fma_f64( 155; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.fma.v2f64(<2 x double> [[A:%.*]], <2 x double> [[B:%.*]], <2 x double> [[C:%.*]]) 156; CHECK-NEXT: ret <2 x double> [[TMP1]] 157; 158 %1 = call fast <2 x double> @llvm.fma.v2f64(<2 x double> %a, <2 x double> %b, <2 x double> %c) 159 ret <2 x double> %1 160} 161 162define <4 x float> @llvm_fma_f32(<4 x float> %a, <4 x float> %b, <4 x float> %c) { 163; CHECK-LABEL: @llvm_fma_f32( 164; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.fma.v4f32(<4 x float> [[A:%.*]], <4 x float> [[B:%.*]], <4 x float> [[C:%.*]]) 165; CHECK-NEXT: ret <4 x float> [[TMP1]] 166; 167 %1 = call fast <4 x float> @llvm.fma.v4f32(<4 x float> %a, <4 x float> %b, <4 x float> %c) 168 ret <4 x float> %1 169} 170 171define <2 x double> @llvm_log_f64(<2 x double> %in) { 172; CHECK-LABEL: @llvm_log_f64( 173; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_log(<2 x double> [[IN:%.*]]) 174; CHECK-NEXT: ret <2 x double> [[TMP1]] 175; 176 %1 = call fast <2 x double> @llvm.log.v2f64(<2 x double> %in) 177 ret <2 x double> %1 178} 179 180define <4 x float> @llvm_log_f32(<4 x float> %in) { 181; CHECK-LABEL: @llvm_log_f32( 182; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_logf(<4 x float> [[IN:%.*]]) 183; CHECK-NEXT: ret <4 x float> [[TMP1]] 184; 185 %1 = call fast <4 x float> @llvm.log.v4f32(<4 x float> %in) 186 ret <4 x float> %1 187} 188 189define <2 x double> @llvm_log10_f64(<2 x double> %in) { 190; CHECK-LABEL: @llvm_log10_f64( 191; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_log10(<2 x double> [[IN:%.*]]) 192; CHECK-NEXT: ret <2 x double> [[TMP1]] 193; 194 %1 = call fast <2 x double> @llvm.log10.v2f64(<2 x double> %in) 195 ret <2 x double> %1 196} 197 198define <4 x float> @llvm_log10_f32(<4 x float> %in) { 199; CHECK-LABEL: @llvm_log10_f32( 200; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_log10f(<4 x float> [[IN:%.*]]) 201; CHECK-NEXT: ret <4 x float> [[TMP1]] 202; 203 %1 = call fast <4 x float> @llvm.log10.v4f32(<4 x float> %in) 204 ret <4 x float> %1 205} 206 207define <2 x double> @llvm_log2_f64(<2 x double> %in) { 208; CHECK-LABEL: @llvm_log2_f64( 209; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_log2(<2 x double> [[IN:%.*]]) 210; CHECK-NEXT: ret <2 x double> [[TMP1]] 211; 212 %1 = call fast <2 x double> @llvm.log2.v2f64(<2 x double> %in) 213 ret <2 x double> %1 214} 215 216define <4 x float> @llvm_log2_f32(<4 x float> %in) { 217; CHECK-LABEL: @llvm_log2_f32( 218; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_log2f(<4 x float> [[IN:%.*]]) 219; CHECK-NEXT: ret <4 x float> [[TMP1]] 220; 221 %1 = call fast <4 x float> @llvm.log2.v4f32(<4 x float> %in) 222 ret <4 x float> %1 223} 224 225define <2 x double> @llvm_maxnum_f64(<2 x double> %in0, <2 x double> %in1) { 226; CHECK-LABEL: @llvm_maxnum_f64( 227; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.maxnum.v2f64(<2 x double> [[IN0:%.*]], <2 x double> [[IN1:%.*]]) 228; CHECK-NEXT: ret <2 x double> [[TMP1]] 229; 230 %1 = call fast <2 x double> @llvm.maxnum.v2f64(<2 x double> %in0, <2 x double> %in1) 231 ret <2 x double> %1 232} 233 234define <4 x float> @llvm_maxnum_f32(<4 x float> %in0, <4 x float> %in1) { 235; CHECK-LABEL: @llvm_maxnum_f32( 236; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.maxnum.v4f32(<4 x float> [[IN0:%.*]], <4 x float> [[IN1:%.*]]) 237; CHECK-NEXT: ret <4 x float> [[TMP1]] 238; 239 %1 = call fast <4 x float> @llvm.maxnum.v4f32(<4 x float> %in0, <4 x float> %in1) 240 ret <4 x float> %1 241} 242 243define <2 x double> @llvm_minnum_f64(<2 x double> %in0, <2 x double> %in1) { 244; CHECK-LABEL: @llvm_minnum_f64( 245; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.minnum.v2f64(<2 x double> [[IN0:%.*]], <2 x double> [[IN1:%.*]]) 246; CHECK-NEXT: ret <2 x double> [[TMP1]] 247; 248 %1 = call fast <2 x double> @llvm.minnum.v2f64(<2 x double> %in0, <2 x double> %in1) 249 ret <2 x double> %1 250} 251 252define <4 x float> @llvm_minnum_f32(<4 x float> %in0, <4 x float> %in1) { 253; CHECK-LABEL: @llvm_minnum_f32( 254; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.minnum.v4f32(<4 x float> [[IN0:%.*]], <4 x float> [[IN1:%.*]]) 255; CHECK-NEXT: ret <4 x float> [[TMP1]] 256; 257 %1 = call fast <4 x float> @llvm.minnum.v4f32(<4 x float> %in0, <4 x float> %in1) 258 ret <4 x float> %1 259} 260 261define <2 x double> @llvm_nearbyint_f64(<2 x double> %in) { 262; CHECK-LABEL: @llvm_nearbyint_f64( 263; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.nearbyint.v2f64(<2 x double> [[IN:%.*]]) 264; CHECK-NEXT: ret <2 x double> [[TMP1]] 265; 266 %1 = call fast <2 x double> @llvm.nearbyint.v2f64(<2 x double> %in) 267 ret <2 x double> %1 268} 269 270define <4 x float> @llvm_nearbyint_f32(<4 x float> %in) { 271; CHECK-LABEL: @llvm_nearbyint_f32( 272; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.nearbyint.v4f32(<4 x float> [[IN:%.*]]) 273; CHECK-NEXT: ret <4 x float> [[TMP1]] 274; 275 %1 = call fast <4 x float> @llvm.nearbyint.v4f32(<4 x float> %in) 276 ret <4 x float> %1 277} 278 279define <2 x double> @llvm_pow_f64(<2 x double> %in, <2 x double> %pow) { 280; CHECK-LABEL: @llvm_pow_f64( 281; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2vv_pow(<2 x double> [[IN:%.*]], <2 x double> [[POW:%.*]]) 282; CHECK-NEXT: ret <2 x double> [[TMP1]] 283; 284 %1 = call fast <2 x double> @llvm.pow.v2f64(<2 x double> %in, <2 x double> %pow) 285 ret <2 x double> %1 286} 287 288define <4 x float> @llvm_pow_f32(<4 x float> %in, <4 x float> %pow) { 289; CHECK-LABEL: @llvm_pow_f32( 290; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4vv_powf(<4 x float> [[IN:%.*]], <4 x float> [[POW:%.*]]) 291; CHECK-NEXT: ret <4 x float> [[TMP1]] 292; 293 %1 = call fast <4 x float> @llvm.pow.v4f32(<4 x float> %in, <4 x float> %pow) 294 ret <4 x float> %1 295} 296 297define <2 x double> @llvm_rint_f64(<2 x double> %in) { 298; CHECK-LABEL: @llvm_rint_f64( 299; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.rint.v2f64(<2 x double> [[IN:%.*]]) 300; CHECK-NEXT: ret <2 x double> [[TMP1]] 301; 302 %1 = call fast <2 x double> @llvm.rint.v2f64(<2 x double> %in) 303 ret <2 x double> %1 304} 305 306define <4 x float> @llvm_rint_f32(<4 x float> %in) { 307; CHECK-LABEL: @llvm_rint_f32( 308; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.rint.v4f32(<4 x float> [[IN:%.*]]) 309; CHECK-NEXT: ret <4 x float> [[TMP1]] 310; 311 %1 = call fast <4 x float> @llvm.rint.v4f32(<4 x float> %in) 312 ret <4 x float> %1 313} 314 315define <2 x double> @llvm_round_f64(<2 x double> %in) { 316; CHECK-LABEL: @llvm_round_f64( 317; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.round.v2f64(<2 x double> [[IN:%.*]]) 318; CHECK-NEXT: ret <2 x double> [[TMP1]] 319; 320 %1 = call fast <2 x double> @llvm.round.v2f64(<2 x double> %in) 321 ret <2 x double> %1 322} 323 324define <4 x float> @llvm_round_f32(<4 x float> %in) { 325; CHECK-LABEL: @llvm_round_f32( 326; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.round.v4f32(<4 x float> [[IN:%.*]]) 327; CHECK-NEXT: ret <4 x float> [[TMP1]] 328; 329 %1 = call fast <4 x float> @llvm.round.v4f32(<4 x float> %in) 330 ret <4 x float> %1 331} 332 333define <2 x double> @llvm_sin_f64(<2 x double> %in) { 334; CHECK-LABEL: @llvm_sin_f64( 335; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_sin(<2 x double> [[IN:%.*]]) 336; CHECK-NEXT: ret <2 x double> [[TMP1]] 337; 338 %1 = call fast <2 x double> @llvm.sin.v2f64(<2 x double> %in) 339 ret <2 x double> %1 340} 341 342define <4 x float> @llvm_sin_f32(<4 x float> %in) { 343; CHECK-LABEL: @llvm_sin_f32( 344; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_sinf(<4 x float> [[IN:%.*]]) 345; CHECK-NEXT: ret <4 x float> [[TMP1]] 346; 347 %1 = call fast <4 x float> @llvm.sin.v4f32(<4 x float> %in) 348 ret <4 x float> %1 349} 350 351define <2 x double> @llvm_sqrt_f64(<2 x double> %in) { 352; CHECK-LABEL: @llvm_sqrt_f64( 353; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> [[IN:%.*]]) 354; CHECK-NEXT: ret <2 x double> [[TMP1]] 355; 356 %1 = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> %in) 357 ret <2 x double> %1 358} 359 360define <4 x float> @llvm_sqrt_f32(<4 x float> %in) { 361; CHECK-LABEL: @llvm_sqrt_f32( 362; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> [[IN:%.*]]) 363; CHECK-NEXT: ret <4 x float> [[TMP1]] 364; 365 %1 = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> %in) 366 ret <4 x float> %1 367} 368 369define <2 x double> @llvm_tan_f64(<2 x double> %in) { 370; CHECK-LABEL: @llvm_tan_f64( 371; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_tan(<2 x double> [[IN:%.*]]) 372; CHECK-NEXT: ret <2 x double> [[TMP1]] 373; 374 %1 = call fast <2 x double> @llvm.tan.v2f64(<2 x double> %in) 375 ret <2 x double> %1 376} 377 378define <4 x float> @llvm_tan_f32(<4 x float> %in) { 379; CHECK-LABEL: @llvm_tan_f32( 380; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_tanf(<4 x float> [[IN:%.*]]) 381; CHECK-NEXT: ret <4 x float> [[TMP1]] 382; 383 %1 = call fast <4 x float> @llvm.tan.v4f32(<4 x float> %in) 384 ret <4 x float> %1 385} 386 387define <2 x double> @llvm_acos_f64(<2 x double> %in) { 388; CHECK-LABEL: @llvm_acos_f64( 389; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_acos(<2 x double> [[IN:%.*]]) 390; CHECK-NEXT: ret <2 x double> [[TMP1]] 391; 392 %1 = call fast <2 x double> @llvm.acos.v2f64(<2 x double> %in) 393 ret <2 x double> %1 394} 395 396define <4 x float> @llvm_acos_f32(<4 x float> %in) { 397; CHECK-LABEL: @llvm_acos_f32( 398; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_acosf(<4 x float> [[IN:%.*]]) 399; CHECK-NEXT: ret <4 x float> [[TMP1]] 400; 401 %1 = call fast <4 x float> @llvm.acos.v4f32(<4 x float> %in) 402 ret <4 x float> %1 403} 404 405define <2 x double> @llvm_asin_f64(<2 x double> %in) { 406; CHECK-LABEL: @llvm_asin_f64( 407; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_asin(<2 x double> [[IN:%.*]]) 408; CHECK-NEXT: ret <2 x double> [[TMP1]] 409; 410 %1 = call fast <2 x double> @llvm.asin.v2f64(<2 x double> %in) 411 ret <2 x double> %1 412} 413 414define <4 x float> @llvm_asin_f32(<4 x float> %in) { 415; CHECK-LABEL: @llvm_asin_f32( 416; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_asinf(<4 x float> [[IN:%.*]]) 417; CHECK-NEXT: ret <4 x float> [[TMP1]] 418; 419 %1 = call fast <4 x float> @llvm.asin.v4f32(<4 x float> %in) 420 ret <4 x float> %1 421} 422 423define <2 x double> @llvm_atan_f64(<2 x double> %in) { 424; CHECK-LABEL: @llvm_atan_f64( 425; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_atan(<2 x double> [[IN:%.*]]) 426; CHECK-NEXT: ret <2 x double> [[TMP1]] 427; 428 %1 = call fast <2 x double> @llvm.atan.v2f64(<2 x double> %in) 429 ret <2 x double> %1 430} 431 432define <4 x float> @llvm_atan_f32(<4 x float> %in) { 433; CHECK-LABEL: @llvm_atan_f32( 434; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_atanf(<4 x float> [[IN:%.*]]) 435; CHECK-NEXT: ret <4 x float> [[TMP1]] 436; 437 %1 = call fast <4 x float> @llvm.atan.v4f32(<4 x float> %in) 438 ret <4 x float> %1 439} 440 441define <2 x double> @llvm_atan2_f64(<2 x double> %x, <2 x double> %y) { 442; CHECK-LABEL: @llvm_atan2_f64( 443; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2vv_atan2(<2 x double> [[INX:%.*]], <2 x double> [[INY:%.*]]) 444; CHECK-NEXT: ret <2 x double> [[TMP1]] 445; 446 %1 = call fast <2 x double> @llvm.atan2.v2f64(<2 x double> %x, <2 x double> %y) 447 ret <2 x double> %1 448} 449 450define <4 x float> @llvm_atan2_f32(<4 x float> %x, <4 x float> %y) { 451; CHECK-LABEL: @llvm_atan2_f32( 452; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4vv_atan2f(<4 x float> [[INX:%.*]], <4 x float> [[INY:%.*]]) 453; CHECK-NEXT: ret <4 x float> [[TMP1]] 454; 455 %1 = call fast <4 x float> @llvm.atan2.v4f32(<4 x float> %x, <4 x float> %y) 456 ret <4 x float> %1 457} 458 459define <2 x double> @llvm_cosh_f64(<2 x double> %in) { 460; CHECK-LABEL: @llvm_cosh_f64( 461; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_cosh(<2 x double> [[IN:%.*]]) 462; CHECK-NEXT: ret <2 x double> [[TMP1]] 463; 464 %1 = call fast <2 x double> @llvm.cosh.v2f64(<2 x double> %in) 465 ret <2 x double> %1 466} 467 468define <4 x float> @llvm_cosh_f32(<4 x float> %in) { 469; CHECK-LABEL: @llvm_cosh_f32( 470; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_coshf(<4 x float> [[IN:%.*]]) 471; CHECK-NEXT: ret <4 x float> [[TMP1]] 472; 473 %1 = call fast <4 x float> @llvm.cosh.v4f32(<4 x float> %in) 474 ret <4 x float> %1 475} 476 477define <2 x double> @llvm_sinh_f64(<2 x double> %in) { 478; CHECK-LABEL: @llvm_sinh_f64( 479; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_sinh(<2 x double> [[IN:%.*]]) 480; CHECK-NEXT: ret <2 x double> [[TMP1]] 481; 482 %1 = call fast <2 x double> @llvm.sinh.v2f64(<2 x double> %in) 483 ret <2 x double> %1 484} 485 486define <4 x float> @llvm_sinh_f32(<4 x float> %in) { 487; CHECK-LABEL: @llvm_sinh_f32( 488; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_sinhf(<4 x float> [[IN:%.*]]) 489; CHECK-NEXT: ret <4 x float> [[TMP1]] 490; 491 %1 = call fast <4 x float> @llvm.sinh.v4f32(<4 x float> %in) 492 ret <4 x float> %1 493} 494 495define <2 x double> @llvm_tanh_f64(<2 x double> %in) { 496; CHECK-LABEL: @llvm_tanh_f64( 497; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @_ZGVnN2v_tanh(<2 x double> [[IN:%.*]]) 498; CHECK-NEXT: ret <2 x double> [[TMP1]] 499; 500 %1 = call fast <2 x double> @llvm.tanh.v2f64(<2 x double> %in) 501 ret <2 x double> %1 502} 503 504define <4 x float> @llvm_tanh_f32(<4 x float> %in) { 505; CHECK-LABEL: @llvm_tanh_f32( 506; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @_ZGVnN4v_tanhf(<4 x float> [[IN:%.*]]) 507; CHECK-NEXT: ret <4 x float> [[TMP1]] 508; 509 %1 = call fast <4 x float> @llvm.tanh.v4f32(<4 x float> %in) 510 ret <4 x float> %1 511} 512 513define <2 x double> @llvm_trunc_f64(<2 x double> %in) { 514; CHECK-LABEL: @llvm_trunc_f64( 515; CHECK-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.trunc.v2f64(<2 x double> [[IN:%.*]]) 516; CHECK-NEXT: ret <2 x double> [[TMP1]] 517; 518 %1 = call fast <2 x double> @llvm.trunc.v2f64(<2 x double> %in) 519 ret <2 x double> %1 520} 521 522define <4 x float> @llvm_trunc_f32(<4 x float> %in) { 523; CHECK-LABEL: @llvm_trunc_f32( 524; CHECK-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.trunc.v4f32(<4 x float> [[IN:%.*]]) 525; CHECK-NEXT: ret <4 x float> [[TMP1]] 526; 527 %1 = call fast <4 x float> @llvm.trunc.v4f32(<4 x float> %in) 528 ret <4 x float> %1 529} 530 531declare <2 x double> @llvm.ceil.v2f64(<2 x double>) 532declare <4 x float> @llvm.ceil.v4f32(<4 x float>) 533declare <2 x double> @llvm.copysign.v2f64(<2 x double>, <2 x double>) 534declare <4 x float> @llvm.copysign.v4f32(<4 x float>, <4 x float>) 535declare <2 x double> @llvm.cos.v2f64(<2 x double>) 536declare <4 x float> @llvm.cos.v4f32(<4 x float>) 537declare <2 x double> @llvm.exp.v2f64(<2 x double>) 538declare <4 x float> @llvm.exp.v4f32(<4 x float>) 539declare <2 x double> @llvm.exp2.v2f64(<2 x double>) 540declare <4 x float> @llvm.exp2.v4f32(<4 x float>) 541declare <2 x double> @llvm.exp10.v2f64(<2 x double>) 542declare <4 x float> @llvm.exp10.v4f32(<4 x float>) 543declare <2 x double> @llvm.fabs.v2f64(<2 x double>) 544declare <4 x float> @llvm.fabs.v4f32(<4 x float>) 545declare <2 x double> @llvm.floor.v2f64(<2 x double>) 546declare <4 x float> @llvm.floor.v4f32(<4 x float>) 547declare <2 x double> @llvm.fma.v2f64(<2 x double>, <2 x double>, <2 x double>) 548declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>) 549declare <2 x double> @llvm.log.v2f64(<2 x double>) 550declare <4 x float> @llvm.log.v4f32(<4 x float>) 551declare <2 x double> @llvm.log10.v2f64(<2 x double>) 552declare <4 x float> @llvm.log10.v4f32(<4 x float>) 553declare <2 x double> @llvm.log2.v2f64(<2 x double>) 554declare <4 x float> @llvm.log2.v4f32(<4 x float>) 555declare <2 x double> @llvm.maxnum.v2f64(<2 x double>, <2 x double>) 556declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>) 557declare <2 x double> @llvm.minnum.v2f64(<2 x double>, <2 x double>) 558declare <4 x float> @llvm.minnum.v4f32(<4 x float>, <4 x float>) 559declare <2 x double> @llvm.nearbyint.v2f64(<2 x double>) 560declare <4 x float> @llvm.nearbyint.v4f32(<4 x float>) 561declare <2 x double> @llvm.pow.v2f64(<2 x double>, <2 x double>) 562declare <4 x float> @llvm.pow.v4f32(<4 x float>, <4 x float>) 563declare <2 x double> @llvm.rint.v2f64(<2 x double>) 564declare <4 x float> @llvm.rint.v4f32(<4 x float>) 565declare <2 x double> @llvm.round.v2f64(<2 x double>) 566declare <4 x float> @llvm.round.v4f32(<4 x float>) 567declare <2 x double> @llvm.sin.v2f64(<2 x double>) 568declare <4 x float> @llvm.sin.v4f32(<4 x float>) 569declare <2 x double> @llvm.sqrt.v2f64(<2 x double>) 570declare <4 x float> @llvm.sqrt.v4f32(<4 x float>) 571declare <2 x double> @llvm.tan.v2f64(<2 x double>) 572declare <4 x float> @llvm.tan.v4f32(<4 x float>) 573declare <2 x double> @llvm.trunc.v2f64(<2 x double>) 574declare <4 x float> @llvm.trunc.v4f32(<4 x float>) 575;. 576; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } 577;. 578