--  { dg-do run { target i?86-*-* x86_64-*-* } }
--  { dg-options "-O1 -msse" }
--  { dg-require-effective-target sse_runtime } 

with Ada.Unchecked_Conversion;

procedure SSE_Nolib is

   --  Base vector type definitions

   package SSE_Types is
      VECTOR_ALIGN : constant := 16;
      VECTOR_BYTES : constant := 16;

      type m128 is private;
   private
      type m128 is array (1 .. 4) of Float;
      for m128'Alignment use VECTOR_ALIGN;
      pragma Machine_Attribute (m128, "vector_type");
      pragma Machine_Attribute (m128, "may_alias");
   end SSE_Types;

   use SSE_Types;

   --  Core operations

   function mm_add_ss (A, B : m128) return m128;
   pragma Import (Intrinsic, mm_add_ss, "__builtin_ia32_addss");

   --  User views / conversions or overlays

   type Vf32_View is array (1 .. 4) of Float;
   for Vf32_View'Alignment use VECTOR_ALIGN;

   function To_m128 is new Ada.Unchecked_Conversion (Vf32_View, m128);
   function To_m128 is new Ada.Unchecked_Conversion (m128, Vf32_View);

   X, Y, Z : M128;

   Vz : Vf32_View;
   for Vz'Address use Z'Address;
begin
   X := To_m128 ((1.0, 1.0, 2.0, 2.0));
   Y := To_m128 ((2.0, 2.0, 1.0, 1.0));
   Z := mm_add_ss (X, Y);

   if Vz /= (3.0, 1.0, 2.0, 2.0) then
      raise Program_Error;
   end if;
end SSE_Nolib;
