[llvm-commits] [llvm] r52353 - in /llvm/trunk: include/llvm/Intrinsics.td include/llvm/IntrinsicsX86.td test/CodeGen/X86/commute-intrinsic.ll utils/TableGen/CodeGenDAGPatterns.cpp utils/TableGen/CodeGenDAGPatterns.h utils/TableGen/CodeGenIntrinsics.h utils/TableGen/CodeGenTarget.cpp

Dan Gohman gohman at apple.com
Mon Jun 16 13:53:14 PDT 2008


On Jun 16, 2008, at 1:29 PM, Evan Cheng wrote:
> // Integer shift ops.
> @@ -553,24 +553,24 @@
> let TargetPrefix = "x86" in {  // All intrinsics start with  
> "llvm.x86.".
>   def int_x86_ssse3_phadd_w         :  
> GCCBuiltin<"__builtin_ia32_phaddw">,
>               Intrinsic<[llvm_v4i16_ty, llvm_v4i16_ty,
> -                         llvm_v4i16_ty], [IntrNoMem]>;
> +                         llvm_v4i16_ty], [IntrNoMem, Commutative]>;
>   def int_x86_ssse3_phadd_w_128     :  
> GCCBuiltin<"__builtin_ia32_phaddw128">,
>               Intrinsic<[llvm_v8i16_ty, llvm_v8i16_ty,
> -                         llvm_v8i16_ty], [IntrNoMem]>;
> +                         llvm_v8i16_ty], [IntrNoMem, Commutative]>;
>
>   def int_x86_ssse3_phadd_d         :  
> GCCBuiltin<"__builtin_ia32_phaddd">,
>               Intrinsic<[llvm_v2i32_ty, llvm_v2i32_ty,
> -                         llvm_v2i32_ty], [IntrNoMem]>;
> +                         llvm_v2i32_ty], [IntrNoMem, Commutative]>;
>   def int_x86_ssse3_phadd_d_128     :  
> GCCBuiltin<"__builtin_ia32_phaddd128">,
>               Intrinsic<[llvm_v4i32_ty, llvm_v4i32_ty,
> -                         llvm_v4i32_ty], [IntrNoMem]>;
> +                         llvm_v4i32_ty], [IntrNoMem, Commutative]>;
>
>   def int_x86_ssse3_phadd_sw        :  
> GCCBuiltin<"__builtin_ia32_phaddsw">,
>               Intrinsic<[llvm_v4i16_ty, llvm_v4i16_ty,
> -                         llvm_v4i16_ty], [IntrNoMem]>;
> +                         llvm_v4i16_ty], [IntrNoMem, Commutative]>;
>   def int_x86_ssse3_phadd_sw_128    :  
> GCCBuiltin<"__builtin_ia32_phaddsw128">,
>               Intrinsic<[llvm_v4i32_ty, llvm_v4i32_ty,
> -                         llvm_v4i32_ty], [IntrNoMem]>;
> +                         llvm_v4i32_ty], [IntrNoMem, Commutative]>;

Hi Evan,

Horizontal-add instructions are not commutative. It looks like
X86InstrSSE.td is mistaken about this too.

Dan




More information about the llvm-commits mailing list