@@ -263,9 +263,10 @@ def XNOR : ALU_rr<0b0100000, 0b100, "xnor">,
263263 Sched<[WriteIALU, ReadIALU, ReadIALU]>;
264264} // Predicates = [HasStdExtZbbOrZbkb]
265265
266- let Predicates = [HasStdExtZba ] in {
266+ let Predicates = [HasStdExtZbaOrP ] in
267267def SH1ADD : ALU_rr<0b0010000, 0b010, "sh1add">,
268268 Sched<[WriteSHXADD, ReadSHXADD, ReadSHXADD]>;
269+ let Predicates = [HasStdExtZba] in {
269270def SH2ADD : ALU_rr<0b0010000, 0b100, "sh2add">,
270271 Sched<[WriteSHXADD, ReadSHXADD, ReadSHXADD]>;
271272def SH3ADD : ALU_rr<0b0010000, 0b110, "sh3add">,
@@ -337,30 +338,32 @@ def XPERM8 : ALU_rr<0b0010100, 0b100, "xperm8">,
337338 Sched<[WriteXPERM, ReadXPERM, ReadXPERM]>;
338339} // Predicates = [HasStdExtZbkx]
339340
340- let Predicates = [HasStdExtZbb ], IsSignExtendingOpW = 1 in {
341+ let Predicates = [HasStdExtZbbOrP ], IsSignExtendingOpW = 1 in
341342def CLZ : Unary_r<0b011000000000, 0b001, "clz">,
342343 Sched<[WriteCLZ, ReadCLZ]>;
344+ let Predicates = [HasStdExtZbb], IsSignExtendingOpW = 1 in {
343345def CTZ : Unary_r<0b011000000001, 0b001, "ctz">,
344346 Sched<[WriteCTZ, ReadCTZ]>;
345347def CPOP : Unary_r<0b011000000010, 0b001, "cpop">,
346348 Sched<[WriteCPOP, ReadCPOP]>;
347349} // Predicates = [HasStdExtZbb]
348350
349- let Predicates = [HasStdExtZbb , IsRV64], IsSignExtendingOpW = 1 in {
351+ let Predicates = [HasStdExtZbbOrP , IsRV64], IsSignExtendingOpW = 1 in
350352def CLZW : UnaryW_r<0b011000000000, 0b001, "clzw">,
351353 Sched<[WriteCLZ32, ReadCLZ32]>;
354+ let Predicates = [HasStdExtZbb, IsRV64], IsSignExtendingOpW = 1 in {
352355def CTZW : UnaryW_r<0b011000000001, 0b001, "ctzw">,
353356 Sched<[WriteCTZ32, ReadCTZ32]>;
354357def CPOPW : UnaryW_r<0b011000000010, 0b001, "cpopw">,
355358 Sched<[WriteCPOP32, ReadCPOP32]>;
356359} // Predicates = [HasStdExtZbb, IsRV64]
357360
358- let Predicates = [HasStdExtZbb ], IsSignExtendingOpW = 1 in {
361+ let Predicates = [HasStdExtZbbOrP ], IsSignExtendingOpW = 1 in {
359362def SEXT_B : Unary_r<0b011000000100, 0b001, "sext.b">,
360363 Sched<[WriteIALU, ReadIALU]>;
361364def SEXT_H : Unary_r<0b011000000101, 0b001, "sext.h">,
362365 Sched<[WriteIALU, ReadIALU]>;
363- } // Predicates = [HasStdExtZbb ]
366+ } // Predicates = [HasStdExtZbbOrP ]
364367
365368let Predicates = [HasStdExtZbc] in {
366369def CLMULR : ALU_rr<0b0000101, 0b010, "clmulr", Commutable=1>,
@@ -374,7 +377,7 @@ def CLMULH : ALU_rr<0b0000101, 0b011, "clmulh", Commutable=1>,
374377 Sched<[WriteCLMUL, ReadCLMUL, ReadCLMUL]>;
375378} // Predicates = [HasStdExtZbcOrZbkc]
376379
377- let Predicates = [HasStdExtZbb ] in {
380+ let Predicates = [HasStdExtZbbOrP ] in {
378381def MIN : ALU_rr<0b0000101, 0b100, "min", Commutable=1>,
379382 Sched<[WriteIMinMax, ReadIMinMax, ReadIMinMax]>;
380383def MINU : ALU_rr<0b0000101, 0b101, "minu", Commutable=1>,
@@ -385,9 +388,10 @@ def MAXU : ALU_rr<0b0000101, 0b111, "maxu", Commutable=1>,
385388 Sched<[WriteIMinMax, ReadIMinMax, ReadIMinMax]>;
386389} // Predicates = [HasStdExtZbb]
387390
388- let Predicates = [HasStdExtZbkb ] in {
391+ let Predicates = [HasStdExtZbkbOrP ] in
389392def PACK : ALU_rr<0b0000100, 0b100, "pack">,
390393 Sched<[WritePACK, ReadPACK, ReadPACK]>;
394+ let Predicates = [HasStdExtZbkb] in {
391395let IsSignExtendingOpW = 1 in
392396def PACKH : ALU_rr<0b0000100, 0b111, "packh">,
393397 Sched<[WritePACK, ReadPACK, ReadPACK]>;
@@ -407,15 +411,15 @@ def ZEXT_H_RV64 : RVBUnaryR<0b0000100, 0b100, OPC_OP_32, "zext.h">,
407411 Sched<[WriteIALU, ReadIALU]>;
408412} // Predicates = [HasStdExtZbb, IsRV64]
409413
410- let Predicates = [HasStdExtZbbOrZbkb , IsRV32] in {
414+ let Predicates = [HasStdExtZbbOrZbkbOrP , IsRV32] in {
411415def REV8_RV32 : Unary_r<0b011010011000, 0b101, "rev8">,
412416 Sched<[WriteREV8, ReadREV8]>;
413- } // Predicates = [HasStdExtZbbOrZbkb , IsRV32]
417+ } // Predicates = [HasStdExtZbbOrZbkbOrP , IsRV32]
414418
415- let Predicates = [HasStdExtZbbOrZbkb , IsRV64] in {
419+ let Predicates = [HasStdExtZbbOrZbkbOrP , IsRV64] in {
416420def REV8_RV64 : Unary_r<0b011010111000, 0b101, "rev8">,
417421 Sched<[WriteREV8, ReadREV8]>;
418- } // Predicates = [HasStdExtZbbOrZbkb , IsRV64]
422+ } // Predicates = [HasStdExtZbbOrZbkbOrP , IsRV64]
419423
420424let Predicates = [HasStdExtZbb] in {
421425def ORC_B : Unary_r<0b001010000111, 0b101, "orc.b">,
0 commit comments