brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 11955bc Raw
85 lines · plain
1; RUN: opt < %s -passes=instcombine -S | FileCheck %s2 3; Check all scalar / vector combinations for a pair of bitcasts.4 5define ppc_fp128 @bitcast_bitcast_s_s_s(i128 %a) {6  %bc1 = bitcast i128 %a to fp1287  %bc2 = bitcast fp128 %bc1 to ppc_fp1288  ret ppc_fp128 %bc29 10; CHECK-LABEL: @bitcast_bitcast_s_s_s(11; CHECK-NEXT:  %bc2 = bitcast i128 %a to ppc_fp12812; CHECK-NEXT:  ret ppc_fp128 %bc213}14 15define <2 x i32> @bitcast_bitcast_s_s_v(i64 %a) {16  %bc1 = bitcast i64 %a to double17  %bc2 = bitcast double %bc1 to <2 x i32>18  ret <2 x i32> %bc219 20; CHECK-LABEL: @bitcast_bitcast_s_s_v(21; CHECK-NEXT:  %bc2 = bitcast i64 %a to <2 x i32>22; CHECK-NEXT:  ret <2 x i32> %bc223}24 25define double @bitcast_bitcast_s_v_s(i64 %a) {26  %bc1 = bitcast i64 %a to <2 x i32>27  %bc2 = bitcast <2 x i32> %bc1 to double28  ret double %bc229 30; CHECK-LABEL: @bitcast_bitcast_s_v_s(31; CHECK-NEXT:  %bc2 = bitcast i64 %a to double32; CHECK-NEXT:  ret double %bc233}34 35define <2 x i32> @bitcast_bitcast_s_v_v(i64 %a) {36  %bc1 = bitcast i64 %a to <4 x i16>37  %bc2 = bitcast <4 x i16> %bc1 to <2 x i32>38  ret <2 x i32> %bc239 40; CHECK-LABEL: @bitcast_bitcast_s_v_v(41; CHECK-NEXT:  %bc2 = bitcast i64 %a to <2 x i32>42; CHECK-NEXT:  ret <2 x i32> %bc243}44 45define i64 @bitcast_bitcast_v_s_s(<2 x i32> %a) {46  %bc1 = bitcast <2 x i32> %a to double47  %bc2 = bitcast double %bc1 to i6448  ret i64 %bc249 50; CHECK-LABEL: @bitcast_bitcast_v_s_s(51; CHECK-NEXT:  %bc2 = bitcast <2 x i32> %a to i6452; CHECK-NEXT:  ret i64 %bc253}54 55define <4 x i16> @bitcast_bitcast_v_s_v(<2 x i32> %a) {56  %bc1 = bitcast <2 x i32> %a to double57  %bc2 = bitcast double %bc1 to <4 x i16>58  ret <4 x i16> %bc259 60; CHECK-LABEL: @bitcast_bitcast_v_s_v(61; CHECK-NEXT:  %bc2 = bitcast <2 x i32> %a to <4 x i16>62; CHECK-NEXT:  ret <4 x i16> %bc263}64 65define double @bitcast_bitcast_v_v_s(<2 x float> %a) {66  %bc1 = bitcast <2 x float> %a to <4 x i16>67  %bc2 = bitcast <4 x i16> %bc1 to double68  ret double %bc269 70; CHECK-LABEL: @bitcast_bitcast_v_v_s(71; CHECK-NEXT:  %bc2 = bitcast <2 x float> %a to double72; CHECK-NEXT:  ret double %bc273}74 75define <2 x i32> @bitcast_bitcast_v_v_v(<2 x float> %a) {76  %bc1 = bitcast <2 x float> %a to <4 x i16>77  %bc2 = bitcast <4 x i16> %bc1 to <2 x i32>78  ret <2 x i32> %bc279 80; CHECK-LABEL: @bitcast_bitcast_v_v_v(81; CHECK-NEXT:  %bc2 = bitcast <2 x float> %a to <2 x i32>82; CHECK-NEXT:  ret <2 x i32> %bc283}84 85