@@ -248,17 +248,17 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
248
248
llvm_unreachable (" Configuration setting instructions do not read or write "
249
249
" vector registers" );
250
250
251
- // 11. Vector Integer Arithmetic Instructions
252
- // 11.1. Vector Single-Width Integer Add and Subtract
251
+ // Vector Integer Arithmetic Instructions
252
+ // Vector Single-Width Integer Add and Subtract
253
253
case RISCV::VADD_VI:
254
254
case RISCV::VADD_VV:
255
255
case RISCV::VADD_VX:
256
256
case RISCV::VSUB_VV:
257
257
case RISCV::VSUB_VX:
258
258
case RISCV::VRSUB_VI:
259
259
case RISCV::VRSUB_VX:
260
- // 11.5. Vector Bitwise Logical Instructions
261
- // 11.6. Vector Single-Width Shift Instructions
260
+ // Vector Bitwise Logical Instructions
261
+ // Vector Single-Width Shift Instructions
262
262
// EEW=SEW. EMUL=LMUL.
263
263
case RISCV::VAND_VI:
264
264
case RISCV::VAND_VV:
@@ -278,7 +278,7 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
278
278
case RISCV::VSRA_VI:
279
279
case RISCV::VSRA_VV:
280
280
case RISCV::VSRA_VX:
281
- // 11.9. Vector Integer Min/Max Instructions
281
+ // Vector Integer Min/Max Instructions
282
282
// EEW=SEW. EMUL=LMUL.
283
283
case RISCV::VMINU_VV:
284
284
case RISCV::VMINU_VX:
@@ -288,7 +288,7 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
288
288
case RISCV::VMAXU_VX:
289
289
case RISCV::VMAX_VV:
290
290
case RISCV::VMAX_VX:
291
- // 11.10. Vector Single-Width Integer Multiply Instructions
291
+ // Vector Single-Width Integer Multiply Instructions
292
292
// Source and Dest EEW=SEW and EMUL=LMUL.
293
293
case RISCV::VMUL_VV:
294
294
case RISCV::VMUL_VX:
@@ -298,7 +298,7 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
298
298
case RISCV::VMULHU_VX:
299
299
case RISCV::VMULHSU_VV:
300
300
case RISCV::VMULHSU_VX:
301
- // 11.11. Vector Integer Divide Instructions
301
+ // Vector Integer Divide Instructions
302
302
// EEW=SEW. EMUL=LMUL.
303
303
case RISCV::VDIVU_VV:
304
304
case RISCV::VDIVU_VX:
@@ -308,7 +308,7 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
308
308
case RISCV::VREMU_VX:
309
309
case RISCV::VREM_VV:
310
310
case RISCV::VREM_VX:
311
- // 11.13. Vector Single-Width Integer Multiply-Add Instructions
311
+ // Vector Single-Width Integer Multiply-Add Instructions
312
312
// EEW=SEW. EMUL=LMUL.
313
313
case RISCV::VMACC_VV:
314
314
case RISCV::VMACC_VX:
@@ -318,16 +318,16 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
318
318
case RISCV::VMADD_VX:
319
319
case RISCV::VNMSUB_VV:
320
320
case RISCV::VNMSUB_VX:
321
- // 11.15. Vector Integer Merge Instructions
321
+ // Vector Integer Merge Instructions
322
322
// EEW=SEW and EMUL=LMUL, except the mask operand has EEW=1 and EMUL=
323
323
// (EEW/SEW)*LMUL. Mask operand is handled before this switch.
324
324
case RISCV::VMERGE_VIM:
325
325
case RISCV::VMERGE_VVM:
326
326
case RISCV::VMERGE_VXM:
327
- // 11.16. Vector Integer Move Instructions
328
- // 12. Vector Fixed-Point Arithmetic Instructions
329
- // 12.1. Vector Single-Width Saturating Add and Subtract
330
- // 12.2. Vector Single-Width Averaging Add and Subtract
327
+ // Vector Integer Move Instructions
328
+ // Vector Fixed-Point Arithmetic Instructions
329
+ // Vector Single-Width Saturating Add and Subtract
330
+ // Vector Single-Width Averaging Add and Subtract
331
331
// EEW=SEW. EMUL=LMUL.
332
332
case RISCV::VMV_V_I:
333
333
case RISCV::VMV_V_V:
@@ -350,23 +350,23 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
350
350
case RISCV::VASUBU_VX:
351
351
case RISCV::VASUB_VV:
352
352
case RISCV::VASUB_VX:
353
- // 12.4. Vector Single-Width Scaling Shift Instructions
353
+ // Vector Single-Width Scaling Shift Instructions
354
354
// EEW=SEW. EMUL=LMUL.
355
355
case RISCV::VSSRL_VI:
356
356
case RISCV::VSSRL_VV:
357
357
case RISCV::VSSRL_VX:
358
358
case RISCV::VSSRA_VI:
359
359
case RISCV::VSSRA_VV:
360
360
case RISCV::VSSRA_VX:
361
- // 16. Vector Permutation Instructions
362
- // 16.1. Integer Scalar Move Instructions
363
- // 16.2. Floating-Point Scalar Move Instructions
361
+ // Vector Permutation Instructions
362
+ // Integer Scalar Move Instructions
363
+ // Floating-Point Scalar Move Instructions
364
364
// EMUL=LMUL. EEW=SEW.
365
365
case RISCV::VMV_X_S:
366
366
case RISCV::VMV_S_X:
367
367
case RISCV::VFMV_F_S:
368
368
case RISCV::VFMV_S_F:
369
- // 16.3. Vector Slide Instructions
369
+ // Vector Slide Instructions
370
370
// EMUL=LMUL. EEW=SEW.
371
371
case RISCV::VSLIDEUP_VI:
372
372
case RISCV::VSLIDEUP_VX:
@@ -376,17 +376,17 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
376
376
case RISCV::VFSLIDE1UP_VF:
377
377
case RISCV::VSLIDE1DOWN_VX:
378
378
case RISCV::VFSLIDE1DOWN_VF:
379
- // 16.4. Vector Register Gather Instructions
379
+ // Vector Register Gather Instructions
380
380
// EMUL=LMUL. EEW=SEW. For mask operand, EMUL=1 and EEW=1.
381
381
case RISCV::VRGATHER_VI:
382
382
case RISCV::VRGATHER_VV:
383
383
case RISCV::VRGATHER_VX:
384
- // 16.5. Vector Compress Instruction
384
+ // Vector Compress Instruction
385
385
// EMUL=LMUL. EEW=SEW.
386
386
case RISCV::VCOMPRESS_VM:
387
387
return OperandInfo (MIVLMul, MILog2SEW);
388
388
389
- // 11.2. Vector Widening Integer Add/Subtract
389
+ // Vector Widening Integer Add/Subtract
390
390
// Def uses EEW=2*SEW and EMUL=2*LMUL. Operands use EEW=SEW and EMUL=LMUL.
391
391
case RISCV::VWADDU_VV:
392
392
case RISCV::VWADDU_VX:
@@ -397,7 +397,7 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
397
397
case RISCV::VWSUB_VV:
398
398
case RISCV::VWSUB_VX:
399
399
case RISCV::VWSLL_VI:
400
- // 11.12. Vector Widening Integer Multiply Instructions
400
+ // Vector Widening Integer Multiply Instructions
401
401
// Source and Destination EMUL=LMUL. Destination EEW=2*SEW. Source EEW=SEW.
402
402
case RISCV::VWMUL_VV:
403
403
case RISCV::VWMUL_VX:
@@ -420,7 +420,7 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
420
420
case RISCV::VWADD_WX:
421
421
case RISCV::VWSUB_WV:
422
422
case RISCV::VWSUB_WX:
423
- // 11.14. Vector Widening Integer Multiply-Add Instructions
423
+ // Vector Widening Integer Multiply-Add Instructions
424
424
// Destination EEW=2*SEW and EMUL=2*LMUL. Source EEW=SEW and EMUL=LMUL.
425
425
// Even though the add is a 2*SEW addition, the operands of the add are the
426
426
// Dest which is 2*SEW and the result of the multiply which is 2*SEW.
@@ -439,7 +439,7 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
439
439
return OperandInfo (EMUL, Log2EEW);
440
440
}
441
441
442
- // 11.3. Vector Integer Extension
442
+ // Vector Integer Extension
443
443
case RISCV::VZEXT_VF2:
444
444
case RISCV::VSEXT_VF2:
445
445
return getIntegerExtensionOperandInfo (2 , MI, MO);
@@ -450,7 +450,7 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
450
450
case RISCV::VSEXT_VF8:
451
451
return getIntegerExtensionOperandInfo (8 , MI, MO);
452
452
453
- // 11.7. Vector Narrowing Integer Right Shift Instructions
453
+ // Vector Narrowing Integer Right Shift Instructions
454
454
// Destination EEW=SEW and EMUL=LMUL, Op 1 has EEW=2*SEW EMUL=2*LMUL. Op2 has
455
455
// EEW=SEW EMUL=LMUL.
456
456
case RISCV::VNSRL_WX:
@@ -459,7 +459,7 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
459
459
case RISCV::VNSRA_WI:
460
460
case RISCV::VNSRA_WV:
461
461
case RISCV::VNSRA_WX:
462
- // 12.5. Vector Narrowing Fixed-Point Clip Instructions
462
+ // Vector Narrowing Fixed-Point Clip Instructions
463
463
// Destination and Op1 EEW=SEW and EMUL=LMUL. Op2 EEW=2*SEW and EMUL=2*LMUL
464
464
case RISCV::VNCLIPU_WI:
465
465
case RISCV::VNCLIPU_WV:
@@ -491,15 +491,15 @@ static bool isSupportedInstr(const MachineInstr &MI) {
491
491
return false ;
492
492
493
493
switch (RVV->BaseInstr ) {
494
- // 11.1. Vector Single-Width Integer Add and Subtract
494
+ // Vector Single-Width Integer Add and Subtract
495
495
case RISCV::VADD_VI:
496
496
case RISCV::VADD_VV:
497
497
case RISCV::VADD_VX:
498
498
case RISCV::VSUB_VV:
499
499
case RISCV::VSUB_VX:
500
500
case RISCV::VRSUB_VI:
501
501
case RISCV::VRSUB_VX:
502
- // 11.2. Vector Widening Integer Add/Subtract
502
+ // Vector Widening Integer Add/Subtract
503
503
case RISCV::VWADDU_VV:
504
504
case RISCV::VWADDU_VX:
505
505
case RISCV::VWSUBU_VV:
@@ -516,26 +516,26 @@ static bool isSupportedInstr(const MachineInstr &MI) {
516
516
case RISCV::VWADD_WX:
517
517
case RISCV::VWSUB_WV:
518
518
case RISCV::VWSUB_WX:
519
- // 11.3. Vector Integer Extension
519
+ // Vector Integer Extension
520
520
case RISCV::VZEXT_VF2:
521
521
case RISCV::VSEXT_VF2:
522
522
case RISCV::VZEXT_VF4:
523
523
case RISCV::VSEXT_VF4:
524
524
case RISCV::VZEXT_VF8:
525
525
case RISCV::VSEXT_VF8:
526
- // 11.4. Vector Integer Add-with-Carry / Subtract-with-Borrow Instructions
527
- // FIXME: Add support for 11.4 instructions
528
- // 11.5. Vector Bitwise Logical Instructions
529
- // FIXME: Add support for 11.5 instructions
530
- // 11.6. Vector Single-Width Shift Instructions
531
- // FIXME: Add support for 11.6 instructions
526
+ // Vector Integer Add-with-Carry / Subtract-with-Borrow Instructions
527
+ // FIXME: Add support
528
+ // Vector Bitwise Logical Instructions
529
+ // FIXME: Add support
530
+ // Vector Single-Width Shift Instructions
531
+ // FIXME: Add support
532
532
case RISCV::VSLL_VI:
533
- // 11.7. Vector Narrowing Integer Right Shift Instructions
534
- // FIXME: Add support for 11.7 instructions
533
+ // Vector Narrowing Integer Right Shift Instructions
534
+ // FIXME: Add support
535
535
case RISCV::VNSRL_WI:
536
- // 11.8 Vector Integer Compare Instructions
537
- // FIXME: Add support for 11.8 instructions
538
- // 11.9. Vector Integer Min/Max Instructions
536
+ // Vector Integer Compare Instructions
537
+ // FIXME: Add support
538
+ // Vector Integer Min/Max Instructions
539
539
case RISCV::VMINU_VV:
540
540
case RISCV::VMINU_VX:
541
541
case RISCV::VMIN_VV:
@@ -544,7 +544,7 @@ static bool isSupportedInstr(const MachineInstr &MI) {
544
544
case RISCV::VMAXU_VX:
545
545
case RISCV::VMAX_VV:
546
546
case RISCV::VMAX_VX:
547
- // 11.10. Vector Single-Width Integer Multiply Instructions
547
+ // Vector Single-Width Integer Multiply Instructions
548
548
case RISCV::VMUL_VV:
549
549
case RISCV::VMUL_VX:
550
550
case RISCV::VMULH_VV:
@@ -553,7 +553,7 @@ static bool isSupportedInstr(const MachineInstr &MI) {
553
553
case RISCV::VMULHU_VX:
554
554
case RISCV::VMULHSU_VV:
555
555
case RISCV::VMULHSU_VX:
556
- // 11.11. Vector Integer Divide Instructions
556
+ // Vector Integer Divide Instructions
557
557
case RISCV::VDIVU_VV:
558
558
case RISCV::VDIVU_VX:
559
559
case RISCV::VDIV_VV:
@@ -562,18 +562,18 @@ static bool isSupportedInstr(const MachineInstr &MI) {
562
562
case RISCV::VREMU_VX:
563
563
case RISCV::VREM_VV:
564
564
case RISCV::VREM_VX:
565
- // 11.12. Vector Widening Integer Multiply Instructions
566
- // FIXME: Add support for 11.12 instructions
567
- // 11.13. Vector Single-Width Integer Multiply-Add Instructions
568
- // FIXME: Add support for 11.13 instructions
569
- // 11.14. Vector Widening Integer Multiply-Add Instructions
570
- // FIXME: Add support for 11.14 instructions
565
+ // Vector Widening Integer Multiply Instructions
566
+ // FIXME: Add support
567
+ // Vector Single-Width Integer Multiply-Add Instructions
568
+ // FIXME: Add support
569
+ // Vector Widening Integer Multiply-Add Instructions
570
+ // FIXME: Add support
571
571
case RISCV::VWMACC_VX:
572
572
case RISCV::VWMACCU_VX:
573
- // 11.15. Vector Integer Merge Instructions
574
- // FIXME: Add support for 11.15 instructions
575
- // 11.16. Vector Integer Move Instructions
576
- // FIXME: Add support for 11.16 instructions
573
+ // Vector Integer Merge Instructions
574
+ // FIXME: Add support
575
+ // Vector Integer Move Instructions
576
+ // FIXME: Add support
577
577
case RISCV::VMV_V_I:
578
578
case RISCV::VMV_V_X:
579
579
0 commit comments