m_zuckerman created this revision. m_zuckerman added reviewers: AsafBadouh, igorb, delena, craig.topper. m_zuckerman added a subscriber: cfe-commits.
By SPEC, instruction vpermilps gets IMM bigger than 15. Below, you can see that IMM can be any number between 0 to 255 include. SELECT4(src, control){ CASE(control[1:0]) 0: tmp[31:0] := src[31:0] 1: tmp[31:0] := src[63:32] 2: tmp[31:0] := src[95:64] 3: tmp[31:0] := src[127:96] ESAC RETURN tmp[31:0] } tmp_dst[31:0] := SELECT4(a[127:0], imm8[1:0]) tmp_dst[63:32] := SELECT4(a[127:0], imm8[3:2]) tmp_dst[95:64] := SELECT4(a[127:0], imm8[5:4]) tmp_dst[127:96] := SELECT4(a[127:0], imm8[7:6]) FOR j := 0 to 3 i := j*32 IF k[j] dst[i+31:i] := tmp_dst[i+31:i] ELSE dst[i+31:i] := src[i+31:i] FI ENDFOR dst[MAX:128] := 0 http://reviews.llvm.org/D21836 Files: lib/Sema/SemaChecking.cpp Index: lib/Sema/SemaChecking.cpp =================================================================== --- lib/Sema/SemaChecking.cpp +++ lib/Sema/SemaChecking.cpp @@ -1389,7 +1389,6 @@ case X86::BI__builtin_ia32_extractf32x4_mask: case X86::BI__builtin_ia32_extracti32x4_mask: case X86::BI__builtin_ia32_vpermilpd_mask: - case X86::BI__builtin_ia32_vpermilps_mask: case X86::BI__builtin_ia32_extractf64x2_512_mask: case X86::BI__builtin_ia32_extracti64x2_512_mask: i = 1; l = 0; u = 3; @@ -1461,7 +1460,6 @@ case X86::BI__builtin_ia32_roundps256: case X86::BI__builtin_ia32_roundpd256: case X86::BI__builtin_ia32_vpermilpd256_mask: - case X86::BI__builtin_ia32_vpermilps256_mask: i = 1; l = 0; u = 15; break; case X86::BI__builtin_ia32_roundss: @@ -1566,6 +1564,8 @@ case X86::BI__builtin_ia32_fpclasspd512_mask: case X86::BI__builtin_ia32_fpclasssd_mask: case X86::BI__builtin_ia32_fpclassss_mask: + case X86::BI__builtin_ia32_vpermilps_mask: + case X86::BI__builtin_ia32_vpermilps256_mask: i = 1; l = 0; u = 255; break; case X86::BI__builtin_ia32_palignr:
Index: lib/Sema/SemaChecking.cpp =================================================================== --- lib/Sema/SemaChecking.cpp +++ lib/Sema/SemaChecking.cpp @@ -1389,7 +1389,6 @@ case X86::BI__builtin_ia32_extractf32x4_mask: case X86::BI__builtin_ia32_extracti32x4_mask: case X86::BI__builtin_ia32_vpermilpd_mask: - case X86::BI__builtin_ia32_vpermilps_mask: case X86::BI__builtin_ia32_extractf64x2_512_mask: case X86::BI__builtin_ia32_extracti64x2_512_mask: i = 1; l = 0; u = 3; @@ -1461,7 +1460,6 @@ case X86::BI__builtin_ia32_roundps256: case X86::BI__builtin_ia32_roundpd256: case X86::BI__builtin_ia32_vpermilpd256_mask: - case X86::BI__builtin_ia32_vpermilps256_mask: i = 1; l = 0; u = 15; break; case X86::BI__builtin_ia32_roundss: @@ -1566,6 +1564,8 @@ case X86::BI__builtin_ia32_fpclasspd512_mask: case X86::BI__builtin_ia32_fpclasssd_mask: case X86::BI__builtin_ia32_fpclassss_mask: + case X86::BI__builtin_ia32_vpermilps_mask: + case X86::BI__builtin_ia32_vpermilps256_mask: i = 1; l = 0; u = 255; break; case X86::BI__builtin_ia32_palignr:
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits