[llvm] efb3832 - [LoongArch] Fix atomic instructions operands sequence

Weining Lu via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 18 17:52:27 PST 2022


Author: Weining Lu
Date: 2022-02-19T09:22:10+08:00
New Revision: efb383266d04c70b8adf4ffb3f4872b36bc4653f

URL: https://github.com/llvm/llvm-project/commit/efb383266d04c70b8adf4ffb3f4872b36bc4653f
DIFF: https://github.com/llvm/llvm-project/commit/efb383266d04c70b8adf4ffb3f4872b36bc4653f.diff

LOG: [LoongArch] Fix atomic instructions operands sequence

According to https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#atomic-memory-access-instructions,
the operands sequence of am* instructions should be "rd, rk, rj"
but not "rd, rj, rk". Sorry for this typo in initial patches.

Reviewed By: xen0n, MaskRay

Differential Revision: https://reviews.llvm.org/D120107

Added: 
    

Modified: 
    llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
    llvm/test/CodeGen/LoongArch/3r.mir

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/LoongArch/LoongArchInstrInfo.td b/llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
index 4d207ebdea9ad..ee73e81126f8f 100644
--- a/llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
+++ b/llvm/lib/Target/LoongArch/LoongArchInstrInfo.td
@@ -138,8 +138,8 @@ class STORE_2RI14<bits<8> op, string opstr>
 
 let mayLoad = 1, mayStore = 1 in
 class AM_3R<bits<17> op, string opstr>
-    : Fmt3R<op, (outs GPR:$rd), (ins GPR:$rj, GPR:$rk),
-            !strconcat(opstr, "\t$rd, $rj, $rk")>;
+    : Fmt3R<op, (outs GPR:$rd), (ins GPR:$rk, GPR:$rj),
+            !strconcat(opstr, "\t$rd, $rk, $rj")>;
 
 let mayLoad = 1 in
 class LLBase<bits<8> op, string opstr>

diff  --git a/llvm/test/CodeGen/LoongArch/3r.mir b/llvm/test/CodeGen/LoongArch/3r.mir
index 19f0446a7d685..a1b97d5637b22 100644
--- a/llvm/test/CodeGen/LoongArch/3r.mir
+++ b/llvm/test/CodeGen/LoongArch/3r.mir
@@ -429,7 +429,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMSWAP_DB_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amswap_db.w	$a0, $a1, $a2
 name: test_AMSWAP_DB_W
 body: |
@@ -438,7 +438,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMSWAP_DB_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amswap_db.d	$a0, $a1, $a2
 name: test_AMSWAP_DB_D
 body: |
@@ -447,7 +447,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMADD_DB_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amadd_db.w	$a0, $a1, $a2
 name: test_AMADD_DB_W
 body: |
@@ -456,7 +456,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMADD_DB_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amadd_db.d	$a0, $a1, $a2
 name: test_AMADD_DB_D
 body: |
@@ -465,7 +465,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMAND_DB_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amand_db.w	$a0, $a1, $a2
 name: test_AMAND_DB_W
 body: |
@@ -474,7 +474,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMAND_DB_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amand_db.d	$a0, $a1, $a2
 name: test_AMAND_DB_D
 body: |
@@ -483,7 +483,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMOR_DB_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amor_db.w	$a0, $a1, $a2
 name: test_AMOR_DB_W
 body: |
@@ -492,7 +492,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMOR_DB_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amor_db.d	$a0, $a1, $a2
 name: test_AMOR_DB_D
 body: |
@@ -501,7 +501,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMXOR_DB_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amxor_db.w	$a0, $a1, $a2
 name: test_AMXOR_DB_W
 body: |
@@ -510,7 +510,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMXOR_DB_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amxor_db.d	$a0, $a1, $a2
 name: test_AMXOR_DB_D
 body: |
@@ -519,7 +519,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMAX_DB_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammax_db.w	$a0, $a1, $a2
 name: test_AMMAX_DB_W
 body: |
@@ -528,7 +528,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMAX_DB_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammax_db.d	$a0, $a1, $a2
 name: test_AMMAX_DB_D
 body: |
@@ -537,7 +537,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMIN_DB_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammin_db.w	$a0, $a1, $a2
 name: test_AMMIN_DB_W
 body: |
@@ -546,7 +546,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMIN_DB_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammin_db.d	$a0, $a1, $a2
 name: test_AMMIN_DB_D
 body: |
@@ -555,7 +555,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMAX_DB_WU:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammax_db.wu	$a0, $a1, $a2
 name: test_AMMAX_DB_WU
 body: |
@@ -564,7 +564,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMAX_DB_DU:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammax_db.du	$a0, $a1, $a2
 name: test_AMMAX_DB_DU
 body: |
@@ -573,7 +573,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMIN_DB_WU:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammin_db.wu	$a0, $a1, $a2
 name: test_AMMIN_DB_WU
 body: |
@@ -582,7 +582,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMIN_DB_DU:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammin_db.du	$a0, $a1, $a2
 name: test_AMMIN_DB_DU
 body: |
@@ -591,7 +591,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMSWAP_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amswap.w	$a0, $a1, $a2
 name: test_AMSWAP_W
 body: |
@@ -600,7 +600,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMSWAP_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amswap.d	$a0, $a1, $a2
 name: test_AMSWAP_D
 body: |
@@ -609,7 +609,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMADD_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amadd.w	$a0, $a1, $a2
 name: test_AMADD_W
 body: |
@@ -618,7 +618,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMADD_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amadd.d	$a0, $a1, $a2
 name: test_AMADD_D
 body: |
@@ -627,7 +627,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMAND_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amand.w	$a0, $a1, $a2
 name: test_AMAND_W
 body: |
@@ -636,7 +636,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMAND_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amand.d	$a0, $a1, $a2
 name: test_AMAND_D
 body: |
@@ -645,7 +645,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMOR_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amor.w	$a0, $a1, $a2
 name: test_AMOR_W
 body: |
@@ -654,7 +654,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMOR_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amor.d	$a0, $a1, $a2
 name: test_AMOR_D
 body: |
@@ -663,7 +663,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMXOR_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amxor.w	$a0, $a1, $a2
 name: test_AMXOR_W
 body: |
@@ -672,7 +672,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMXOR_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: amxor.d	$a0, $a1, $a2
 name: test_AMXOR_D
 body: |
@@ -681,7 +681,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMAX_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammax.w	$a0, $a1, $a2
 name: test_AMMAX_W
 body: |
@@ -690,7 +690,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMAX_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammax.d	$a0, $a1, $a2
 name: test_AMMAX_D
 body: |
@@ -699,7 +699,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMIN_W:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammin.w	$a0, $a1, $a2
 name: test_AMMIN_W
 body: |
@@ -708,7 +708,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMIN_D:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammin.d	$a0, $a1, $a2
 name: test_AMMIN_D
 body: |
@@ -717,7 +717,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMAX_WU:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammax.wu	$a0, $a1, $a2
 name: test_AMMAX_WU
 body: |
@@ -726,7 +726,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMAX_DU:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammax.du	$a0, $a1, $a2
 name: test_AMMAX_DU
 body: |
@@ -735,7 +735,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMIN_WU:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammin.wu	$a0, $a1, $a2
 name: test_AMMIN_WU
 body: |
@@ -744,7 +744,7 @@ body: |
 ...
 ---
 # CHECK-LABEL: test_AMMIN_DU:
-# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0
+# CHECK-ENC: 0 0 1 1 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0
 # CHECK-ASM: ammin.du	$a0, $a1, $a2
 name: test_AMMIN_DU
 body: |


        


More information about the llvm-commits mailing list