@@ -4270,132 +4270,207 @@ uint64x2_t test_vrshlq_u64(uint64x2_t a, int64x2_t b) {
4270
4270
// return vsliq_n_p64(a, b, 0);
4271
4271
// }
4272
4272
4273
- // NYI-LABEL: @test_vmax_s8(
4274
- // NYI: [[VMAX_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.smax.v8i8(<8 x i8> %a, <8 x i8> %b)
4275
- // NYI: ret <8 x i8> [[VMAX_I]]
4276
- // int8x8_t test_vmax_s8(int8x8_t a, int8x8_t b) {
4277
- // return vmax_s8(a, b);
4278
- // }
4273
+ int8x8_t test_vmax_s8(int8x8_t a, int8x8_t b) {
4274
+ return vmax_s8(a, b);
4279
4275
4280
- // NYI-LABEL: @test_vmax_s16(
4281
- // NYI: [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
4282
- // NYI: [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
4283
- // NYI: [[VMAX2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.smax.v4i16(<4 x i16> %a, <4 x i16> %b)
4284
- // NYI: ret <4 x i16> [[VMAX2_I]]
4285
- // int16x4_t test_vmax_s16(int16x4_t a, int16x4_t b) {
4286
- // return vmax_s16(a, b);
4287
- // }
4276
+ // CIR-LABEL: vmax_s8
4277
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!s8i x 8>
4288
4278
4289
- // NYI-LABEL: @test_vmax_s32(
4290
- // NYI: [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
4291
- // NYI: [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
4292
- // NYI: [[VMAX2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.smax.v2i32(<2 x i32> %a, <2 x i32> %b)
4293
- // NYI: ret <2 x i32> [[VMAX2_I]]
4294
- // int32x2_t test_vmax_s32(int32x2_t a, int32x2_t b) {
4295
- // return vmax_s32(a, b);
4296
- // }
4279
+ // LLVM-LABEL: test_vmax_s8
4280
+ // LLVM-SAME: (<8 x i8> [[a:%.*]], <8 x i8> [[b:%.*]])
4281
+ // LLVM: [[VMAX_I:%.*]] = call <8 x i8> @llvm.smax.v8i8(<8 x i8> [[a]], <8 x i8> [[b]])
4282
+ // LLVM: ret <8 x i8> [[VMAX_I]]
4283
+ }
4297
4284
4298
- // NYI-LABEL: @test_vmax_u8(
4299
- // NYI: [[VMAX_I:%.*]] = call <8 x i8> @llvm.aarch64.neon.umax.v8i8(<8 x i8> %a, <8 x i8> %b)
4300
- // NYI: ret <8 x i8> [[VMAX_I]]
4301
- // uint8x8_t test_vmax_u8(uint8x8_t a, uint8x8_t b) {
4302
- // return vmax_u8(a, b);
4303
- // }
4285
+ int16x4_t test_vmax_s16(int16x4_t a, int16x4_t b) {
4286
+ return vmax_s16(a, b);
4304
4287
4305
- // NYI-LABEL: @test_vmax_u16(
4306
- // NYI: [[TMP0:%.*]] = bitcast <4 x i16> %a to <8 x i8>
4307
- // NYI: [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
4308
- // NYI: [[VMAX2_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.umax.v4i16(<4 x i16> %a, <4 x i16> %b)
4309
- // NYI: ret <4 x i16> [[VMAX2_I]]
4310
- // uint16x4_t test_vmax_u16(uint16x4_t a, uint16x4_t b) {
4311
- // return vmax_u16(a, b);
4312
- // }
4288
+ // CIR-LABEL: vmax_s16
4289
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!s16i x 4>
4313
4290
4314
- // NYI-LABEL: @test_vmax_u32(
4315
- // NYI: [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8>
4316
- // NYI: [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
4317
- // NYI: [[VMAX2_I:%.*]] = call <2 x i32> @llvm.aarch64.neon.umax.v2i32(<2 x i32> %a, <2 x i32> %b)
4318
- // NYI: ret <2 x i32> [[VMAX2_I]]
4319
- // uint32x2_t test_vmax_u32(uint32x2_t a, uint32x2_t b) {
4320
- // return vmax_u32(a, b);
4321
- // }
4291
+ // LLVM-LABEL: test_vmax_s16
4292
+ // LLVM-SAME: (<4 x i16> [[a:%.*]], <4 x i16> [[b:%.*]])
4293
+ // LLVM: [[TMP0:%.*]] = bitcast <4 x i16> [[a]] to <8 x i8>
4294
+ // LLVM: [[TMP1:%.*]] = bitcast <4 x i16> [[b]] to <8 x i8>
4295
+ // LLVM: [[VMAX2_I:%.*]] = call <4 x i16> @llvm.smax.v4i16(<4 x i16> [[a]], <4 x i16> [[b]])
4296
+ // LLVM: ret <4 x i16> [[VMAX2_I]]
4297
+ }
4322
4298
4323
- // NYI-LABEL: @test_vmax_f32(
4324
- // NYI: [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8>
4325
- // NYI: [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
4326
- // NYI: [[VMAX2_I:%.*]] = call <2 x float> @llvm.aarch64.neon.fmax.v2f32(<2 x float> %a, <2 x float> %b)
4327
- // NYI: ret <2 x float> [[VMAX2_I]]
4328
- // float32x2_t test_vmax_f32(float32x2_t a, float32x2_t b) {
4329
- // return vmax_f32(a, b);
4330
- // }
4299
+ int32x2_t test_vmax_s32(int32x2_t a, int32x2_t b) {
4300
+ return vmax_s32(a, b);
4331
4301
4332
- // NYI-LABEL: @test_vmaxq_s8(
4333
- // NYI: [[VMAX_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.smax.v16i8(<16 x i8> %a, <16 x i8> %b)
4334
- // NYI: ret <16 x i8> [[VMAX_I]]
4335
- // int8x16_t test_vmaxq_s8(int8x16_t a, int8x16_t b) {
4336
- // return vmaxq_s8(a, b);
4337
- // }
4302
+ // CIR-LABEL: vmax_s32
4303
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!s32i x 2>
4338
4304
4339
- // NYI-LABEL: @test_vmaxq_s16(
4340
- // NYI: [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
4341
- // NYI: [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
4342
- // NYI: [[VMAX2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.smax.v8i16(<8 x i16> %a, <8 x i16> %b)
4343
- // NYI: ret <8 x i16> [[VMAX2_I]]
4344
- // int16x8_t test_vmaxq_s16(int16x8_t a, int16x8_t b) {
4345
- // return vmaxq_s16(a, b);
4346
- // }
4305
+ // LLVM-LABEL: test_vmax_s32
4306
+ // LLVM-SAME: (<2 x i32> [[a:%.*]], <2 x i32> [[b:%.*]])
4307
+ // LLVM: [[TMP0:%.*]] = bitcast <2 x i32> [[a]] to <8 x i8>
4308
+ // LLVM: [[TMP1:%.*]] = bitcast <2 x i32> [[b]] to <8 x i8>
4309
+ // LLVM: [[VMAX2_I:%.*]] = call <2 x i32> @llvm.smax.v2i32(<2 x i32> [[a]], <2 x i32> [[b]])
4310
+ // LLVM: ret <2 x i32> [[VMAX2_I]]
4311
+ }
4347
4312
4348
- // NYI-LABEL: @test_vmaxq_s32(
4349
- // NYI: [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
4350
- // NYI: [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
4351
- // NYI: [[VMAX2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.smax.v4i32(<4 x i32> %a, <4 x i32> %b)
4352
- // NYI: ret <4 x i32> [[VMAX2_I]]
4353
- // int32x4_t test_vmaxq_s32(int32x4_t a, int32x4_t b) {
4354
- // return vmaxq_s32(a, b);
4355
- // }
4313
+ uint8x8_t test_vmax_u8(uint8x8_t a, uint8x8_t b) {
4314
+ return vmax_u8(a, b);
4356
4315
4357
- // NYI-LABEL: @test_vmaxq_u8(
4358
- // NYI: [[VMAX_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.umax.v16i8(<16 x i8> %a, <16 x i8> %b)
4359
- // NYI: ret <16 x i8> [[VMAX_I]]
4360
- // uint8x16_t test_vmaxq_u8(uint8x16_t a, uint8x16_t b) {
4361
- // return vmaxq_u8(a, b);
4362
- // }
4316
+ // CIR-LABEL: vmax_u8
4317
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!u8i x 8>
4363
4318
4364
- // NYI-LABEL: @test_vmaxq_u16(
4365
- // NYI: [[TMP0:%.*]] = bitcast <8 x i16> %a to <16 x i8>
4366
- // NYI: [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
4367
- // NYI: [[VMAX2_I:%.*]] = call <8 x i16> @llvm.aarch64.neon.umax.v8i16(<8 x i16> %a, <8 x i16> %b)
4368
- // NYI: ret <8 x i16> [[VMAX2_I]]
4369
- // uint16x8_t test_vmaxq_u16(uint16x8_t a, uint16x8_t b) {
4370
- // return vmaxq_u16(a, b);
4371
- // }
4319
+ // LLVM-LABEL: test_vmax_u8
4320
+ // LLVM-SAME: (<8 x i8> [[a:%.*]], <8 x i8> [[b:%.*]])
4321
+ // LLVM: [[VMAX_I:%.*]] = call <8 x i8> @llvm.umax.v8i8(<8 x i8> [[a]], <8 x i8> [[b]])
4322
+ // LLVM: ret <8 x i8> [[VMAX_I]]
4323
+ }
4372
4324
4373
- // NYI-LABEL: @test_vmaxq_u32(
4374
- // NYI: [[TMP0:%.*]] = bitcast <4 x i32> %a to <16 x i8>
4375
- // NYI: [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
4376
- // NYI: [[VMAX2_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.umax.v4i32(<4 x i32> %a, <4 x i32> %b)
4377
- // NYI: ret <4 x i32> [[VMAX2_I]]
4378
- // uint32x4_t test_vmaxq_u32(uint32x4_t a, uint32x4_t b) {
4379
- // return vmaxq_u32(a, b);
4380
- // }
4325
+ uint16x4_t test_vmax_u16(uint16x4_t a, uint16x4_t b) {
4326
+ return vmax_u16(a, b);
4381
4327
4382
- // NYI-LABEL: @test_vmaxq_f32(
4383
- // NYI: [[TMP0:%.*]] = bitcast <4 x float> %a to <16 x i8>
4384
- // NYI: [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
4385
- // NYI: [[VMAX2_I:%.*]] = call <4 x float> @llvm.aarch64.neon.fmax.v4f32(<4 x float> %a, <4 x float> %b)
4386
- // NYI: ret <4 x float> [[VMAX2_I]]
4387
- // float32x4_t test_vmaxq_f32(float32x4_t a, float32x4_t b) {
4388
- // return vmaxq_f32(a, b);
4389
- // }
4328
+ // CIR-LABEL: vmax_u16
4329
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!u16i x 4>
4390
4330
4391
- // NYI-LABEL: @test_vmaxq_f64(
4392
- // NYI: [[TMP0:%.*]] = bitcast <2 x double> %a to <16 x i8>
4393
- // NYI: [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
4394
- // NYI: [[VMAX2_I:%.*]] = call <2 x double> @llvm.aarch64.neon.fmax.v2f64(<2 x double> %a, <2 x double> %b)
4395
- // NYI: ret <2 x double> [[VMAX2_I]]
4396
- // float64x2_t test_vmaxq_f64(float64x2_t a, float64x2_t b) {
4397
- // return vmaxq_f64(a, b);
4398
- // }
4331
+ // LLVM-LABEL: test_vmax_u16
4332
+ // LLVM-SAME: (<4 x i16> [[a:%.*]], <4 x i16> [[b:%.*]])
4333
+ // LLVM: [[TMP0:%.*]] = bitcast <4 x i16> [[a]] to <8 x i8>
4334
+ // LLVM: [[TMP1:%.*]] = bitcast <4 x i16> [[b]] to <8 x i8>
4335
+ // LLVM: [[VMAX2_I:%.*]] = call <4 x i16> @llvm.umax.v4i16(<4 x i16> [[a]], <4 x i16> [[b]])
4336
+ // LLVM: ret <4 x i16> [[VMAX2_I]]
4337
+ }
4338
+
4339
+ uint32x2_t test_vmax_u32(uint32x2_t a, uint32x2_t b) {
4340
+ return vmax_u32(a, b);
4341
+
4342
+ // CIR-LABEL: vmax_u32
4343
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!u32i x 2>
4344
+
4345
+ // LLVM-LABEL: test_vmax_u32
4346
+ // LLVM-SAME: (<2 x i32> [[a:%.*]], <2 x i32> [[b:%.*]])
4347
+ // LLVM: [[TMP0:%.*]] = bitcast <2 x i32> [[a]] to <8 x i8>
4348
+ // LLVM: [[TMP1:%.*]] = bitcast <2 x i32> [[b]] to <8 x i8>
4349
+ // LLVM: [[VMAX2_I:%.*]] = call <2 x i32> @llvm.umax.v2i32(<2 x i32> [[a]], <2 x i32> [[b]])
4350
+ // LLVM: ret <2 x i32> [[VMAX2_I]]
4351
+ }
4352
+
4353
+ float32x2_t test_vmax_f32(float32x2_t a, float32x2_t b) {
4354
+ return vmax_f32(a, b);
4355
+
4356
+ // CIR-LABEL: vmax_f32
4357
+ // CIR: cir.fmaximum {{%.*}}, {{%.*}} : !cir.vector<!cir.float x 2>
4358
+
4359
+ // LLVM-LABEL: test_vmax_f32
4360
+ // LLVM-SAME: (<2 x float> [[a:%.*]], <2 x float> [[b:%.*]])
4361
+ // LLVM: [[TMP0:%.*]] = bitcast <2 x float> [[a]] to <8 x i8>
4362
+ // LLVM: [[TMP1:%.*]] = bitcast <2 x float> [[b]] to <8 x i8>
4363
+ // LLVM: [[VMAX2_I:%.*]] = call <2 x float> @llvm.maximum.v2f32(<2 x float> [[a]], <2 x float> [[b]])
4364
+ // LLVM: ret <2 x float> [[VMAX2_I]]
4365
+ }
4366
+
4367
+ int8x16_t test_vmaxq_s8(int8x16_t a, int8x16_t b) {
4368
+ return vmaxq_s8(a, b);
4369
+
4370
+ // CIR-LABEL: vmaxq_s8
4371
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!s8i x 16>
4372
+
4373
+ // LLVM-LABEL: test_vmaxq_s8
4374
+ // LLVM-SAME: (<16 x i8> [[a:%.*]], <16 x i8> [[b:%.*]])
4375
+ // LLVM: [[VMAX_I:%.*]] = call <16 x i8> @llvm.smax.v16i8(<16 x i8> [[a]], <16 x i8> [[b]])
4376
+ // LLVM: ret <16 x i8> [[VMAX_I]]
4377
+ }
4378
+
4379
+ int16x8_t test_vmaxq_s16(int16x8_t a, int16x8_t b) {
4380
+ return vmaxq_s16(a, b);
4381
+
4382
+ // CIR-LABEL: vmaxq_s16
4383
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!s16i x 8>
4384
+
4385
+ // LLVM-LABEL: test_vmaxq_s16
4386
+ // LLVM-SAME: (<8 x i16> [[a:%.*]], <8 x i16> [[b:%.*]])
4387
+ // LLVM: [[TMP0:%.*]] = bitcast <8 x i16> [[a]] to <16 x i8>
4388
+ // LLVM: [[TMP1:%.*]] = bitcast <8 x i16> [[b]] to <16 x i8>
4389
+ // LLVM: [[VMAX2_I:%.*]] = call <8 x i16> @llvm.smax.v8i16(<8 x i16> [[a]], <8 x i16> [[b]])
4390
+ // LLVM: ret <8 x i16> [[VMAX2_I]]
4391
+ }
4392
+
4393
+ int32x4_t test_vmaxq_s32(int32x4_t a, int32x4_t b) {
4394
+ return vmaxq_s32(a, b);
4395
+
4396
+ // CIR-LABEL: vmaxq_s32
4397
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!s32i x 4>
4398
+
4399
+ // LLVM-LABEL: test_vmaxq_s32
4400
+ // LLVM-SAME: (<4 x i32> [[a:%.*]], <4 x i32> [[b:%.*]])
4401
+ // LLVM: [[TMP0:%.*]] = bitcast <4 x i32> [[a]] to <16 x i8>
4402
+ // LLVM: [[TMP1:%.*]] = bitcast <4 x i32> [[b]] to <16 x i8>
4403
+ // LLVM: [[VMAX2_I:%.*]] = call <4 x i32> @llvm.smax.v4i32(<4 x i32> [[a]], <4 x i32> [[b]])
4404
+ // LLVM: ret <4 x i32> [[VMAX2_I]]
4405
+ }
4406
+
4407
+ uint8x16_t test_vmaxq_u8(uint8x16_t a, uint8x16_t b) {
4408
+ return vmaxq_u8(a, b);
4409
+
4410
+ // CIR-LABEL: vmaxq_u8
4411
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!u8i x 16>
4412
+
4413
+ // LLVM-LABEL: test_vmaxq_u8
4414
+ // LLVM-SAME: (<16 x i8> [[a:%.*]], <16 x i8> [[b:%.*]])
4415
+ // LLVM: [[VMAX_I:%.*]] = call <16 x i8> @llvm.umax.v16i8(<16 x i8> [[a]], <16 x i8> [[b]])
4416
+ // LLVM: ret <16 x i8> [[VMAX_I]]
4417
+ }
4418
+
4419
+ uint16x8_t test_vmaxq_u16(uint16x8_t a, uint16x8_t b) {
4420
+ return vmaxq_u16(a, b);
4421
+
4422
+ // CIR-LABEL: vmaxq_u16
4423
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!u16i x 8>
4424
+
4425
+ // LLVM-LABEL: test_vmaxq_u16
4426
+ // LLVM-SAME: (<8 x i16> [[a:%.*]], <8 x i16> [[b:%.*]])
4427
+ // LLVM: [[TMP0:%.*]] = bitcast <8 x i16> [[a]] to <16 x i8>
4428
+ // LLVM: [[TMP1:%.*]] = bitcast <8 x i16> [[b]] to <16 x i8>
4429
+ // LLVM: [[VMAX2_I:%.*]] = call <8 x i16> @llvm.umax.v8i16(<8 x i16> [[a]], <8 x i16> [[b]])
4430
+ // LLVM: ret <8 x i16> [[VMAX2_I]]
4431
+ }
4432
+
4433
+ uint32x4_t test_vmaxq_u32(uint32x4_t a, uint32x4_t b) {
4434
+ return vmaxq_u32(a, b);
4435
+
4436
+ // CIR-LABEL: vmaxq_u32
4437
+ // CIR: cir.binop(max, {{%.*}}, {{%.*}}) : !cir.vector<!u32i x 4>
4438
+
4439
+ // LLVM-LABEL: test_vmaxq_u32
4440
+ // LLVM-SAME: (<4 x i32> [[a:%.*]], <4 x i32> [[b:%.*]])
4441
+ // LLVM: [[TMP0:%.*]] = bitcast <4 x i32> [[a]] to <16 x i8>
4442
+ // LLVM: [[TMP1:%.*]] = bitcast <4 x i32> [[b]] to <16 x i8>
4443
+ // LLVM: [[VMAX2_I:%.*]] = call <4 x i32> @llvm.umax.v4i32(<4 x i32> [[a]], <4 x i32> [[b]])
4444
+ // LLVM: ret <4 x i32> [[VMAX2_I]]
4445
+ }
4446
+
4447
+ float32x4_t test_vmaxq_f32(float32x4_t a, float32x4_t b) {
4448
+ return vmaxq_f32(a, b);
4449
+
4450
+ // CIR-LABEL: vmaxq_f32
4451
+ // CIR: cir.fmaximum {{%.*}}, {{%.*}} : !cir.vector<!cir.float x 4>
4452
+
4453
+ // LLVM-LABEL: test_vmaxq_f32
4454
+ // LLVM-SAME: (<4 x float> [[a:%.*]], <4 x float> [[b:%.*]])
4455
+ // LLVM: [[TMP0:%.*]] = bitcast <4 x float> [[a]] to <16 x i8>
4456
+ // LLVM: [[TMP1:%.*]] = bitcast <4 x float> [[b]] to <16 x i8>
4457
+ // LLVM: [[VMAX2_I:%.*]] = call <4 x float> @llvm.maximum.v4f32(<4 x float> [[a]], <4 x float> [[b]])
4458
+ // LLVM: ret <4 x float> [[VMAX2_I]]
4459
+ }
4460
+
4461
+ float64x2_t test_vmaxq_f64(float64x2_t a, float64x2_t b) {
4462
+ return vmaxq_f64(a, b);
4463
+
4464
+ // CIR-LABEL: vmaxq_f64
4465
+ // CIR: cir.fmaximum {{%.*}}, {{%.*}} : !cir.vector<!cir.double x 2>
4466
+
4467
+ // LLVM-LABEL: test_vmaxq_f64
4468
+ // LLVM-SAME: (<2 x double> [[a:%.*]], <2 x double> [[b:%.*]])
4469
+ // LLVM: [[TMP0:%.*]] = bitcast <2 x double> [[a]] to <16 x i8>
4470
+ // LLVM: [[TMP1:%.*]] = bitcast <2 x double> [[b]] to <16 x i8>
4471
+ // LLVM: [[VMAX2_I:%.*]] = call <2 x double> @llvm.maximum.v2f64(<2 x double> [[a]], <2 x double> [[b]])
4472
+ // LLVM: ret <2 x double> [[VMAX2_I]]
4473
+ }
4399
4474
4400
4475
int8x8_t test_vmin_s8(int8x8_t a, int8x8_t b) {
4401
4476
return vmin_s8(a, b);
@@ -18586,14 +18661,19 @@ float64_t test_vaddvq_f64(float64x2_t a) {
18586
18661
// return vabd_f64(a, b);
18587
18662
// }
18588
18663
18589
- // NYI-LABEL: @test_vmax_f64(
18590
- // NYI: [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
18591
- // NYI: [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
18592
- // NYI: [[VMAX2_I:%.*]] = call <1 x double> @llvm.aarch64.neon.fmax.v1f64(<1 x double> %a, <1 x double> %b)
18593
- // NYI: ret <1 x double> [[VMAX2_I]]
18594
- // float64x1_t test_vmax_f64(float64x1_t a, float64x1_t b) {
18595
- // return vmax_f64(a, b);
18596
- // }
18664
+ float64x1_t test_vmax_f64(float64x1_t a, float64x1_t b) {
18665
+ return vmax_f64(a, b);
18666
+
18667
+ // CIR-LABEL: vmax_f64
18668
+ // CIR: cir.fmaximum {{%.*}}, {{%.*}} : !cir.vector<!cir.double x 1>
18669
+
18670
+ // LLVM-LABEL: test_vmax_f64
18671
+ // LLVM-SAME: (<1 x double> [[a:%.*]], <1 x double> [[b:%.*]])
18672
+ // LLVM: [[TMP0:%.*]] = bitcast <1 x double> [[a]] to <8 x i8>
18673
+ // LLVM: [[TMP1:%.*]] = bitcast <1 x double> [[b]] to <8 x i8>
18674
+ // LLVM: [[VMAX2_I:%.*]] = call <1 x double> @llvm.maximum.v1f64(<1 x double> [[a]], <1 x double> [[b]])
18675
+ // LLVM: ret <1 x double> [[VMAX2_I]]
18676
+ }
18597
18677
18598
18678
// NYI-LABEL: @test_vmaxnm_f64(
18599
18679
// NYI: [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
0 commit comments