Files
c3c/test/test_suite/vector/vector_shift.c3t
2025-02-02 02:47:51 +01:00

44 lines
1.1 KiB
Plaintext

// #target: macos-x64
module test;
fn int main()
{
int[<2>] z = { 1, 2 };
z <<= 2;
z << 2;
int x;
z <<= { x, 2 };
z << { 1, 2 };
z <<= { 1, 2 };
return 0;
}
/* #expect: test.ll
entry:
%z = alloca <2 x i32>, align 8
%x = alloca i32, align 4
store <2 x i32> <i32 1, i32 2>, ptr %z, align 8
%0 = load <2 x i32>, ptr %z, align 8
%shl = shl <2 x i32> %0,
%1 = freeze <2 x i32> %shl
store <2 x i32> %1, ptr %z, align 8
%2 = load <2 x i32>, ptr %z, align 8
%shl1 = shl <2 x i32> %2,
%3 = freeze <2 x i32> %shl1
store i32 0, ptr %x, align 4
%4 = load <2 x i32>, ptr %z, align 8
%5 = load i32, ptr %x, align 4
%6 = insertelement <2 x i32> undef, i32 %5, i64 0
%7 = insertelement <2 x i32> %6, i32 2, i64 1
%shl2 = shl <2 x i32> %4, %7
%8 = freeze <2 x i32> %shl2
store <2 x i32> %8, ptr %z, align 8
%9 = load <2 x i32>, ptr %z, align 8
%shl3 = shl <2 x i32> %9, <i32 1, i32 2>
%10 = freeze <2 x i32> %shl3
%11 = load <2 x i32>, ptr %z, align 8
%shl4 = shl <2 x i32> %11, <i32 1, i32 2>
%12 = freeze <2 x i32> %shl4
store <2 x i32> %12, ptr %z, align 8
ret i32 0