-
Notifications
You must be signed in to change notification settings - Fork 13.5k
[NVPTX] Emit prmt selection value in hex #115049
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
[NVPTX] Emit prmt selection value in hex #115049
Conversation
@llvm/pr-subscribers-backend-nvptx Author: Justin Fargnoli (justinfargnoli) ChangesPatch is 26.40 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/115049.diff 6 Files Affected:
diff --git a/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.cpp b/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.cpp
index 4211ae5a2eebcd..efb2adca3a565f 100644
--- a/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.cpp
+++ b/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.cpp
@@ -373,6 +373,12 @@ void NVPTXInstPrinter::printOffseti32imm(const MCInst *MI, int OpNum,
}
}
+void NVPTXInstPrinter::printHexu32imm(const MCInst *MI, int OpNum,
+ raw_ostream &O, const char *Modifier) {
+ int64_t Imm = MI->getOperand(OpNum).getImm();
+ O << formatHex(Imm) << "U";
+}
+
void NVPTXInstPrinter::printProtoIdent(const MCInst *MI, int OpNum,
raw_ostream &O, const char *Modifier) {
const MCOperand &Op = MI->getOperand(OpNum);
diff --git a/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.h b/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.h
index 63207e8a975ace..c056587ec6de4f 100644
--- a/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.h
+++ b/llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.h
@@ -47,6 +47,8 @@ class NVPTXInstPrinter : public MCInstPrinter {
raw_ostream &O, const char *Modifier = nullptr);
void printOffseti32imm(const MCInst *MI, int OpNum, raw_ostream &O,
const char *Modifier = nullptr);
+ void printHexu32imm(const MCInst *MI, int OpNum, raw_ostream &O,
+ const char *Modifier = nullptr);
void printProtoIdent(const MCInst *MI, int OpNum,
raw_ostream &O, const char *Modifier = nullptr);
void printPrmtMode(const MCInst *MI, int OpNum, raw_ostream &O,
diff --git a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
index 1ca3aefb0b0934..3b3fcd9fc27eb1 100644
--- a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
+++ b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
@@ -1740,6 +1740,10 @@ multiclass BFI<string Instr, ValueType T, RegisterClass RC, Operand ImmCls> {
[(set (T RC:$f), (bfi (T imm:$a), (T RC:$b), (i32 imm:$c), (i32 imm:$d)))]>;
}
+def Hexu32imm : Operand<i32> {
+ let PrintMethod = "printHexu32imm";
+}
+
multiclass PRMT<ValueType T, RegisterClass RC> {
def rrr
: NVPTXInst<(outs RC:$d),
@@ -1748,12 +1752,12 @@ multiclass PRMT<ValueType T, RegisterClass RC> {
[(set (T RC:$d), (prmt (T RC:$a), (T RC:$b), (i32 Int32Regs:$c), imm:$mode))]>;
def rri
: NVPTXInst<(outs RC:$d),
- (ins RC:$a, Int32Regs:$b, i32imm:$c, PrmtMode:$mode),
+ (ins RC:$a, Int32Regs:$b, Hexu32imm:$c, PrmtMode:$mode),
!strconcat("prmt.b32${mode}", " \t$d, $a, $b, $c;"),
[(set (T RC:$d), (prmt (T RC:$a), (T RC:$b), (i32 imm:$c), imm:$mode))]>;
def rii
: NVPTXInst<(outs RC:$d),
- (ins RC:$a, i32imm:$b, i32imm:$c, PrmtMode:$mode),
+ (ins RC:$a, i32imm:$b, Hexu32imm:$c, PrmtMode:$mode),
!strconcat("prmt.b32${mode}", " \t$d, $a, $b, $c;"),
[(set (T RC:$d), (prmt (T RC:$a), (T imm:$b), (i32 imm:$c), imm:$mode))]>;
}
diff --git a/llvm/test/CodeGen/NVPTX/i8x4-instructions.ll b/llvm/test/CodeGen/NVPTX/i8x4-instructions.ll
index a16a5b435962df..c143d7674a7923 100644
--- a/llvm/test/CodeGen/NVPTX/i8x4-instructions.ll
+++ b/llvm/test/CodeGen/NVPTX/i8x4-instructions.ll
@@ -118,7 +118,7 @@ define <4 x i8> @test_add(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs5, %r7;
; CHECK-NEXT: add.s16 %rs6, %rs5, %rs4;
; CHECK-NEXT: cvt.u32.u16 %r8, %rs6;
-; CHECK-NEXT: prmt.b32 %r9, %r8, %r5, 13120;
+; CHECK-NEXT: prmt.b32 %r9, %r8, %r5, 0x3340U;
; CHECK-NEXT: bfe.u32 %r10, %r2, 8, 8;
; CHECK-NEXT: cvt.u16.u32 %rs7, %r10;
; CHECK-NEXT: bfe.u32 %r11, %r1, 8, 8;
@@ -131,8 +131,8 @@ define <4 x i8> @test_add(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs11, %r14;
; CHECK-NEXT: add.s16 %rs12, %rs11, %rs10;
; CHECK-NEXT: cvt.u32.u16 %r15, %rs12;
-; CHECK-NEXT: prmt.b32 %r16, %r15, %r12, 13120;
-; CHECK-NEXT: prmt.b32 %r17, %r16, %r9, 21520;
+; CHECK-NEXT: prmt.b32 %r16, %r15, %r12, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r17, %r16, %r9, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r17;
; CHECK-NEXT: ret;
%r = add <4 x i8> %a, %b
@@ -155,7 +155,7 @@ define <4 x i8> @test_add_imm_0(<4 x i8> %a) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs3, %r4;
; CHECK-NEXT: add.s16 %rs4, %rs3, 3;
; CHECK-NEXT: cvt.u32.u16 %r5, %rs4;
-; CHECK-NEXT: prmt.b32 %r6, %r5, %r3, 13120;
+; CHECK-NEXT: prmt.b32 %r6, %r5, %r3, 0x3340U;
; CHECK-NEXT: bfe.u32 %r7, %r1, 8, 8;
; CHECK-NEXT: cvt.u16.u32 %rs5, %r7;
; CHECK-NEXT: add.s16 %rs6, %rs5, 2;
@@ -164,8 +164,8 @@ define <4 x i8> @test_add_imm_0(<4 x i8> %a) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs7, %r9;
; CHECK-NEXT: add.s16 %rs8, %rs7, 1;
; CHECK-NEXT: cvt.u32.u16 %r10, %rs8;
-; CHECK-NEXT: prmt.b32 %r11, %r10, %r8, 13120;
-; CHECK-NEXT: prmt.b32 %r12, %r11, %r6, 21520;
+; CHECK-NEXT: prmt.b32 %r11, %r10, %r8, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r12, %r11, %r6, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r12;
; CHECK-NEXT: ret;
%r = add <4 x i8> <i8 1, i8 2, i8 3, i8 4>, %a
@@ -188,7 +188,7 @@ define <4 x i8> @test_add_imm_1(<4 x i8> %a) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs3, %r4;
; CHECK-NEXT: add.s16 %rs4, %rs3, 3;
; CHECK-NEXT: cvt.u32.u16 %r5, %rs4;
-; CHECK-NEXT: prmt.b32 %r6, %r5, %r3, 13120;
+; CHECK-NEXT: prmt.b32 %r6, %r5, %r3, 0x3340U;
; CHECK-NEXT: bfe.u32 %r7, %r1, 8, 8;
; CHECK-NEXT: cvt.u16.u32 %rs5, %r7;
; CHECK-NEXT: add.s16 %rs6, %rs5, 2;
@@ -197,8 +197,8 @@ define <4 x i8> @test_add_imm_1(<4 x i8> %a) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs7, %r9;
; CHECK-NEXT: add.s16 %rs8, %rs7, 1;
; CHECK-NEXT: cvt.u32.u16 %r10, %rs8;
-; CHECK-NEXT: prmt.b32 %r11, %r10, %r8, 13120;
-; CHECK-NEXT: prmt.b32 %r12, %r11, %r6, 21520;
+; CHECK-NEXT: prmt.b32 %r11, %r10, %r8, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r12, %r11, %r6, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r12;
; CHECK-NEXT: ret;
%r = add <4 x i8> %a, <i8 1, i8 2, i8 3, i8 4>
@@ -226,7 +226,7 @@ define <4 x i8> @test_sub(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs5, %r7;
; CHECK-NEXT: sub.s16 %rs6, %rs5, %rs4;
; CHECK-NEXT: cvt.u32.u16 %r8, %rs6;
-; CHECK-NEXT: prmt.b32 %r9, %r8, %r5, 13120;
+; CHECK-NEXT: prmt.b32 %r9, %r8, %r5, 0x3340U;
; CHECK-NEXT: bfe.u32 %r10, %r2, 8, 8;
; CHECK-NEXT: cvt.u16.u32 %rs7, %r10;
; CHECK-NEXT: bfe.u32 %r11, %r1, 8, 8;
@@ -239,8 +239,8 @@ define <4 x i8> @test_sub(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs11, %r14;
; CHECK-NEXT: sub.s16 %rs12, %rs11, %rs10;
; CHECK-NEXT: cvt.u32.u16 %r15, %rs12;
-; CHECK-NEXT: prmt.b32 %r16, %r15, %r12, 13120;
-; CHECK-NEXT: prmt.b32 %r17, %r16, %r9, 21520;
+; CHECK-NEXT: prmt.b32 %r16, %r15, %r12, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r17, %r16, %r9, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r17;
; CHECK-NEXT: ret;
%r = sub <4 x i8> %a, %b
@@ -276,13 +276,13 @@ define <4 x i8> @test_smax(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: selp.b32 %r16, %r14, %r15, %p4;
; CHECK-NEXT: bfe.u32 %r17, %r2, 16, 8;
; CHECK-NEXT: selp.b32 %r18, %r13, %r17, %p3;
-; CHECK-NEXT: prmt.b32 %r19, %r18, %r16, 13120;
+; CHECK-NEXT: prmt.b32 %r19, %r18, %r16, 0x3340U;
; CHECK-NEXT: bfe.u32 %r20, %r2, 8, 8;
; CHECK-NEXT: selp.b32 %r21, %r12, %r20, %p2;
; CHECK-NEXT: bfe.u32 %r22, %r2, 0, 8;
; CHECK-NEXT: selp.b32 %r23, %r11, %r22, %p1;
-; CHECK-NEXT: prmt.b32 %r24, %r23, %r21, 13120;
-; CHECK-NEXT: prmt.b32 %r25, %r24, %r19, 21520;
+; CHECK-NEXT: prmt.b32 %r24, %r23, %r21, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r25, %r24, %r19, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r25;
; CHECK-NEXT: ret;
%cmp = icmp sgt <4 x i8> %a, %b
@@ -313,11 +313,11 @@ define <4 x i8> @test_umax(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: setp.hi.u32 %p4, %r10, %r9;
; CHECK-NEXT: selp.b32 %r11, %r10, %r9, %p4;
; CHECK-NEXT: selp.b32 %r12, %r8, %r7, %p3;
-; CHECK-NEXT: prmt.b32 %r13, %r12, %r11, 13120;
+; CHECK-NEXT: prmt.b32 %r13, %r12, %r11, 0x3340U;
; CHECK-NEXT: selp.b32 %r14, %r6, %r5, %p2;
; CHECK-NEXT: selp.b32 %r15, %r4, %r3, %p1;
-; CHECK-NEXT: prmt.b32 %r16, %r15, %r14, 13120;
-; CHECK-NEXT: prmt.b32 %r17, %r16, %r13, 21520;
+; CHECK-NEXT: prmt.b32 %r16, %r15, %r14, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r17, %r16, %r13, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r17;
; CHECK-NEXT: ret;
%cmp = icmp ugt <4 x i8> %a, %b
@@ -354,13 +354,13 @@ define <4 x i8> @test_smin(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: selp.b32 %r16, %r14, %r15, %p4;
; CHECK-NEXT: bfe.u32 %r17, %r2, 16, 8;
; CHECK-NEXT: selp.b32 %r18, %r13, %r17, %p3;
-; CHECK-NEXT: prmt.b32 %r19, %r18, %r16, 13120;
+; CHECK-NEXT: prmt.b32 %r19, %r18, %r16, 0x3340U;
; CHECK-NEXT: bfe.u32 %r20, %r2, 8, 8;
; CHECK-NEXT: selp.b32 %r21, %r12, %r20, %p2;
; CHECK-NEXT: bfe.u32 %r22, %r2, 0, 8;
; CHECK-NEXT: selp.b32 %r23, %r11, %r22, %p1;
-; CHECK-NEXT: prmt.b32 %r24, %r23, %r21, 13120;
-; CHECK-NEXT: prmt.b32 %r25, %r24, %r19, 21520;
+; CHECK-NEXT: prmt.b32 %r24, %r23, %r21, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r25, %r24, %r19, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r25;
; CHECK-NEXT: ret;
%cmp = icmp sle <4 x i8> %a, %b
@@ -391,11 +391,11 @@ define <4 x i8> @test_umin(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: setp.ls.u32 %p4, %r10, %r9;
; CHECK-NEXT: selp.b32 %r11, %r10, %r9, %p4;
; CHECK-NEXT: selp.b32 %r12, %r8, %r7, %p3;
-; CHECK-NEXT: prmt.b32 %r13, %r12, %r11, 13120;
+; CHECK-NEXT: prmt.b32 %r13, %r12, %r11, 0x3340U;
; CHECK-NEXT: selp.b32 %r14, %r6, %r5, %p2;
; CHECK-NEXT: selp.b32 %r15, %r4, %r3, %p1;
-; CHECK-NEXT: prmt.b32 %r16, %r15, %r14, 13120;
-; CHECK-NEXT: prmt.b32 %r17, %r16, %r13, 21520;
+; CHECK-NEXT: prmt.b32 %r16, %r15, %r14, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r17, %r16, %r13, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r17;
; CHECK-NEXT: ret;
%cmp = icmp ule <4 x i8> %a, %b
@@ -429,13 +429,13 @@ define <4 x i8> @test_eq(<4 x i8> %a, <4 x i8> %b, <4 x i8> %c) #0 {
; CHECK-NEXT: selp.b32 %r13, %r11, %r12, %p4;
; CHECK-NEXT: bfe.u32 %r14, %r3, 16, 8;
; CHECK-NEXT: selp.b32 %r15, %r9, %r14, %p3;
-; CHECK-NEXT: prmt.b32 %r16, %r15, %r13, 13120;
+; CHECK-NEXT: prmt.b32 %r16, %r15, %r13, 0x3340U;
; CHECK-NEXT: bfe.u32 %r17, %r3, 8, 8;
; CHECK-NEXT: selp.b32 %r18, %r7, %r17, %p2;
; CHECK-NEXT: bfe.u32 %r19, %r3, 0, 8;
; CHECK-NEXT: selp.b32 %r20, %r5, %r19, %p1;
-; CHECK-NEXT: prmt.b32 %r21, %r20, %r18, 13120;
-; CHECK-NEXT: prmt.b32 %r22, %r21, %r16, 21520;
+; CHECK-NEXT: prmt.b32 %r21, %r20, %r18, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r22, %r21, %r16, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r22;
; CHECK-NEXT: ret;
%cmp = icmp eq <4 x i8> %a, %b
@@ -469,13 +469,13 @@ define <4 x i8> @test_ne(<4 x i8> %a, <4 x i8> %b, <4 x i8> %c) #0 {
; CHECK-NEXT: selp.b32 %r13, %r11, %r12, %p4;
; CHECK-NEXT: bfe.u32 %r14, %r3, 16, 8;
; CHECK-NEXT: selp.b32 %r15, %r9, %r14, %p3;
-; CHECK-NEXT: prmt.b32 %r16, %r15, %r13, 13120;
+; CHECK-NEXT: prmt.b32 %r16, %r15, %r13, 0x3340U;
; CHECK-NEXT: bfe.u32 %r17, %r3, 8, 8;
; CHECK-NEXT: selp.b32 %r18, %r7, %r17, %p2;
; CHECK-NEXT: bfe.u32 %r19, %r3, 0, 8;
; CHECK-NEXT: selp.b32 %r20, %r5, %r19, %p1;
-; CHECK-NEXT: prmt.b32 %r21, %r20, %r18, 13120;
-; CHECK-NEXT: prmt.b32 %r22, %r21, %r16, 21520;
+; CHECK-NEXT: prmt.b32 %r21, %r20, %r18, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r22, %r21, %r16, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r22;
; CHECK-NEXT: ret;
%cmp = icmp ne <4 x i8> %a, %b
@@ -504,7 +504,7 @@ define <4 x i8> @test_mul(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs5, %r7;
; CHECK-NEXT: mul.lo.s16 %rs6, %rs5, %rs4;
; CHECK-NEXT: cvt.u32.u16 %r8, %rs6;
-; CHECK-NEXT: prmt.b32 %r9, %r8, %r5, 13120;
+; CHECK-NEXT: prmt.b32 %r9, %r8, %r5, 0x3340U;
; CHECK-NEXT: bfe.u32 %r10, %r2, 8, 8;
; CHECK-NEXT: cvt.u16.u32 %rs7, %r10;
; CHECK-NEXT: bfe.u32 %r11, %r1, 8, 8;
@@ -517,8 +517,8 @@ define <4 x i8> @test_mul(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: cvt.u16.u32 %rs11, %r14;
; CHECK-NEXT: mul.lo.s16 %rs12, %rs11, %rs10;
; CHECK-NEXT: cvt.u32.u16 %r15, %rs12;
-; CHECK-NEXT: prmt.b32 %r16, %r15, %r12, 13120;
-; CHECK-NEXT: prmt.b32 %r17, %r16, %r9, 21520;
+; CHECK-NEXT: prmt.b32 %r16, %r15, %r12, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r17, %r16, %r9, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r17;
; CHECK-NEXT: ret;
%r = mul <4 x i8> %a, %b
@@ -549,10 +549,10 @@ define <4 x i8> @test_or_computed(i8 %a) {
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: ld.param.u8 %rs1, [test_or_computed_param_0];
; CHECK-NEXT: mov.b32 %r1, 0;
-; CHECK-NEXT: prmt.b32 %r2, %r1, 0, 13120;
+; CHECK-NEXT: prmt.b32 %r2, %r1, 0, 0x3340U;
; CHECK-NEXT: cvt.u32.u16 %r3, %rs1;
-; CHECK-NEXT: prmt.b32 %r4, %r3, 0, 13120;
-; CHECK-NEXT: prmt.b32 %r5, %r4, %r2, 21520;
+; CHECK-NEXT: prmt.b32 %r4, %r3, 0, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r5, %r4, %r2, 0x5410U;
; CHECK-NEXT: bfi.b32 %r6, 5, %r5, 8, 8;
; CHECK-NEXT: or.b32 %r8, %r6, %r5;
; CHECK-NEXT: st.param.b32 [func_retval0], %r8;
@@ -615,10 +615,10 @@ define <4 x i8> @test_xor_computed(i8 %a) {
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: ld.param.u8 %rs1, [test_xor_computed_param_0];
; CHECK-NEXT: mov.b32 %r1, 0;
-; CHECK-NEXT: prmt.b32 %r2, %r1, 0, 13120;
+; CHECK-NEXT: prmt.b32 %r2, %r1, 0, 0x3340U;
; CHECK-NEXT: cvt.u32.u16 %r3, %rs1;
-; CHECK-NEXT: prmt.b32 %r4, %r3, 0, 13120;
-; CHECK-NEXT: prmt.b32 %r5, %r4, %r2, 21520;
+; CHECK-NEXT: prmt.b32 %r4, %r3, 0, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r5, %r4, %r2, 0x5410U;
; CHECK-NEXT: bfi.b32 %r6, 5, %r5, 8, 8;
; CHECK-NEXT: xor.b32 %r8, %r6, %r5;
; CHECK-NEXT: st.param.b32 [func_retval0], %r8;
@@ -681,10 +681,10 @@ define <4 x i8> @test_and_computed(i8 %a) {
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: ld.param.u8 %rs1, [test_and_computed_param_0];
; CHECK-NEXT: mov.b32 %r1, 0;
-; CHECK-NEXT: prmt.b32 %r2, %r1, 0, 13120;
+; CHECK-NEXT: prmt.b32 %r2, %r1, 0, 0x3340U;
; CHECK-NEXT: cvt.u32.u16 %r3, %rs1;
-; CHECK-NEXT: prmt.b32 %r4, %r3, 0, 13120;
-; CHECK-NEXT: prmt.b32 %r5, %r4, %r2, 21520;
+; CHECK-NEXT: prmt.b32 %r4, %r3, 0, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r5, %r4, %r2, 0x5410U;
; CHECK-NEXT: bfi.b32 %r6, 5, %r5, 8, 8;
; CHECK-NEXT: and.b32 %r8, %r6, %r5;
; CHECK-NEXT: st.param.b32 [func_retval0], %r8;
@@ -954,15 +954,15 @@ define <4 x i8> @test_select_cc(<4 x i8> %a, <4 x i8> %b, <4 x i8> %c, <4 x i8>
; CHECK-NEXT: bfe.u32 %r16, %r2, 16, 8;
; CHECK-NEXT: bfe.u32 %r17, %r1, 16, 8;
; CHECK-NEXT: selp.b32 %r18, %r17, %r16, %p3;
-; CHECK-NEXT: prmt.b32 %r19, %r18, %r15, 13120;
+; CHECK-NEXT: prmt.b32 %r19, %r18, %r15, 0x3340U;
; CHECK-NEXT: bfe.u32 %r20, %r2, 8, 8;
; CHECK-NEXT: bfe.u32 %r21, %r1, 8, 8;
; CHECK-NEXT: selp.b32 %r22, %r21, %r20, %p2;
; CHECK-NEXT: bfe.u32 %r23, %r2, 0, 8;
; CHECK-NEXT: bfe.u32 %r24, %r1, 0, 8;
; CHECK-NEXT: selp.b32 %r25, %r24, %r23, %p1;
-; CHECK-NEXT: prmt.b32 %r26, %r25, %r22, 13120;
-; CHECK-NEXT: prmt.b32 %r27, %r26, %r19, 21520;
+; CHECK-NEXT: prmt.b32 %r26, %r25, %r22, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r27, %r26, %r19, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r27;
; CHECK-NEXT: ret;
%cc = icmp ne <4 x i8> %c, %d
@@ -1026,15 +1026,15 @@ define <4 x i8> @test_select_cc_i8_i32(<4 x i8> %a, <4 x i8> %b,
; CHECK-NEXT: bfe.u32 %r14, %r2, 16, 8;
; CHECK-NEXT: bfe.u32 %r15, %r1, 16, 8;
; CHECK-NEXT: selp.b32 %r16, %r15, %r14, %p3;
-; CHECK-NEXT: prmt.b32 %r17, %r16, %r13, 13120;
+; CHECK-NEXT: prmt.b32 %r17, %r16, %r13, 0x3340U;
; CHECK-NEXT: bfe.u32 %r18, %r2, 8, 8;
; CHECK-NEXT: bfe.u32 %r19, %r1, 8, 8;
; CHECK-NEXT: selp.b32 %r20, %r19, %r18, %p2;
; CHECK-NEXT: bfe.u32 %r21, %r2, 0, 8;
; CHECK-NEXT: bfe.u32 %r22, %r1, 0, 8;
; CHECK-NEXT: selp.b32 %r23, %r22, %r21, %p1;
-; CHECK-NEXT: prmt.b32 %r24, %r23, %r20, 13120;
-; CHECK-NEXT: prmt.b32 %r25, %r24, %r17, 21520;
+; CHECK-NEXT: prmt.b32 %r24, %r23, %r20, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r25, %r24, %r17, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r25;
; CHECK-NEXT: ret;
<4 x i32> %c, <4 x i32> %d) #0 {
@@ -1051,9 +1051,9 @@ define <4 x i8> @test_trunc_2xi32(<4 x i32> %a) #0 {
; CHECK-EMPTY:
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: ld.param.v4.u32 {%r1, %r2, %r3, %r4}, [test_trunc_2xi32_param_0];
-; CHECK-NEXT: prmt.b32 %r5, %r3, %r4, 13120;
-; CHECK-NEXT: prmt.b32 %r6, %r1, %r2, 13120;
-; CHECK-NEXT: prmt.b32 %r7, %r6, %r5, 21520;
+; CHECK-NEXT: prmt.b32 %r5, %r3, %r4, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r6, %r1, %r2, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r7, %r6, %r5, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r7;
; CHECK-NEXT: ret;
%r = trunc <4 x i32> %a to <4 x i8>
@@ -1071,11 +1071,11 @@ define <4 x i8> @test_trunc_2xi64(<4 x i64> %a) #0 {
; CHECK-NEXT: ld.param.v2.u64 {%rd1, %rd2}, [test_trunc_2xi64_param_0];
; CHECK-NEXT: cvt.u32.u64 %r1, %rd4;
; CHECK-NEXT: cvt.u32.u64 %r2, %rd3;
-; CHECK-NEXT: prmt.b32 %r3, %r2, %r1, 13120;
+; CHECK-NEXT: prmt.b32 %r3, %r2, %r1, 0x3340U;
; CHECK-NEXT: cvt.u32.u64 %r4, %rd2;
; CHECK-NEXT: cvt.u32.u64 %r5, %rd1;
-; CHECK-NEXT: prmt.b32 %r6, %r5, %r4, 13120;
-; CHECK-NEXT: prmt.b32 %r7, %r6, %r3, 21520;
+; CHECK-NEXT: prmt.b32 %r6, %r5, %r4, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r7, %r6, %r3, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r7;
; CHECK-NEXT: ret;
%r = trunc <4 x i64> %a to <4 x i8>
@@ -1192,10 +1192,10 @@ define <2 x half> @test_bitcast_4xi8_to_2xhalf(i8 %a) #0 {
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: ld.param.u8 %rs1, [test_bitcast_4xi8_to_2xhalf_param_0];
; CHECK-NEXT: mov.b32 %r1, 6;
-; CHECK-NEXT: prmt.b32 %r2, %r1, 7, 13120;
+; CHECK-NEXT: prmt.b32 %r2, %r1, 7, 0x3340U;
; CHECK-NEXT: cvt.u32.u16 %r3, %rs1;
-; CHECK-NEXT: prmt.b32 %r4, %r3, 5, 13120;
-; CHECK-NEXT: prmt.b32 %r5, %r4, %r2, 21520;
+; CHECK-NEXT: prmt.b32 %r4, %r3, 5, 0x3340U;
+; CHECK-NEXT: prmt.b32 %r5, %r4, %r2, 0x5410U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r5;
; CHECK-NEXT: ret;
%ins.0 = insertelement <4 x i8> undef, i8 %a, i32 0
@@ -1215,7 +1215,7 @@ define <4 x i8> @test_shufflevector(<4 x i8> %a) #0 {
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: ld.param.u32 %r1, [test_shufflevector_param_0];
; CHECK-NEXT: // implicit-def: %r3
-; CHECK-NEXT: prmt.b32 %r2, %r1, %r3, 291;
+; CHECK-NEXT: prmt.b32 %r2, %r1, %r3, 0x123U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r2;
; CHECK-NEXT: ret;
%s = shufflevector <4 x i8> %a, <4 x i8> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
@@ -1230,7 +1230,7 @@ define <4 x i8> @test_shufflevector_2(<4 x i8> %a, <4 x i8> %b) #0 {
; CHECK-NEXT: // %bb.0:
; CHECK-NEXT: ld.param.u32 %r2, [test_shufflevector_2_param_1];
; CHECK-NEXT: ld.param.u32 %r1, [test_shufflevector_2_param_0];
-; CHECK-NEXT: prmt.b32 %r3, %r1, %r2, 9527;
+; CHECK-NEXT: prmt.b32 %r3, %r1, %r2, 0x2537U;
; CHECK-NEXT: st.param.b32 [func_retval0], %r3;
; CHECK-NEXT: ret;
%s = shufflevector <4 x i8> %a, <4 x i8> %b, <4 x i32> <i32 7, i32 3, i32 5, i32 2>
@@ -1270,7 +1270,7 @@ define <4 x i8> @test_fptosi_4xhalf_to_4xi8(<4 x half> %a) #0 {
; CHECK-NEXT: mov.b32 {%rs5, %rs6}, %r5;
; CHECK-NEXT: cvt.u32.u16 %r6, %rs6;
; CHECK-NEXT: cvt.u32.u16 %r7, %rs5;
-; CHECK-NEXT: prmt.b32 %r8, %r7, %r6, 13120;
+; CHECK-NEXT: prmt.b32 %r8, %r7, %r6, 0x3340U;
; CHECK-NEXT: mov.b32 {%rs7, %rs8}, %r3;
; CHECK-NEXT: cvt.rzi.s16.f16 %rs9, %rs8;
; CHECK-NEXT: cvt.rzi.s16.f16 %rs10, %rs7;
@@ -1278,8 +1278,8 @@ define <4 x i8> @test_fptosi_4xhalf_to_4xi8(<4 x half> %a) #0 {
...
[truncated]
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
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.
Nice! Hex args to prms are way easier to interpret.
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
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/137/builds/8152 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/180/builds/7927 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/175/builds/8053 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/185/builds/8039 Here is the relevant piece of the build log for the reference
|
Looks like some tests still need to be updated. |
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/160/builds/7929 Here is the relevant piece of the build log for the reference
|
This reverts commit 3ed4b0b.
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/95/builds/5900 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/76/builds/4283 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/33/builds/5990 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/60/builds/12046 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/56/builds/11599 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/16/builds/8387 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/153/builds/13902 Here is the relevant piece of the build log for the reference
|
No description provided.