[PATCH] D31082: [mips][msa] Range adjustment for ldi_b builtin function operand
This revision was automatically updated to reflect the committed changes. Closed by commit rL299229: [mips][msa] Range adjustment for ldi_b builtin function operand (authored by petarj). Changed prior to commit: https://reviews.llvm.org/D31082?vs=92439=93669#toc Repository: rL LLVM https://reviews.llvm.org/D31082 Files: cfe/trunk/lib/Sema/SemaChecking.cpp cfe/trunk/test/CodeGen/builtins-mips-msa-error.c cfe/trunk/test/CodeGen/builtins-mips-msa.c Index: cfe/trunk/lib/Sema/SemaChecking.cpp === --- cfe/trunk/lib/Sema/SemaChecking.cpp +++ cfe/trunk/lib/Sema/SemaChecking.cpp @@ -1640,7 +1640,7 @@ case Mips::BI__builtin_msa_sldi_d: i = 2; l = 0; u = 1; break; // Memory offsets and immediate loads. // These intrinsics take a signed 10 bit immediate. - case Mips::BI__builtin_msa_ldi_b: i = 0; l = -128; u = 127; break; + case Mips::BI__builtin_msa_ldi_b: i = 0; l = -128; u = 255; break; case Mips::BI__builtin_msa_ldi_h: case Mips::BI__builtin_msa_ldi_w: case Mips::BI__builtin_msa_ldi_d: i = 0; l = -512; u = 511; break; Index: cfe/trunk/test/CodeGen/builtins-mips-msa-error.c === --- cfe/trunk/test/CodeGen/builtins-mips-msa-error.c +++ cfe/trunk/test/CodeGen/builtins-mips-msa-error.c @@ -119,7 +119,7 @@ v4i32_r = __msa_ld_w(_a, 512); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, 512); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(512);// expected-error {{argument should be a value from -512 to 511}} + v16i8_r = __msa_ldi_b(256);// expected-error {{argument should be a value from -128 to 255}} v8i16_r = __msa_ldi_h(512);// expected-error {{argument should be a value from -512 to 511}} v4i32_r = __msa_ldi_w(512);// expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ldi_d(512);// expected-error {{argument should be a value from -512 to 511}} @@ -310,7 +310,7 @@ v4i32_r = __msa_ld_w(_a, -513); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, -513); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(-513); // expected-error {{argument should be a value from -512 to 511}} + v16i8_r = __msa_ldi_b(-129); // expected-error {{argument should be a value from -128 to 255}} v8i16_r = __msa_ldi_h(-513); // expected-error {{argument should be a value from -512 to 511}} v4i32_r = __msa_ldi_w(-513); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ldi_d(-513); // expected-error {{argument should be a value from -512 to 511}} Index: cfe/trunk/test/CodeGen/builtins-mips-msa.c === --- cfe/trunk/test/CodeGen/builtins-mips-msa.c +++ cfe/trunk/test/CodeGen/builtins-mips-msa.c @@ -526,6 +526,8 @@ v2i64_r = __msa_ld_d(_a, 96); // CHECK: call <2 x i64> @llvm.mips.ld.d( v16i8_r = __msa_ldi_b(3); // CHECK: call <16 x i8> @llvm.mips.ldi.b( + v16i8_r = __msa_ldi_b(-128); // CHECK: call <16 x i8> @llvm.mips.ldi.b( + v16i8_r = __msa_ldi_b(255); // CHECK: call <16 x i8> @llvm.mips.ldi.b( v8i16_r = __msa_ldi_h(3); // CHECK: call <8 x i16> @llvm.mips.ldi.h( v4i32_r = __msa_ldi_w(3); // CHECK: call <4 x i32> @llvm.mips.ldi.w( v2i64_r = __msa_ldi_d(3); // CHECK: call <2 x i64> @llvm.mips.ldi.d( Index: cfe/trunk/lib/Sema/SemaChecking.cpp === --- cfe/trunk/lib/Sema/SemaChecking.cpp +++ cfe/trunk/lib/Sema/SemaChecking.cpp @@ -1640,7 +1640,7 @@ case Mips::BI__builtin_msa_sldi_d: i = 2; l = 0; u = 1; break; // Memory offsets and immediate loads. // These intrinsics take a signed 10 bit immediate. - case Mips::BI__builtin_msa_ldi_b: i = 0; l = -128; u = 127; break; + case Mips::BI__builtin_msa_ldi_b: i = 0; l = -128; u = 255; break; case Mips::BI__builtin_msa_ldi_h: case Mips::BI__builtin_msa_ldi_w: case Mips::BI__builtin_msa_ldi_d: i = 0; l = -512; u = 511; break; Index: cfe/trunk/test/CodeGen/builtins-mips-msa-error.c === --- cfe/trunk/test/CodeGen/builtins-mips-msa-error.c +++ cfe/trunk/test/CodeGen/builtins-mips-msa-error.c @@ -119,7 +119,7 @@ v4i32_r = __msa_ld_w(_a, 512); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, 512); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(512);
[PATCH] D31082: [mips][msa] Range adjustment for ldi_b builtin function operand
smaksimovic updated this revision to Diff 92439. smaksimovic added a comment. Added a new test to test/CodeGen/builtins-mips-msa.c, covering the new extended range for ldi.b. https://reviews.llvm.org/D31082 Files: lib/Sema/SemaChecking.cpp test/CodeGen/builtins-mips-msa-error.c test/CodeGen/builtins-mips-msa.c Index: test/CodeGen/builtins-mips-msa.c === --- test/CodeGen/builtins-mips-msa.c +++ test/CodeGen/builtins-mips-msa.c @@ -526,6 +526,8 @@ v2i64_r = __msa_ld_d(_a, 96); // CHECK: call <2 x i64> @llvm.mips.ld.d( v16i8_r = __msa_ldi_b(3); // CHECK: call <16 x i8> @llvm.mips.ldi.b( + v16i8_r = __msa_ldi_b(-128); // CHECK: call <16 x i8> @llvm.mips.ldi.b( + v16i8_r = __msa_ldi_b(255); // CHECK: call <16 x i8> @llvm.mips.ldi.b( v8i16_r = __msa_ldi_h(3); // CHECK: call <8 x i16> @llvm.mips.ldi.h( v4i32_r = __msa_ldi_w(3); // CHECK: call <4 x i32> @llvm.mips.ldi.w( v2i64_r = __msa_ldi_d(3); // CHECK: call <2 x i64> @llvm.mips.ldi.d( Index: test/CodeGen/builtins-mips-msa-error.c === --- test/CodeGen/builtins-mips-msa-error.c +++ test/CodeGen/builtins-mips-msa-error.c @@ -119,7 +119,7 @@ v4i32_r = __msa_ld_w(_a, 512); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, 512); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(512);// expected-error {{argument should be a value from -512 to 511}} + v16i8_r = __msa_ldi_b(256);// expected-error {{argument should be a value from -128 to 255}} v8i16_r = __msa_ldi_h(512);// expected-error {{argument should be a value from -512 to 511}} v4i32_r = __msa_ldi_w(512);// expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ldi_d(512);// expected-error {{argument should be a value from -512 to 511}} @@ -310,7 +310,7 @@ v4i32_r = __msa_ld_w(_a, -513); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, -513); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(-513); // expected-error {{argument should be a value from -512 to 511}} + v16i8_r = __msa_ldi_b(-129); // expected-error {{argument should be a value from -128 to 255}} v8i16_r = __msa_ldi_h(-513); // expected-error {{argument should be a value from -512 to 511}} v4i32_r = __msa_ldi_w(-513); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ldi_d(-513); // expected-error {{argument should be a value from -512 to 511}} Index: lib/Sema/SemaChecking.cpp === --- lib/Sema/SemaChecking.cpp +++ lib/Sema/SemaChecking.cpp @@ -1640,7 +1640,7 @@ case Mips::BI__builtin_msa_sldi_d: i = 2; l = 0; u = 1; break; // Memory offsets and immediate loads. // These intrinsics take a signed 10 bit immediate. - case Mips::BI__builtin_msa_ldi_b: i = 0; l = -128; u = 127; break; + case Mips::BI__builtin_msa_ldi_b: i = 0; l = -128; u = 255; break; case Mips::BI__builtin_msa_ldi_h: case Mips::BI__builtin_msa_ldi_w: case Mips::BI__builtin_msa_ldi_d: i = 0; l = -512; u = 511; break; Index: test/CodeGen/builtins-mips-msa.c === --- test/CodeGen/builtins-mips-msa.c +++ test/CodeGen/builtins-mips-msa.c @@ -526,6 +526,8 @@ v2i64_r = __msa_ld_d(_a, 96); // CHECK: call <2 x i64> @llvm.mips.ld.d( v16i8_r = __msa_ldi_b(3); // CHECK: call <16 x i8> @llvm.mips.ldi.b( + v16i8_r = __msa_ldi_b(-128); // CHECK: call <16 x i8> @llvm.mips.ldi.b( + v16i8_r = __msa_ldi_b(255); // CHECK: call <16 x i8> @llvm.mips.ldi.b( v8i16_r = __msa_ldi_h(3); // CHECK: call <8 x i16> @llvm.mips.ldi.h( v4i32_r = __msa_ldi_w(3); // CHECK: call <4 x i32> @llvm.mips.ldi.w( v2i64_r = __msa_ldi_d(3); // CHECK: call <2 x i64> @llvm.mips.ldi.d( Index: test/CodeGen/builtins-mips-msa-error.c === --- test/CodeGen/builtins-mips-msa-error.c +++ test/CodeGen/builtins-mips-msa-error.c @@ -119,7 +119,7 @@ v4i32_r = __msa_ld_w(_a, 512); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, 512); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(512);// expected-error {{argument should be a value from -512 to 511}} + v16i8_r = __msa_ldi_b(256);// expected-error {{argument should be a value from -128
[PATCH] D31082: [mips][msa] Range adjustment for ldi_b builtin function operand
sdardis accepted this revision. sdardis added a comment. This revision is now accepted and ready to land. Can you add a test to test/CodeGen/builtins-mips-msa.c covering the new extended range for ldi.b ? LGTM. https://reviews.llvm.org/D31082 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D31082: [mips][msa] Range adjustment for ldi_b builtin function operand
smaksimovic created this revision. Reasoning behind this change was allowing the function to accept all values from range [-128, 255] since all of them can be encoded in an 8bit wide value. This differs from the prior state where only range [-128, 127] was accepted, where values were assumed to be signed, whereas now the actual interpretation of the immediate is deferred to the consumer as required. https://reviews.llvm.org/D31082 Files: lib/Sema/SemaChecking.cpp test/CodeGen/builtins-mips-msa-error.c Index: test/CodeGen/builtins-mips-msa-error.c === --- test/CodeGen/builtins-mips-msa-error.c +++ test/CodeGen/builtins-mips-msa-error.c @@ -119,7 +119,7 @@ v4i32_r = __msa_ld_w(_a, 512); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, 512); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(512);// expected-error {{argument should be a value from -512 to 511}} + v16i8_r = __msa_ldi_b(256);// expected-error {{argument should be a value from -128 to 255}} v8i16_r = __msa_ldi_h(512);// expected-error {{argument should be a value from -512 to 511}} v4i32_r = __msa_ldi_w(512);// expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ldi_d(512);// expected-error {{argument should be a value from -512 to 511}} @@ -310,7 +310,7 @@ v4i32_r = __msa_ld_w(_a, -513); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, -513); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(-513); // expected-error {{argument should be a value from -512 to 511}} + v16i8_r = __msa_ldi_b(-129); // expected-error {{argument should be a value from -128 to 255}} v8i16_r = __msa_ldi_h(-513); // expected-error {{argument should be a value from -512 to 511}} v4i32_r = __msa_ldi_w(-513); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ldi_d(-513); // expected-error {{argument should be a value from -512 to 511}} Index: lib/Sema/SemaChecking.cpp === --- lib/Sema/SemaChecking.cpp +++ lib/Sema/SemaChecking.cpp @@ -1640,7 +1640,7 @@ case Mips::BI__builtin_msa_sldi_d: i = 2; l = 0; u = 1; break; // Memory offsets and immediate loads. // These intrinsics take a signed 10 bit immediate. - case Mips::BI__builtin_msa_ldi_b: i = 0; l = -128; u = 127; break; + case Mips::BI__builtin_msa_ldi_b: i = 0; l = -128; u = 255; break; case Mips::BI__builtin_msa_ldi_h: case Mips::BI__builtin_msa_ldi_w: case Mips::BI__builtin_msa_ldi_d: i = 0; l = -512; u = 511; break; Index: test/CodeGen/builtins-mips-msa-error.c === --- test/CodeGen/builtins-mips-msa-error.c +++ test/CodeGen/builtins-mips-msa-error.c @@ -119,7 +119,7 @@ v4i32_r = __msa_ld_w(_a, 512); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, 512); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(512);// expected-error {{argument should be a value from -512 to 511}} + v16i8_r = __msa_ldi_b(256);// expected-error {{argument should be a value from -128 to 255}} v8i16_r = __msa_ldi_h(512);// expected-error {{argument should be a value from -512 to 511}} v4i32_r = __msa_ldi_w(512);// expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ldi_d(512);// expected-error {{argument should be a value from -512 to 511}} @@ -310,7 +310,7 @@ v4i32_r = __msa_ld_w(_a, -513); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ld_d(_a, -513); // expected-error {{argument should be a value from -512 to 511}} - v16i8_r = __msa_ldi_b(-513); // expected-error {{argument should be a value from -512 to 511}} + v16i8_r = __msa_ldi_b(-129); // expected-error {{argument should be a value from -128 to 255}} v8i16_r = __msa_ldi_h(-513); // expected-error {{argument should be a value from -512 to 511}} v4i32_r = __msa_ldi_w(-513); // expected-error {{argument should be a value from -512 to 511}} v2i64_r = __msa_ldi_d(-513); // expected-error {{argument should be a value from -512 to 511}} Index: lib/Sema/SemaChecking.cpp