[PATCH] D147612: [RISCV][MC] Add support for experimental Zvfbfwma extension
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGa1455de74d95: [RISCV][MC] Add support for experimental Zvfbfwma extension (authored by asb). Changed prior to commit: https://reviews.llvm.org/D147612?vs=523018&id=523771#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147612/new/ https://reviews.llvm.org/D147612 Files: clang/test/Preprocessor/riscv-target-features.c llvm/docs/RISCVUsage.rst llvm/docs/ReleaseNotes.rst llvm/lib/Support/RISCVISAInfo.cpp llvm/lib/Target/RISCV/RISCVFeatures.td llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td llvm/lib/Target/RISCV/RISCVSubtarget.h llvm/test/CodeGen/RISCV/attributes.ll llvm/test/MC/RISCV/attribute-arch.s llvm/test/MC/RISCV/rv64zhinx-invalid.s llvm/test/MC/RISCV/rv64zhinxmin-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma.s Index: llvm/test/MC/RISCV/rvv/zvfbfwma.s === --- /dev/null +++ llvm/test/MC/RISCV/rvv/zvfbfwma.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc -triple=riscv32 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv32 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN +# RUN: llvm-mc -triple=riscv64 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv64 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4, v0.t +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8c +vfwmaccbf16.vv v8, v20, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4 +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8e +vfwmaccbf16.vv v8, v20, v4 + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4, v0.t +# CHECK-ENCODING: [0x57,0x54,0x45,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8c +vfwmaccbf16.vf v8, fa0, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4 +# CHECK-ENCODING: [0x57,0x54,0x45,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8e +vfwmaccbf16.vf v8, fa0, v4 + +# Check scalar half FP load/store/move included in this extension. + +# CHECK-INST: flh ft0, 12(a0) +# CHECK-ENCODING: [0x07,0x10,0xc5,0x00] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 07 10 c5 00 +flh f0, 12(a0) + +# CHECK-INST: fsh ft6, 2047(s4) +# CHECK-ENCODING: [0xa7,0x1f,0x6a,0x7e] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: a7 1f 6a 7e +fsh f6, 2047(s4) + +# CHECK-INST: fmv.x.h a2, fs7 +# CHECK-ENCODING: [0x53,0x86,0x0b,0xe4] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 53 86 0b e4 +fmv.x.h a2, fs7 + +# CHECK-INST: fmv.h.x ft1, a6 +# CHECK-ENCODING: [0xd3,0x00,0x08,0xf4] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: d3 00 08 f4 +fmv.h.x ft1, a6 Index: llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s ===
[PATCH] D147612: [RISCV][MC] Add support for experimental Zvfbfwma extension
reames accepted this revision. reames added a comment. LGTM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147612/new/ https://reviews.llvm.org/D147612 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D147612: [RISCV][MC] Add support for experimental Zvfbfwma extension
asb updated this revision to Diff 523018. asb edited the summary of this revision. asb added a comment. Now updated to version 0.6 of the spec (was previously blocked on a new PDF being tagged and uploaded). CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147612/new/ https://reviews.llvm.org/D147612 Files: clang/test/Preprocessor/riscv-target-features.c llvm/docs/RISCVUsage.rst llvm/docs/ReleaseNotes.rst llvm/lib/Support/RISCVISAInfo.cpp llvm/lib/Target/RISCV/RISCVFeatures.td llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td llvm/lib/Target/RISCV/RISCVSubtarget.h llvm/test/CodeGen/RISCV/attributes.ll llvm/test/MC/RISCV/attribute-arch.s llvm/test/MC/RISCV/rv64zhinx-invalid.s llvm/test/MC/RISCV/rv64zhinxmin-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma.s Index: llvm/test/MC/RISCV/rvv/zvfbfwma.s === --- /dev/null +++ llvm/test/MC/RISCV/rvv/zvfbfwma.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc -triple=riscv32 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv32 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN +# RUN: llvm-mc -triple=riscv64 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv64 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4, v0.t +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8c +vfwmaccbf16.vv v8, v20, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4 +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8e +vfwmaccbf16.vv v8, v20, v4 + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4, v0.t +# CHECK-ENCODING: [0x57,0x54,0x45,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8c +vfwmaccbf16.vf v8, fa0, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4 +# CHECK-ENCODING: [0x57,0x54,0x45,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8e +vfwmaccbf16.vf v8, fa0, v4 + +# Check scalar half FP load/store/move included in this extension. + +# CHECK-INST: flh ft0, 12(a0) +# CHECK-ENCODING: [0x07,0x10,0xc5,0x00] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 07 10 c5 00 +flh f0, 12(a0) + +# CHECK-INST: fsh ft6, 2047(s4) +# CHECK-ENCODING: [0xa7,0x1f,0x6a,0x7e] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: a7 1f 6a 7e +fsh f6, 2047(s4) + +# CHECK-INST: fmv.x.h a2, fs7 +# CHECK-ENCODING: [0x53,0x86,0x0b,0xe4] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 53 86 0b e4 +fmv.x.h a2, fs7 + +# CHECK-INST: fmv.h.x ft1, a6 +# CHECK-ENCODING: [0xd3,0x00,0x08,0xf4] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: d3 00 08 f4 +fmv.h.x ft1, a6 Index: llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s === --- /dev/null +++ llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s @@ -0,0 +1,11 @@ +# RUN: not llvm-mc -triple riscv32 -mattr
[PATCH] D147612: [RISCV][MC] Add support for experimental Zvfbfwma extension
asb updated this revision to Diff 512745. asb added a comment. Rebase CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147612/new/ https://reviews.llvm.org/D147612 Files: clang/test/Preprocessor/riscv-target-features.c llvm/docs/RISCVUsage.rst llvm/docs/ReleaseNotes.rst llvm/lib/Support/RISCVISAInfo.cpp llvm/lib/Target/RISCV/RISCVFeatures.td llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td llvm/lib/Target/RISCV/RISCVSubtarget.h llvm/test/CodeGen/RISCV/attributes.ll llvm/test/MC/RISCV/attribute-arch.s llvm/test/MC/RISCV/rv64zhinx-invalid.s llvm/test/MC/RISCV/rv64zhinxmin-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma.s Index: llvm/test/MC/RISCV/rvv/zvfbfwma.s === --- /dev/null +++ llvm/test/MC/RISCV/rvv/zvfbfwma.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc -triple=riscv32 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv32 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN +# RUN: llvm-mc -triple=riscv64 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv64 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4, v0.t +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8c +vfwmaccbf16.vv v8, v20, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4 +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8e +vfwmaccbf16.vv v8, v20, v4 + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4, v0.t +# CHECK-ENCODING: [0x57,0x54,0x45,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8c +vfwmaccbf16.vf v8, fa0, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4 +# CHECK-ENCODING: [0x57,0x54,0x45,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8e +vfwmaccbf16.vf v8, fa0, v4 + +# Check scalar half FP load/store/move included in this extension. + +# CHECK-INST: flh ft0, 12(a0) +# CHECK-ENCODING: [0x07,0x10,0xc5,0x00] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 07 10 c5 00 +flh f0, 12(a0) + +# CHECK-INST: fsh ft6, 2047(s4) +# CHECK-ENCODING: [0xa7,0x1f,0x6a,0x7e] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: a7 1f 6a 7e +fsh f6, 2047(s4) + +# CHECK-INST: fmv.x.h a2, fs7 +# CHECK-ENCODING: [0x53,0x86,0x0b,0xe4] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 53 86 0b e4 +fmv.x.h a2, fs7 + +# CHECK-INST: fmv.h.x ft1, a6 +# CHECK-ENCODING: [0xd3,0x00,0x08,0xf4] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: d3 00 08 f4 +fmv.h.x ft1, a6 Index: llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s === --- /dev/null +++ llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s @@ -0,0 +1,11 @@ +# RUN: not llvm-mc -triple riscv32 -mattr=+experimental-zvfbfwma,+d < %s 2>&1 | \ +# RUN: FileCheck %s +# RUN: not llvm-mc -triple riscv64 -mattr=+experimental-zvfbfwma,+d < %s 2
[PATCH] D147612: [RISCV][MC] Add support for experimental Zvfbfwma extension
craig.topper accepted this revision. craig.topper added a comment. This revision is now accepted and ready to land. LGTM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147612/new/ https://reviews.llvm.org/D147612 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D147612: [RISCV][MC] Add support for experimental Zvfbfwma extension
asb updated this revision to Diff 511082. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147612/new/ https://reviews.llvm.org/D147612 Files: clang/test/Preprocessor/riscv-target-features.c llvm/docs/RISCVUsage.rst llvm/docs/ReleaseNotes.rst llvm/lib/Support/RISCVISAInfo.cpp llvm/lib/Target/RISCV/RISCVFeatures.td llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td llvm/lib/Target/RISCV/RISCVSubtarget.h llvm/test/CodeGen/RISCV/attributes.ll llvm/test/MC/RISCV/attribute-arch.s llvm/test/MC/RISCV/rv64zhinx-invalid.s llvm/test/MC/RISCV/rv64zhinxmin-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma.s Index: llvm/test/MC/RISCV/rvv/zvfbfwma.s === --- /dev/null +++ llvm/test/MC/RISCV/rvv/zvfbfwma.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc -triple=riscv32 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv32 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN +# RUN: llvm-mc -triple=riscv64 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv64 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4, v0.t +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8c +vfwmaccbf16.vv v8, v20, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4 +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8e +vfwmaccbf16.vv v8, v20, v4 + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4, v0.t +# CHECK-ENCODING: [0x57,0x54,0x45,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8c +vfwmaccbf16.vf v8, fa0, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4 +# CHECK-ENCODING: [0x57,0x54,0x45,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8e +vfwmaccbf16.vf v8, fa0, v4 + +# Check scalar half FP load/store/move included in this extension. + +# CHECK-INST: flh ft0, 12(a0) +# CHECK-ENCODING: [0x07,0x10,0xc5,0x00] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 07 10 c5 00 +flh f0, 12(a0) + +# CHECK-INST: fsh ft6, 2047(s4) +# CHECK-ENCODING: [0xa7,0x1f,0x6a,0x7e] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: a7 1f 6a 7e +fsh f6, 2047(s4) + +# CHECK-INST: fmv.x.h a2, fs7 +# CHECK-ENCODING: [0x53,0x86,0x0b,0xe4] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 53 86 0b e4 +fmv.x.h a2, fs7 + +# CHECK-INST: fmv.h.x ft1, a6 +# CHECK-ENCODING: [0xd3,0x00,0x08,0xf4] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: d3 00 08 f4 +fmv.h.x ft1, a6 Index: llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s === --- /dev/null +++ llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s @@ -0,0 +1,11 @@ +# RUN: not llvm-mc -triple riscv32 -mattr=+experimental-zvfbfwma,+d < %s 2>&1 | \ +# RUN: FileCheck %s +# RUN: not llvm-mc -triple riscv64 -mattr=+experimental-zvfbfwma,+d < %s 2>&1 | \ +# RUN: FileCheck %s
[PATCH] D147612: [RISCV][MC] Add support for experimental Zvfbfwma extension
asb created this revision. asb added reviewers: reames, craig.topper. Herald added subscribers: jobnoorman, luke, wingo, pmatos, VincentWu, vkmr, frasercrmck, jdoerfert, evandro, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, kito-cheng, niosHD, sabuasal, simoncook, johnrusso, rbar, hiraditya, arichardson. Herald added a project: All. asb requested review of this revision. Herald added subscribers: cfe-commits, pcwang-thead, eopXD, MaskRay. Herald added projects: clang, LLVM. The current specification version doesn't explicitly mark Zvfbfwma as dependent on Zve32f, but this is believed to be an oversight. See https://github.com/riscv/riscv-bfloat16/pull/34. As currently specified, Zvfbfwma does not appear to have a dependency on Zvfbfmin or Zfbfmin. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D147612 Files: clang/test/Preprocessor/riscv-target-features.c llvm/docs/RISCVUsage.rst llvm/docs/ReleaseNotes.rst llvm/lib/Support/RISCVISAInfo.cpp llvm/lib/Target/RISCV/RISCVFeatures.td llvm/lib/Target/RISCV/RISCVInstrInfoZvfbf.td llvm/lib/Target/RISCV/RISCVSubtarget.h llvm/test/CodeGen/RISCV/attributes.ll llvm/test/MC/RISCV/attribute-arch.s llvm/test/MC/RISCV/rv64zhinx-invalid.s llvm/test/MC/RISCV/rv64zhinxmin-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma-invalid.s llvm/test/MC/RISCV/rvv/zvfbfwma.s Index: llvm/test/MC/RISCV/rvv/zvfbfwma.s === --- /dev/null +++ llvm/test/MC/RISCV/rvv/zvfbfwma.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc -triple=riscv32 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv32 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv32 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN +# RUN: llvm-mc -triple=riscv64 -show-encoding -mattr=+f,+experimental-zvfbfwma %s \ +# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: not llvm-mc -triple=riscv64 -show-encoding -mattr=+v,+f %s 2>&1 \ +# RUN: | FileCheck %s --check-prefix=CHECK-ERROR +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d --mattr=+f,+experimental-zvfbfwma - \ +# RUN:| FileCheck %s --check-prefix=CHECK-INST +# RUN: llvm-mc -triple=riscv64 -filetype=obj -mattr=+f,+experimental-zvfbfwma %s \ +# RUN:| llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4, v0.t +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8c +vfwmaccbf16.vv v8, v20, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vv v8, v20, v4 +# CHECK-ENCODING: [0x57,0x14,0x4a,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 14 4a 8e +vfwmaccbf16.vv v8, v20, v4 + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4, v0.t +# CHECK-ENCODING: [0x57,0x54,0x45,0x8c] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8c +vfwmaccbf16.vf v8, fa0, v4, v0.t + +# CHECK-INST: vfwmaccbf16.vf v8, fa0, v4 +# CHECK-ENCODING: [0x57,0x54,0x45,0x8e] +# CHECK-ERROR: instruction requires the following: 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 57 54 45 8e +vfwmaccbf16.vf v8, fa0, v4 + +# Check scalar half FP load/store/move included in this extension. + +# CHECK-INST: flh ft0, 12(a0) +# CHECK-ENCODING: [0x07,0x10,0xc5,0x00] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: 07 10 c5 00 +flh f0, 12(a0) + +# CHECK-INST: fsh ft6, 2047(s4) +# CHECK-ENCODING: [0xa7,0x1f,0x6a,0x7e] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widening mul-add){{$}} +# CHECK-UNKNOWN: a7 1f 6a 7e +fsh f6, 2047(s4) + +# CHECK-INST: fmv.x.h a2, fs7 +# CHECK-ENCODING: [0x53,0x86,0x0b,0xe4] +# CHECK-ERROR: instruction requires the following: 'Zfh' (Half-Precision Floating-Point) or 'Zfhmin' (Half-Precision Floating-Point Minimal) or 'Zfbfmin' (Scalar BF16 Converts) or 'Zvfbfwma' (Vector BF16 widen