-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[LoongArch][MC] Pre-commit tests for instr bl fixupkind testing #72826
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This patch is used to test whether fixupkind for bl can be returned correctly. When BL has target-flags(loongarch-call), there is no error. But without this flag, an assertion error will appear. So the test is just tagged as "Expectedly Failed" now until the following patch fix it.
@llvm/pr-subscribers-backend-loongarch Author: ZhaoQi (zhaoqi5) ChangesThis patch is used to test whether fixupkind for bl can be returned correctly. When BL has target-flags(loongarch-call), there is no error. But without this flag, an assertion error will appear. So the test is just tagged as "Expectedly Failed" now until the following patch fix it. Full diff: https://github.com/llvm/llvm-project/pull/72826.diff 1 Files Affected:
diff --git a/llvm/test/CodeGen/LoongArch/test_bl_fixupkind.mir b/llvm/test/CodeGen/LoongArch/test_bl_fixupkind.mir
new file mode 100644
index 000000000000000..2c1d41be77112f0
--- /dev/null
+++ b/llvm/test/CodeGen/LoongArch/test_bl_fixupkind.mir
@@ -0,0 +1,66 @@
+## Tagged as "Expectedly Failed" until the following patch fix it
+# XFAIL: *
+# RUN: llc --mtriple=loongarch64 --filetype=obj %s -o - | \
+# RUN: llvm-objdump -d - | FileCheck %s
+
+# REQUIRES: asserts
+
+## Check that bl can get fixupkind correctly.
+## When BL has target-flags(loongarch-call), there is no error. But without
+## this flag, an assertion error will appear:
+## Assertion `FixupKind != LoongArch::fixup_loongarch_invalid && "Unhandled expression!"' failed.
+
+--- |
+ target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
+ target triple = "loongarch64"
+
+ define dso_local void @test_bl_fixupkind_with_flag() {
+ ; CHECK-LABEL: test_bl_fixupkind_with_flag
+ ; CHECK: addi.d $sp, $sp, -16
+ ; CHECK-NEXT: st.d $ra, $sp, 8
+ ; CHECK-NEXT: bl 0 <test_bl_fixupkind_with_flag+0x8>
+ ; CHECK-NEXT: ld.d $ra, $sp, 8
+ ; CHECK-NEXT: addi.d $sp, $sp, 16
+ ; CHECK-NEXT: ret
+ entry:
+ call void @foo()
+ ret void
+ }
+
+ define dso_local void @test_bl_fixupkind_without_flag() {
+ ; CHECK-LABEL: test_bl_fixupkind_without_flag
+ ; CHECK: addi.d $sp, $sp, -16
+ ; CHECK-NEXT: st.d $ra, $sp, 8
+ ; CHECK-NEXT: bl 0 <test_bl_fixupkind_without_flag+0x8>
+ ; CHECK-NEXT: ld.d $ra, $sp, 8
+ ; CHECK-NEXT: addi.d $sp, $sp, 16
+ ; CHECK-NEXT: ret
+ entry:
+ call void @foo()
+ ret void
+ }
+
+ declare dso_local void @foo(...)
+...
+---
+name: test_bl_fixupkind_with_flag
+tracksRegLiveness: true
+body: |
+ bb.0.entry:
+ ADJCALLSTACKDOWN 0, 0, implicit-def dead $r3, implicit $r3
+ BL target-flags(loongarch-call) @foo, csr_ilp32d_lp64d, implicit-def $r1, implicit-def dead $r1, implicit-def $r3
+ ADJCALLSTACKUP 0, 0, implicit-def dead $r3, implicit $r3
+ PseudoRET
+
+...
+---
+name: test_bl_fixupkind_without_flag
+tracksRegLiveness: true
+body: |
+ bb.0.entry:
+ ADJCALLSTACKDOWN 0, 0, implicit-def dead $r3, implicit $r3
+ BL @foo, csr_ilp32d_lp64d, implicit-def $r1, implicit-def dead $r1, implicit-def $r3
+ ADJCALLSTACKUP 0, 0, implicit-def dead $r3, implicit $r3
+ PseudoRET
+
+...
|
@SixWeining . Looking forward to your review. thanks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
Previously, bolt could not get FixupKind for BL correctly, because bolt cannot get target-flags for BL. Here just add support in MCCodeEmitter. Fixes llvm#72826.
Previously, bolt could not get FixupKind for BL correctly, because bolt cannot get target-flags for BL. Here just add support in MCCodeEmitter. Fixes #72826.
Previously, bolt could not get FixupKind for BL correctly, because bolt cannot get target-flags for BL. Here just add support in MCCodeEmitter. Fixes llvm/llvm-project#72826. (cherry picked from commit 775d2f3)
…#72826) This patch is used to test whether fixupkind for bl can be returned correctly. When BL has target-flags(loongarch-call), there is no error. But without this flag, an assertion error will appear. So the test is just tagged as "Expectedly Failed" now until the following patch fix it. (cherry picked from commit 2ca028c) Change-Id: Ie120263561663d2d0ce8a70f2c372e1347128132
Previously, bolt could not get FixupKind for BL correctly, because bolt cannot get target-flags for BL. Here just add support in MCCodeEmitter. Fixes llvm#72826. (cherry picked from commit 775d2f3) Change-Id: Ia7e4174f6fcc4a64f7d1d3b10ed24e457fc08886
This patch is used to test whether fixupkind for bl can be returned correctly. When BL has target-flags(loongarch-call), there is no error. But without this flag, an assertion error will appear. So the test is just tagged as "Expectedly Failed" now until the following patch fix it.