зеркало из https://github.com/microsoft/clang-1.git
fix incorrect lowering of __builtin_ia32_shufpd, rdar://6803924
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69428 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
bb6f78bf37
Коммит
f29c8ad917
|
@ -891,7 +891,8 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
|
||||||
}
|
}
|
||||||
case X86::BI__builtin_ia32_shufpd: {
|
case X86::BI__builtin_ia32_shufpd: {
|
||||||
unsigned i = cast<ConstantInt>(Ops[2])->getZExtValue();
|
unsigned i = cast<ConstantInt>(Ops[2])->getZExtValue();
|
||||||
return EmitShuffleVector(Ops[0], Ops[1], i & 1, (i & 2) + 2, "shufpd");
|
return EmitShuffleVector(Ops[0], Ops[1], i & 1,
|
||||||
|
((i & 2) >> 1)+2, "shufpd");
|
||||||
}
|
}
|
||||||
case X86::BI__builtin_ia32_punpcklbw128:
|
case X86::BI__builtin_ia32_punpcklbw128:
|
||||||
return EmitShuffleVector(Ops[0], Ops[1], 0, 16, 1, 17, 2, 18, 3, 19,
|
return EmitShuffleVector(Ops[0], Ops[1], 0, 16, 1, 17, 2, 18, 3, 19,
|
||||||
|
|
|
@ -8,8 +8,16 @@
|
||||||
// RUN: grep "st" %t1 &&
|
// RUN: grep "st" %t1 &&
|
||||||
// RUN: grep "st(1)" %t1
|
// RUN: grep "st(1)" %t1
|
||||||
|
|
||||||
void f() {
|
void test1() {
|
||||||
int d1, d2;
|
int d1, d2;
|
||||||
asm ("" : "=a" (d1), "=b" (d2) :
|
asm ("" : "=a" (d1), "=b" (d2) :
|
||||||
"c" (0), "d" (0), "S" (0), "D" (0), "t" (0), "u" (0));
|
"c" (0), "d" (0), "S" (0), "D" (0), "t" (0), "u" (0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// rdar://6803924
|
||||||
|
typedef double T __attribute__ ((__vector_size__ (16)));
|
||||||
|
T test2(T va) {
|
||||||
|
return __builtin_ia32_shufpd(va, va, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче