@@ -333,3 +333,94 @@ entry:
333
333
%inc = add i64 %or , 1
334
334
ret i64 %inc
335
335
}
336
+
337
+ define i32 @or_sext1 (i32 %x ) {
338
+ ; CHECK-LABEL: or_sext1:
339
+ ; CHECK: # %bb.0:
340
+ ; CHECK-NEXT: xorl %eax, %eax
341
+ ; CHECK-NEXT: cmpl $43, %edi
342
+ ; CHECK-NEXT: setge %al
343
+ ; CHECK-NEXT: negl %eax
344
+ ; CHECK-NEXT: orl $1, %eax
345
+ ; CHECK-NEXT: retq
346
+ %cmp = icmp sgt i32 %x , 42
347
+ %sext = sext i1 %cmp to i32
348
+ %or = or i32 %sext , 1
349
+ ret i32 %or
350
+ }
351
+
352
+ define i32 @or_sext2 (i32 %x ) {
353
+ ; CHECK-LABEL: or_sext2:
354
+ ; CHECK: # %bb.0:
355
+ ; CHECK-NEXT: xorl %eax, %eax
356
+ ; CHECK-NEXT: cmpl $43, %edi
357
+ ; CHECK-NEXT: setge %al
358
+ ; CHECK-NEXT: negl %eax
359
+ ; CHECK-NEXT: orl $2, %eax
360
+ ; CHECK-NEXT: retq
361
+ %cmp = icmp sgt i32 %x , 42
362
+ %sext = sext i1 %cmp to i32
363
+ %or = or i32 %sext , 2
364
+ ret i32 %or
365
+ }
366
+
367
+ define i32 @or_sext3 (i32 %x ) {
368
+ ; CHECK-LABEL: or_sext3:
369
+ ; CHECK: # %bb.0:
370
+ ; CHECK-NEXT: xorl %eax, %eax
371
+ ; CHECK-NEXT: cmpl $43, %edi
372
+ ; CHECK-NEXT: setge %al
373
+ ; CHECK-NEXT: negl %eax
374
+ ; CHECK-NEXT: orl $3, %eax
375
+ ; CHECK-NEXT: retq
376
+ %cmp = icmp sgt i32 %x , 42
377
+ %sext = sext i1 %cmp to i32
378
+ %or = or i32 %sext , 3
379
+ ret i32 %or
380
+ }
381
+
382
+ define i32 @or_sext4 (i32 %x ) {
383
+ ; CHECK-LABEL: or_sext4:
384
+ ; CHECK: # %bb.0:
385
+ ; CHECK-NEXT: xorl %eax, %eax
386
+ ; CHECK-NEXT: cmpl $43, %edi
387
+ ; CHECK-NEXT: setge %al
388
+ ; CHECK-NEXT: negl %eax
389
+ ; CHECK-NEXT: orl $4, %eax
390
+ ; CHECK-NEXT: retq
391
+ %cmp = icmp sgt i32 %x , 42
392
+ %sext = sext i1 %cmp to i32
393
+ %or = or i32 %sext , 4
394
+ ret i32 %or
395
+ }
396
+
397
+ define i32 @or_sext7 (i32 %x ) {
398
+ ; CHECK-LABEL: or_sext7:
399
+ ; CHECK: # %bb.0:
400
+ ; CHECK-NEXT: xorl %eax, %eax
401
+ ; CHECK-NEXT: cmpl $43, %edi
402
+ ; CHECK-NEXT: setge %al
403
+ ; CHECK-NEXT: negl %eax
404
+ ; CHECK-NEXT: orl $7, %eax
405
+ ; CHECK-NEXT: retq
406
+ %cmp = icmp sgt i32 %x , 42
407
+ %sext = sext i1 %cmp to i32
408
+ %or = or i32 %sext , 7
409
+ ret i32 %or
410
+ }
411
+
412
+ define i32 @or_sext8 (i32 %x ) {
413
+ ; CHECK-LABEL: or_sext8:
414
+ ; CHECK: # %bb.0:
415
+ ; CHECK-NEXT: xorl %eax, %eax
416
+ ; CHECK-NEXT: cmpl $43, %edi
417
+ ; CHECK-NEXT: setge %al
418
+ ; CHECK-NEXT: negl %eax
419
+ ; CHECK-NEXT: orl $8, %eax
420
+ ; CHECK-NEXT: retq
421
+ %cmp = icmp sgt i32 %x , 42
422
+ %sext = sext i1 %cmp to i32
423
+ %or = or i32 %sext , 8
424
+ ret i32 %or
425
+ }
426
+
0 commit comments