Index: llvm/lib/Target/RISCV/RISCVInstrInfoZb.td =================================================================== --- llvm/lib/Target/RISCV/RISCVInstrInfoZb.td +++ llvm/lib/Target/RISCV/RISCVInstrInfoZb.td @@ -602,12 +602,12 @@ def BFPW : ALUW_rr<0b0100100, 0b111, "bfpw">, Sched<[WriteBFP32, ReadBFP32, ReadBFP32]>; -let Predicates = [HasStdExtZbbOrZbp, IsRV32] in { +let Predicates = [HasStdExtZbbOrZbpOrZbkb, IsRV32] in { def ZEXT_H_RV32 : RVBUnary<0b0000100, 0b00000, 0b100, OPC_OP, "zext.h">, Sched<[WriteIALU, ReadIALU]>; -} // Predicates = [HasStdExtZbbOrZbp, IsRV32] +} // Predicates = [HasStdExtZbbOrZbpOrZbkb, IsRV32] -let Predicates = [HasStdExtZbbOrZbp, IsRV64] in { +let Predicates = [HasStdExtZbbOrZbpOrZbkb, IsRV64] in { def ZEXT_H_RV64 : RVBUnary<0b0000100, 0b00000, 0b100, OPC_OP_32, "zext.h">, Sched<[WriteIALU, ReadIALU]>; } // Predicates = [HasStdExtZbbOrZbp, IsRV64] Index: llvm/test/MC/RISCV/rv32zbbp-valid.s =================================================================== --- llvm/test/MC/RISCV/rv32zbbp-valid.s +++ llvm/test/MC/RISCV/rv32zbbp-valid.s @@ -1,26 +1,16 @@ # With Bitmanip base extension: # RUN: llvm-mc %s -triple=riscv32 -mattr=+zbb -show-encoding \ # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s -# RUN: llvm-mc %s -triple=riscv64 -mattr=+zbb -show-encoding \ -# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+zbb < %s \ # RUN: | llvm-objdump --mattr=+zbb -d -r - \ # RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s -# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+zbb < %s \ -# RUN: | llvm-objdump --mattr=+zbb -d -r - \ -# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s # With Bitmanip permutation extension: # RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-zbp -show-encoding \ # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s -# RUN: llvm-mc %s -triple=riscv64 -mattr=+experimental-zbp -show-encoding \ -# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+experimental-zbp < %s \ # RUN: | llvm-objdump --mattr=+experimental-zbp -d -r - \ # RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s -# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+experimental-zbp < %s \ -# RUN: | llvm-objdump --mattr=+experimental-zbp -d -r - \ -# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s # CHECK-ASM-AND-OBJ: andn t0, t1, t2 # CHECK-ASM: encoding: [0xb3,0x72,0x73,0x40] @@ -31,6 +21,7 @@ # CHECK-ASM-AND-OBJ: xnor t0, t1, t2 # CHECK-ASM: encoding: [0xb3,0x42,0x73,0x40] xnor t0, t1, t2 + # CHECK-ASM-AND-OBJ: rol t0, t1, t2 # CHECK-ASM: encoding: [0xb3,0x12,0x73,0x60] rol t0, t1, t2 @@ -46,3 +37,7 @@ # CHECK-ASM-AND-OBJ: orc.b t0, t1 # CHECK-ASM: encoding: [0x93,0x52,0x73,0x28] orc.b t0, t1 + +# CHECK-ASM-AND-OBJ: zext.h t0, t1 +# CHECK-ASM: encoding: [0xb3,0x42,0x03,0x08] +zext.h t0, t1 Index: llvm/test/MC/RISCV/rv32zbkb-valid.s =================================================================== --- llvm/test/MC/RISCV/rv32zbkb-valid.s +++ llvm/test/MC/RISCV/rv32zbkb-valid.s @@ -1,13 +1,8 @@ # RUN: llvm-mc %s -triple=riscv32 -mattr=+zbkb -show-encoding \ # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s -# RUN: llvm-mc %s -triple=riscv64 -mattr=+zbkb -show-encoding \ -# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s # RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+zbkb < %s \ # RUN: | llvm-objdump --mattr=+zbkb -d -r - \ -# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s -# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+zbkb < %s \ -# RUN: | llvm-objdump --mattr=+zbkb -d -r - \ -# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s +# RUN: | FileCheck --check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s # CHECK-ASM-AND-OBJ: ror t0, t1, t2 # CHECK-ASM: encoding: [0xb3,0x52,0x73,0x60] @@ -35,9 +30,8 @@ # CHECK-ASM-AND-OBJ: pack t0, t1, t2 # CHECK-ASM: encoding: [0xb3,0x42,0x73,0x08] pack t0, t1, t2 - -# Test the encoding used for zext.h for RV32. -# CHECK-ASM-AND-OBJ: pack t0, t1, zero +# CHECK-ASM: pack t0, t1, zero +# CHECK-OBJ: zext.h t0, t1 # CHECK-ASM: encoding: [0xb3,0x42,0x03,0x08] pack t0, t1, x0 @@ -48,3 +42,7 @@ # CHECK-ASM-AND-OBJ: brev8 t0, t1 # CHECK-ASM: encoding: [0x93,0x52,0x73,0x68] brev8 t0, t1 + +# CHECK-ASM-AND-OBJ: zext.h t0, t1 +# CHECK-ASM: encoding: [0xb3,0x42,0x03,0x08] +zext.h t0, t1 Index: llvm/test/MC/RISCV/rv32zbp-valid.s =================================================================== --- llvm/test/MC/RISCV/rv32zbp-valid.s +++ llvm/test/MC/RISCV/rv32zbp-valid.s @@ -32,6 +32,10 @@ # CHECK-ASM-AND-OBJ: pack t0, t1, t2 # CHECK-ASM: encoding: [0xb3,0x42,0x73,0x08] pack t0, t1, t2 +# CHECK-ASM: pack t0, t1, zero +# CHECK-OBJ: zext.h t0, t1 +# CHECK-ASM: encoding: [0xb3,0x42,0x03,0x08] +pack t0, t1, x0 # CHECK-ASM-AND-OBJ: packu t0, t1, t2 # CHECK-ASM: encoding: [0xb3,0x42,0x73,0x48] packu t0, t1, t2 Index: llvm/test/MC/RISCV/rv64zbbp-valid.s =================================================================== --- llvm/test/MC/RISCV/rv64zbbp-valid.s +++ llvm/test/MC/RISCV/rv64zbbp-valid.s @@ -12,6 +12,32 @@ # RUN: | llvm-objdump --mattr=+experimental-zbp -d -r - \ # RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s +# CHECK-ASM-AND-OBJ: andn t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x72,0x73,0x40] +andn t0, t1, t2 +# CHECK-ASM-AND-OBJ: orn t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x62,0x73,0x40] +orn t0, t1, t2 +# CHECK-ASM-AND-OBJ: xnor t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x42,0x73,0x40] +xnor t0, t1, t2 +# CHECK-ASM-AND-OBJ: rol t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x12,0x73,0x60] + +rol t0, t1, t2 +# CHECK-ASM-AND-OBJ: ror t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x52,0x73,0x60] +ror t0, t1, t2 +# CHECK-ASM-AND-OBJ: rori t0, t1, 31 +# CHECK-ASM: encoding: [0x93,0x52,0xf3,0x61] +rori t0, t1, 31 +# CHECK-ASM-AND-OBJ: rori t0, t1, 0 +# CHECK-ASM: encoding: [0x93,0x52,0x03,0x60] +rori t0, t1, 0 +# CHECK-ASM-AND-OBJ: orc.b t0, t1 +# CHECK-ASM: encoding: [0x93,0x52,0x73,0x28] +orc.b t0, t1 + # CHECK-ASM-AND-OBJ: rolw t0, t1, t2 # CHECK-ASM: encoding: [0xbb,0x12,0x73,0x60] rolw t0, t1, t2 @@ -24,9 +50,11 @@ # CHECK-ASM-AND-OBJ: roriw t0, t1, 0 # CHECK-ASM: encoding: [0x9b,0x52,0x03,0x60] roriw t0, t1, 0 + # CHECK-ASM-AND-OBJ: zext.h t0, t1 # CHECK-ASM: encoding: [0xbb,0x42,0x03,0x08] zext.h t0, t1 + # CHECK-ASM-AND-OBJ: rev8 t0, t1 # CHECK-ASM: encoding: [0x93,0x52,0x83,0x6b] rev8 t0, t1 Index: llvm/test/MC/RISCV/rv64zbkb-valid.s =================================================================== --- llvm/test/MC/RISCV/rv64zbkb-valid.s +++ llvm/test/MC/RISCV/rv64zbkb-valid.s @@ -2,7 +2,47 @@ # RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s # RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+zbkb < %s \ # RUN: | llvm-objdump --mattr=+zbkb -d -r - \ -# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s +# RUN: | FileCheck --check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s + +# CHECK-ASM-AND-OBJ: ror t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x52,0x73,0x60] +ror t0, t1, t2 +# CHECK-ASM-AND-OBJ: rol t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x12,0x73,0x60] +rol t0, t1, t2 +# CHECK-ASM-AND-OBJ: rori t0, t1, 31 +# CHECK-ASM: encoding: [0x93,0x52,0xf3,0x61] +rori t0, t1, 31 +# CHECK-ASM-AND-OBJ: rori t0, t1, 0 +# CHECK-ASM: encoding: [0x93,0x52,0x03,0x60] +rori t0, t1, 0 + +# CHECK-ASM-AND-OBJ: andn t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x72,0x73,0x40] +andn t0, t1, t2 +# CHECK-ASM-AND-OBJ: orn t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x62,0x73,0x40] +orn t0, t1, t2 +# CHECK-ASM-AND-OBJ: xnor t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x42,0x73,0x40] +xnor t0, t1, t2 + +# CHECK-ASM-AND-OBJ: pack t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x42,0x73,0x08] +pack t0, t1, t2 + + +# CHECK-ASM-AND-OBJ: pack t0, t1, zero +# CHECK-ASM: encoding: [0xb3,0x42,0x03,0x08] +pack t0, t1, x0 + +# CHECK-ASM-AND-OBJ: packh t0, t1, t2 +# CHECK-ASM: encoding: [0xb3,0x72,0x73,0x08] +packh t0, t1, t2 + +# CHECK-ASM-AND-OBJ: brev8 t0, t1 +# CHECK-ASM: encoding: [0x93,0x52,0x73,0x68] +brev8 t0, t1 # CHECK-ASM-AND-OBJ: rev8 t0, t1 # CHECK-ASM: encoding: [0x93,0x52,0x83,0x6b] @@ -25,7 +65,12 @@ # CHECK-ASM: encoding: [0xbb,0x42,0x73,0x08] packw t0, t1, t2 -# Test the encoding used for zext.h -# CHECK-ASM-AND-OBJ: packw t0, t1, zero +# CHECK-ASM: packw t0, t1, zero +# CHECK-OBJ: zext.h t0, t1 # CHECK-ASM: encoding: [0xbb,0x42,0x03,0x08] -packw t0, t1, zero +packw t0, t1, x0 + +# CHECK-ASM-AND-OBJ: zext.h t0, t1 +# CHECK-ASM: encoding: [0xbb,0x42,0x03,0x08] +zext.h t0, t1 +